カメヲラボ

主にプログラミングとお勉強全般について書いてます

バイバイマンメモ

バイバイマン

MAGAZINEの記事は時間がかかるので、こちらにまとめておきます。
ランキングのニックネームと、twitterのニックネーム(やid)を見比べて、「たぶんこの人だろなー」って感じで書いてありますので、もし別人ならごめんなさい。
『ワシもコード(もしくは記事)公開してんのに載ってないゾー!』という方は、ご一報いただけると大変助かります。
原稿が仕上がるまで、逐次更新予定です。

挑戦者の皆さんのコード

順番は目についた順で、適当です。

如之丈さん
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;

https://twitter.com/gotoki_no_joe/status/700603494751825920

舞葉さん
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);}

https://gist.github.com/buyoh/795505808dd657893701

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)

https://ideone.com/Mnq31t

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

https://ideone.com/a37cTK

hogeover30さん

C++

double a,*b=&a;main(){for(;*b<2e10;__builtin_printf("%.f\n",b[5]=*b+++2**b?:1));}

https://twitter.com/hogeover30/status/700341209802350592

ロベールさん

Ruby

a=[1]*4;b=0;100.times{a<<b+p(b=a[-4])*2}

https://twitter.com/robert_cpp/status/700276136677249024

tailsさん

Perl

print$$_=${$_-5}+${$_-4}*2||1,$/for-99..0

http://ideone.com/edXHxQ

use bigint;print 1e11**$_%(9x55-2e11)/1e11%(9x11),$/for 1..100

http://ideone.com/zIfftP

Bash

eval 'set $['{0..99}'<4|$5+$40/5] $@;echo $1;'

http://ideone.com/SHted3

Ruby

x=2**40 # any big number you like
[*1..100].each{|n|p x**n%(x**5-x*2-1)/x%(x-1)}

http://ideone.com/39QK9W

yetterbiumさん

Haskell

f=1:1:1:1:[2*f!!n+(0:f)!!n|n<-[0..95]]
main=mapM print f

https://twitter.com/kunio_Yb/status/700196729660944384

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.

https://ideone.com/ok2Ad8

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

https://gist.github.com/antimon2/5712563dbdb8a90f2e91

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

http://ideone.com/4vHte0

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);}}

http://ideone.com/Js3CpV

stephen_doleさん

Perl

print$_[@_]=$_[-5]+2*$_[-4]||1,$/for 1..<>

http://ideone.com/1HjW22

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).

https://twitter.com/noimin_kousen/status/701374147755020288

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";

http://ideone.com/zj4Zyq


JavaScript(rhino, spidermonkey)】

for(a=i=[0];i++<100;)print(a[i]=a[i-4]*2+a[i-5]||1)

http://ideone.com/bDFovm

※対象外の言語(Whitespace)のコードも以下にあります。
http://ideone.com/Ccg7Ly

leaさん

Ruby

a=1;b=c=d=e=0;100.times{p a+b+c+d+e;a,b,c,d,e=d+e,a+d,b,e,c}

https://twitter.com/xiao_dawn_/status/702489878903193600

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)}}

https://gist.github.com/takoika/1c90994f735015de5a09