ゆの in Makefile(GNU make)
なんか意外に簡単だった。何も面白くないけどどうぞ。
X | _ | X <: 来週も見てくださいね 来週も見てくださいね: @echo ひだまりスケッチ×365 $@
$ ls Makefile $ make ひだまりスケッチ×365 来週も見てくださいね $
ゆの in HQ9Y+
趣旨に反してるのばかり組んでるのは自分の能力不足ですはい。
HQ9Y+とは、プログラミング言語HQ9+の拡張版。
Hで"Hello world!"を出力、
Qで自身のソースコードを出力、
9で『99 Bottles of Beer』の歌詞を出力、
Yで"ひだまりスケッチ×365 来週も見てくださいね!"を出力、
+でアキュムレータに1を加える。また、未知の文字が命令として与えられた場合は、なにも出力せず、その文字に次の文字(文字コードが1大きい文字)の実行内容を割り当てる。
インタプリタのソース
#!/usr/bin/perl $_=join"",<>; %h=('H'=>"Hello world!",'Q'=>$_,'Y'=>"ひだまりスケッチ×365 来週も見てくださいね!"); $h{'h'}=$h{"h"};$h{'q'}=$h{'Q'}; for($i=99;$i>0;) { $b=$i==1?bottle:bottles; $c=$i==2?bottle:bottles; $h{'9'}="$h{'9'}$i $b of beer on the wall, $i $b of beer, You take on down, pass it around, ".--$i." $c of beer on the wall. "; } for(split"",$_) { print$h{$_}; $a=$_; if(!exists$h{$a}){$h{$a}=$h{++$_};} }
HQ9Y+プログラムのソース
X / _ / X <: 来週も見てくださいね!
実行
$ ls hq9y+.pl yuno.hq9y+ $ ./hq9y+.pl < yuno.hq9y+ ひだまりスケッチ×365 来週も見てくださいね! $
ゆの in C(IOCCC風に)
defineを多用して中心となるコードをシンプルに見せてみた。あとmemcpyとstrcatとprintfを組み合わせたかんじ。
内部文字コードUTF-8でコンパイラはgcc-4.3.1を推奨。その他の環境でどうなっても知りません。
#define main b=0;char a[40]="ポケッチ×365 ";int c(int d,int f){(memcpy(&a[0],&"スケ"[0 return f?(strcat(a,(int*)d)):(printf("ひだまり%s\n",a));}main #define return ],3));return #define X c((int)&b #define _ 1,0 int main(int argc,char* argv[]) { X / _ / X <: "来週も見てくださいね!" return 0; }
$ ls yuno.c $ make yuno cc yuno.c -o yuno yuno.c: In function ‘c’: yuno.c:7: warning: incompatible implicit declaration of built-in function ‘memcpy’ yuno.c:7: warning: incompatible implicit declaration of built-in function ‘strcat’ yuno.c:7: warning: passing argument 2 of ‘strcat’ from incompatible pointer type yuno.c:7: warning: incompatible implicit declaration of built-in function ‘printf’ yuno.c:7: warning: pointer/integer type mismatch in conditional expression yuno.c:7: warning: return makes integer from pointer without a cast $ ls yuno yuno.c $ ./yuno ひだまりスケッチ×365 来週も見てくださいね! $
疲れた。
かくせいいでん
今までずっと覚醒遺伝だと思ってたけど隔世遺伝なのですね。