バイバイマンメモ
MAGAZINEの記事は時間がかかるので、こちらにまとめておきます。
ランキングのニックネームと、twitterのニックネーム(やid)を見比べて、「たぶんこの人だろなー」って感じで書いてありますので、もし別人ならごめんなさい。
『ワシもコード(もしくは記事)公開してんのに載ってないゾー!』という方は、ご一報いただけると大変助かります。
原稿が仕上がるまで、逐次更新予定です。
挑戦者の皆さんの解説記事
順番は目についた順で、適当です。
Yasu.Hara.さん
挑戦者の皆さんのコード
順番は目についた順で、適当です。
如之丈さん
f a d b c e=a+b+c+d+e:f(d+e)e(a+d)b c;main=mapM_ print$take 100$f 1 0 0 0 0;
舞葉さん
long long a=1,b[9],s;main(z){for(;99+z;a=(b[z&3]+=a)-a+b[--z&3])printf("%lld\n",s+=a);}
rotary-oさん
【Perl6】
# エンタープライズ版ideone(rakudo-2010.08) : 29B # (1 xx 4,*+*-*+*...7e10)>>.say # 1 xx 4は、ドキュメントに書かれておらず、現在のバージョンでは不可。 # ...7e10は、ドキュメントによると通り過ぎてしまうはずだが、このバージョンではOK。 # >>.sayは、ドキュメントによると出力順序が不定だが、このバージョンではOK。 # # ideone(rakudo-2014.07) : 33B # .say for(1 xx 4,*+*-*+*...*>6e10) # ドキュメントに書かれているとおり、>>.sayだと出力順序が不定になる。 # # 手元の環境(rakudo-2016.01) : 32B # (1,1,1,1,*+*-*+*...*>6e10)>>.say # 手元の環境だと、>>.sayでも大丈夫。 # >>.sayがだめだとすると、35B # .say for (1,1,1,1,*+*-*+*...*>6e10) # forの後のスペースが必要。 .say for(1 xx 4,*+*-*+*...*>6e10)
【Ruby】
# 40Bいろいろ # # 提出したもの # a=c=1,1,1,2;100.times{a<<p(c)+2*c=a[-4]} # # 初期値をずらした # c=0;a=[1]*4;100.times{a<<c+2*p(c=a[-4])} # # evalでループ # a=c=1,1,1,2;eval'a<<p(c)+2*c=a[-4];'*100 # c=0;a=[1]*4;eval'a<<c+2*p(c=a[-4]);'*100 # # evalだとこんなのもOK # eval'a,b,c,d=b,c,d,a ?d-c+b+p(a):1;'*104 eval'a,b,c,d=b,c,d,a ?d-c+b+p(a):1;'*104
hogeover30さん
【C++】
double a,*b=&a;main(){for(;*b<2e10;__builtin_printf("%.f\n",b[5]=*b+++2**b?:1));}
tailsさん
【Perl】
print$$_=${$_-5}+${$_-4}*2||1,$/for-99..0
use bigint;print 1e11**$_%(9x55-2e11)/1e11%(9x11),$/for 1..100
【Bash】
eval 'set $['{0..99}'<4|$5+$40/5] $@;echo $1;'
【Ruby】
x=2**40 # any big number you like [*1..100].each{|n|p x**n%(x**5-x*2-1)/x%(x-1)}
gmkさん
【Ruby】
(a=2,*[1]*99).map{a=2*a[3]+p(a[4]),*a}
https://twitter.com/g_m_k/status/700168650800500736
【COBOL】
IDENTIFICATION DIVISION.PROGRAM-ID.F.DATA DIVISION. WORKING-STORAGE SECTION. 1 X. 2 A PIC 9(11) OCCURS 110 VALUE 1. 2 I PIC 999. PROCEDURE DIVISION. M. MOVE 0 TO A(1)ADD 1 TO I DISPLAY A(1+I)(FUNCTION INTEGER(12 -FUNCTION LOG10(.1+A(1+I))):) COMPUTE A(5+I)=2*A(1+I)+A(I)IF I<100 GO TO M.
antimon2さん
【Perl6】
(1 xx 4,*+*-*+*...7e10)>>.say
【Ruby】
a=[1]*4;n=0;100.times{a<<n+2*p(n=a[-4])}
【Haskell】
s=1:1:1:1:[(0:s)!!n+s!!n*2|n<-[0..95]];main=mapM print s
wonderful_pandaさん
【Python】
a=[1]*4+[2] for i in a*20:a+=[a[0]+a[1]*2];print a.pop(0)
https://twitter.com/wonderful_panda/status/700154059630612482
ebicochinealさん
【Python】
a=b=c=d=1;exec'print a;a,b,c,d=b,c,d,d-c+b+a;'*100
【C#】
class C{static void Main(){for(long a=1,b=1,c=1,d=1,x;b%37>0;a=b,b=c,c=d,d+=x+a-b)System.Console.WriteLine(x=a);}}
Noiminさん
【Python】
a=4*[0]+[1];exec"print sum(a);a=a[1:4]+[a[4]+a[0],a[1]+a[0]];"*100
https://twitter.com/noimin_kousen/status/701373658166460416
【Prolog】
m(A,B,C,D,E,N):-N>0,F is A+B,format('~d~n',F+C+D+E),m(B,C,D,A+E,F,N-1). :-m(0,0,0,0,1,100).
mbspさん
【PHP】
<?php for(;$i<100;)echo${$i+5}=${$i++}+2*$$i?:1,"\n"; //実行君用のコード(49B) //<?for(;$i<100;)echo${$i+5}=${$i++}+2*$$i?:1,"\n";
【JavaScript(rhino, spidermonkey)】
for(a=i=[0];i++<100;)print(a[i]=a[i-4]*2+a[i-5]||1)
※対象外の言語(Whitespace)のコードも以下にあります。
http://ideone.com/Ccg7Ly
takeさん
【Python】
C=[2]+[1]*4;exec'print C[4];C=[C[4]+2*C[3]]+C;'*10
【Python3】
C=[2]+[1]*4;exec('print(C[4]);C=[C[4]+2*C[3]]+C;'*100)
【Go】
package main import "fmt";func main(){a:=[200]uint64{1,1,1,1,2} for i:=0;i<100;i++{fmt.Println(a[i]) a[i+5]=a[i]+2*a[i+1])}}
【Scala】
object Main extends App{var a=Seq(1L,1,1,1,2);for(i<-0 to 99){println(a(i));a=a:+a(i)+2*a(i+1)}}