第1回esolang陣取り大会 WriteUp - hakatashi/esolang-battle GitHub Wiki
Esolang Battler で自分が問いた言語の解説をするページです。
iz2
Codegolf界隈でよく見かける言語。中身がPythonなのでやるだけ。
iz2
はint(raw_input(), 2)
と等価。
q1/2b
これもCodegolf界隈でよく見かける言語。スタックベース。
最初q2b
でいけると思ったらbコマンドは文字列を引数に取ると各桁を文字コードとして扱うらしい。解せぬ。
なので一旦配列に変換する必要がある。
q 入力を受け取る
1/ 1文字ずつ区切って配列にする
2b 基数2で整数に変換
最後のスタックの状態が暗黙的に出力される。
)vg:48nS;a
M?(""*:?)0
_:?)@@2nM_
?)nAdu@@10
_NmO?)10nD
nF;aM?(#[w
RaC*;31bR#
:tSsP;aEvn
やるだけじゃない言語。
ドキュメントを読むとわかるが使える変数は環状に配置された8個の変数だけ(この8がSnowmanらしい)。この変数をぐるぐる回しながら目的の処理を書く必要がある。
プログラムには任意の場所に空白文字を差し込めるので、四角く見えるのは整形してあるためである。もう少しわかりやすくすると以下になる。
// 入力を受け取る
) vg
// 入力のそれぞれの文字から48('0')を引く
:
48 nS
; aM
// permavarに[]を保存(出力する文字列の各桁の配列として扱う)
? ( "" *
// 以下の処理を31回繰り返す
:
// retを初期化
? ) 0 _
// 入力のそれぞれの文字に以下を適用
:
// がんばる
? ) @@ 2 nM _
? ) nA du @@ 10 _ Nm O
? ) 10 nD nF
; aM
// permavarの先頭にretを付与
? ( # [ wR aC *
; 31 bR
// 配列のぞれぞれを文字に変換して出力
# :
tS sP
; aE
ibase = 2;
x = read();
print x;
Awkの書き方を調べてたら何故かbcの解き方が出てきたので解いた。最後の改行は必須。
$ 'dup' (a -- a a)
\
\-(!store!)--(store)-(store)-#
$ 'is_all_zero_list' (a -- b)
\
| /-------------\
|/ |
| /
\ /-~-<
\-{dup}nq< \-(!a!)-0-#
\
\-(!a!)-1-#
$ 'is_all_zero' (a -- b)
\ /-1c(!a!)(!b!)(a){is_all_zero}-#
| /-{dup}0{get_str_i}<
\-{dup}[]q--< \-(!a!)0-#
\-(!a!)1-#
$ 'get_str_i' (a b -- c)
\
\-c1c(!c!)(!c!)(!e!)(c)-#
$ 'set_str_i' (a b c -- d)
\
\-(!c!)c1c(!d!)(!e!)(c)p(d)p-#
$ 'input' (-- a)
\
| /--\
| / >-g0(n)(!n!)-\
| | #-/ |
| \ |
| \-----\ |
| \ |
\-[100](!n!)[]-ip(n)1s-/
$ 'o' (a -- a)
\
\-{dup}o[\n\]o-#
$ 'main'
\
\-{input}(!bin!)-\ /-(!ced!)o~(ced)-\
| | |
/-------(!ced!)n--/ \ /
| /--(dec)-------nq<
\--0(!j!)(bin){is_all_zero}---0q< \-#
/ \
| \-0(!rem!)--(rem)2m(bin)---(j)---{get_str_i}a(!rem!)(bin)(j)(rem)[10]d-\
| / |
| | |
| \ |
| >g(j)[001](!j!)a1(j)(!mer!)r[01](mer)(!nib!)---{i_rts_tes}--/
\-(!ced!):(mer)(ced)-----------------------/
サンプルコードが見ていて面白そうだったのでやってみた。列車が線路の上を走る(という設定の)スタックベース言語。左上の$
から出発して、線路上の命令を実行しながら進んでいって#
にたどり着くと終了。条件分岐が線路の分岐になっていたり、ループがその名の通りループになっていたりと可視化されるので楽しい。
やってることはC言語での参考実装をそっくりそのまま写した(何でこれで10進数になるのかいまだに理解していない。。。)。
あとデバッグでだけ使っていた関数を消し忘れたので要らない関数がコードに残ってしまった:ghost:
P d b i
10
Pythonで実装されているのでやるだけ。i
は標準入力からの値に置き換えられる。
b i
10
とするとi
の10進数での文字列が得られるのでd
で2進数に変換してP
で出力する。
FBq
Pythonで実装されていてますますややこしいのだが、あのpipとは違うらしい。q
は入力を取得する特別な変数で、FB
がそれを2進数として解釈している。やるだけでした。はい。
+ + + * ` + * , + + * * ' + + ` + * + + * + + + +* * '* + +* + ` + '*.
スタックベースの言語で、Rubyで実装されていて多倍長整数が使える。+
, *
, .
, ,
, `
, '
の前のスペースの数に応じて実行される命令が決まる。Disassembleすると
[[:push, 0],
[:push, 10],
[:dup],
[:*],
[:label, 1],
[:push, 1],
[:-],
[:char_in],
[:push, 7],
[:push, 7],
[:*],
[:-],
[:jump, 3],
[:dup],
[:push, 1],
[:label, 2],
[:push, 2],
[:*],
[:swap],
[:push, 1],
[:-],
[:dup],
[:rotate],
[:dup],
[:push, 1],
[:+],
[:*],
[:jump, 2],
[:+],
[:swap],
[:rotate],
[:+],
[:swap],
[:label, 3],
[:dup],
[:jump, 1],
[:+],
[:num_out]]
になる。i = 100, n = 0として1文字ずつ読みながら(入力 - 0x31)が0ならn = n + 2^(i--)みたいな感じ(実際には累乗を乗算のループで書く必要があった)。
ちなみに日本人が作った言語だそうで、スタックアンダーフローとかをやらかすとエラーメッセージが日本語で出てくる。
ɠO_48Ḅ
Pythonで実装されている言語狙いの一環(?)で解いたが、構文をよく理解しないまま通してしまった。ɠ
が標準入力から取得、O
が数値にキャスト、_
が減算、48
が0x30、Ḅ
が2進数を整数に変換。これらの並べ方を試行錯誤したらできた。
"0b" :> + :i print
Rubyで実装されているスタックベース言語。実装を読むと:i
が->(x){ Integer x }
だったので入力文字列の前に "0b" を付け加えてやればよさそうという考えに至り、終了。
(: y 0)(: w -1)(: x(*(#(l))10))(@(: x(#/ x 10))(: y(+ y(*(^ 2(: w(+ w 1)))(% x 10)))))y
REPLの入力行が(油:0)>
から始まるのが謎(yóu は 油 のピンインだろうか?)。Pythonで実装されている言語なので多倍長整数が使える。コメントを入れて書くと
(: y 0) ; y = 0
(: w -1) ; w = -1
(: x (* (# (l)) 10)) ; x = int(入力) * 10
(@ (: x (#/ x 10)) ; (x = x // 10) が0でない間ループ
(: y (+ y ; y +=
(* (^ 2 (: w (+ w 1))) (% x 10)) ; (2 ** (w = w + 1)) * (x % 10)
))
)
y ; 最後の値が出力される
(Pythonでは代入は式じゃないけど許して)
s2b
スタックベースの言語。CJamとほとんど同じらしい。が、CJamと違って、実行開始時点で標準入力が自動でスタックに積まれている(可能なら数とかに変換されている)。したがって開始時点ではスタックには、入力された100桁を10進数として解釈した整数が積まれているので、s
でこれを文字列に戻してやる必要がある。あとは2進数に変換するだけ。
s/^/0000a/
:l
s/1001a/1100a/g
s/1000a/1011a/g
s/0111a/1010a/g
s/0110a/1001a/g
s/0101a/1000a/g
s/a\(.\)/\1a/g
s/0\([01]\{4\}a\)/\1/
s/1\([01]\{4\}a\)/0001a\1/
/[^a]$/b l
s/^0+a//
s/0000a/0/g
s/0001a/1/g
s/0010a/2/g
s/0011a/3/g
s/0100a/4/g
s/0101a/5/g
s/0110a/6/g
s/0111a/7/g
s/1000a/8/g
s/1001a/9/g
いろいろググってたら2進表現を二進化十進表現 (binary-coded decimal, BCD) に変換するアルゴリズムを発見したので正規表現の置き換えで実装してみた。
2§¿
Pythonで実装されているやるだけのスタックベース言語。2
で2をスタックに積んで§
で入力をスタックに積んで¿
で2進数から整数に変換。終わり。
ところでesolang一覧にSeriouslyという言語があって、これはActuallyと同じリポジトリの違うブランチ「v1」にあるんだけど互換性はなさそう(submissionsをみたらActuallyを通した後に(自分を含め)みんな揃ってSeriouslyでfailedになっていたので笑った)。
^
0000a
{`1001a
1100a
1000a
1011a
0111a
1010a
0110a
1001a
0101a
1000a
a(.)
$1a
0([01]{4}a)
$1
1([01]{4}a)
0001a$1
a$
b
}+`a(.+b)
b$1
^0+b
0000b
0
0001b
1
0010b
2
0011b
3
0100b
4
0101b
5
0110b
6
0111b
7
1000b
8
1001b
9
正規表現でゴリゴリする言語だったのでsedで使った方法を使いまわし。
"+2*"~"0"@+"+"+!
Pythonで実装されているスタックベースの言語。
開始時点で標準入力の内容が文字列としてスタックに積まれている。例として入力を"1011"
として実行したとき、トークンごとにスタックの内容を右に示す(右側がtopmost)と
["1011"]
"+2*" ["1011", "+2*"]
~ ["1+2*0+2*1+2*1"] ←iterableをjoinする
"0" ["1+2*0+2*1+2*1", "0"]
@ ["0", "1+2*0+2*1+2*1"] ←swap
+ ["01+2*0+2*1+2*1"]
"+" ["01+2*0+2*1+2*1", "+"]
+ ["01+2*0+2*1+2*1+"]
その次の!
は文字列をShapeScriptとして実行する。最後にスタックのすべてが出力される。
?( v- #?)
v# #^v+!
8+ ^^+#
6(1-)
左から1列ごとに各行が同時に実行されていくスタックベース言語。実装がPythonなのでやはり多倍長整数を扱える。スタックベースなのだが、スタックが行ごとに別々になっている。^
とかv
ですぐ上やすぐ下の行のスタックのtopmostをコピーしてくることができる。
最初の5列は8を6回足して3行目のスタックに48(= 0x30)を得ている。1行目の?
で入力を1文字ずつ取り、入力がEOFになるまで8〜14列目がループする。最後に2行目のスタックにある答えを!
で出力する。
s^&0b` `f%d
(圧縮前のコード)
テキストを処理していく言語。実装はPython。まずs
は置換を行う。s/^/0b/
をして入力したテキストの前に0b
をつける。f%d
で"%d".format(...)
をするのだが、実装を読むとformat
の引数にはast.literal_eval(...)
をしたものが入るので、0b〜〜
が2進数と解釈されたのが10進数で出力される。最後の文字列が勝手に出力される。ということでs^&0b`f%d
で良さそうな雰囲気がしたのだが何故かうまく行かなかったので(?)、意味のない`
を追加したらうまくいった。
で、厄介なのは、この言語のプログラムはDEFLATE、LZMA、Base96→256変換のいずれかで圧縮されていないといけないということ。となると必然的にnon-printableな文字が現れるので、submitできないじゃんと思って放置していたが、6日ぐらい経ってたまたまTry it onlineのbashスクリプトを読んだら、submitされたコードをxxd -r < code
でhex dumpからbinaryに戻してから実行していることが判明したので、hex dumpをsubmitしたら通った。
0:73025e33c1062e877e85
I~b1~e0(b%10*e+c~ce*2~eb/10~b)co
Pythonで実装されている言語。比較的読みやすい気がする(?)。I
でaccumulatorが入力を10進数で解釈した整数にセットされて、~b
で変数b
に記憶する。同じようにe
には1が記憶される。(b % 10) * e + c
がc
に記憶され(初期化されていない変数を参照すると暗黙的に0になる)、e * 2
がe
に記憶され、b / 10
がb
に記憶される。この最後の(b
に記憶した)値が((
の前の)0に等しくなるまでループして、最後にc
が出力される。
0iS@q>dcnm2v
|LdM+*<
;pm<
Rubyで実装されている言語なので多倍長整数が扱える。スタックベース言語。左上から右に向かって実行していくが、^
v
<
>
で上下左右に方向転換ができる。|
はスタックからpopした値が0なら下に、それ以外なら上に方向転換する。やっている内容は省略。
set bin [gets stdin]
set dec 0
foreach char [split $bin ""] {set dec [expr {($dec << 1) + $char}]}
puts $dec
ネットのどっかにあった。
s := stdin nextLine.
val := s asNumber.
num := Number readFrom: (ReadStream on: s) radix: 2.
Transcript show: num printString; cr.
Smalltalkのメッセージ送信が気持ち悪いが、やるだけ(2行目は残骸で意味はない)。Smalltalkも多倍長。神。
s = fileread(num2str(getppid(), "/proc/%d/fd/0"));
v = 1:51;
v(1:51) = 0;
dec = 0;
for i = (1:length(s))
for k = 1:49
v(50-k) = 2 * v(50-k);
v(51-k) = v(51-k) + floor(v(50-k)/10);
v(50-k) = mod(v(50-k), 10);
endfor
if (s(i) == "1")
dec = 2 * dec + 1;
v(1) = v(1) + 1;
else
dec = 2 * dec;
endif
endfor
ret = "";
for k = 1:49
ret = strcat(ret, num2str(v(50-k)));
endfor
disp (ret)
ideoneの仕様(意味不明)で、inputが使えない。解決策がネットにあった。しかも、bin2decなんて関数まである!勝った。
と思ったら、クソな点として、帰ってくるのが、stringではなくsq_stringで型的になんか知らないけどNaNになってしまう。しかもsq_stringからの変換のやり方がググった限りでは見つからない。ただ、一文字ずつアクセスすると、charになるのでそれを使ってやる。 ただ多倍長でない。だから、結局bin2decが使えない(溢れる)。なので、"""satosさんアルゴリズム"""を使った。つよい。
その他つらい点として、ゼロインデックスではない。しかもエラーが出てもスルーしてどこでエラーが出ているのかよくわからない。%がない。数字を出力するとなぜかスペースが入る(文字列だと入らない)。 結論として二度とこの言語には触れたくない。
=a1=a1-a1=aA-a1=ba-a1=aA=bB-ab-bb=bB=ib***************0##ddaaz**+bb+bb+bb:ba-aa=aA=ba-a1-a1-a1+bb:bA-aa=aA-a1-A1-ii*******z**-aa=aA=ba+aa+aa+aa-b1-b1-b1-aB=Ao-B1-b1-b1-b1-b1-AB-ii*********************************************************************************************************************************************************************************************************************************************************************************************************************z**+bB+bB-a1:ba-aa=aA=ba+bb+bb+bb+ba+ba-a1-a1-a1-a1-a1-a1-a1-a1-AA+a1+a1+a1:bA-aa=aA-a1-A1-A1-a1-a1-a1-a1=ba-a1=BA-ii*****z**-aa=aA-a1-a1-a1=ba-a1=BA-aa=aA-a1-A1-ii********************************************************************************z**+bb+bb-a1:ba-aa=aA=ba+bb+ba+bb+ba+bb-a1-a1-a1:bA-aa=aA=ba+aa+aa+aa-b1-b1-b1-b1-aB-b1-aB-B1-b1-b1-b1=AB-aa=aA-a1+A1-ii**z**-aa=aA=ba+aa+aa+aa-b1-b1-b1-aB-b1-b1-b1-b1-b1+BB+BA-AA=aB-bb=bB+bb+bb+bb+bb:ba=aA-a1-a1-a1-A1-ii***********************z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************z**-a1-bb=bB-b1-b1-b1-b1-b1-b1-b1-b1=Ba-aa=aA=ba+aa+aa+aa-b1-b1-b1-aB=A1-B1-ii********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************z**+bb-a1:ba-aa=aA=ba+bb+ba+bb+bb+bb+ba+bb-a1-a1-a1-a1-a1:bA-aa=aA-a1-A1-ii***********************************************z**-aa=aA=ba+aa+aa+aa-b1-b1-b1-b1-aB-b1+aB-B1-b1-aB-a1-b1+AB=oA-ii
コメントをつけると
//0,router
=a1=a1-a1=aA-a1=ba-a1=aA=bB-ab-bb=bB=ib***************0##ddaa
Routeを決めるようにaの値を計算してbのアドレスを61にセットし飛ぶ
後半は制御用のデータ部分で 飛び値 rem 文字数字変換用オフセット 35回繰り返し元 35回繰り返しカウンタ 100回繰り返し元 100回繰り返しカウンタ ルート元 ルートカウンタ
a 場所
0->(*1)
1->(*2)
2->(*3)
3->(*4)
4->END
//61,load1(*1)
z**+bb+bb+bb:ba-aa=aA=ba-a1-a1-a1+bb:bA-aa=aA-a1-A1-ii*******
bを488にして(*1)をとらえて、aを初期化しaに100回カウンタ、bに122をセット100回カウンタが0出なければ122へとび、0ならばステップを増やす(*2)へ
//122,load2,data
z**-aa=aA=ba+aa+aa+aa-b1-b1-b1-aB=Ao-B1-b1-b1-b1-b1-AB-ii*********************************************************************************************************************************************************************************************************************************************************************************************************************
aを初期化しaを488にしてbをカウンタに。488-カウンタの位置に入力を0,1の数字に直して格納、Routeに戻る
//488,culcurate1(*2)
z**+bB+bB-a1:ba-aa=aA=ba+bb+bb+bb+ba+ba-a1-a1-a1-a1-a1-a1-a1-a1-AA+a1+a1+a1:bA-aa=aA-a1-A1-A1-a1-a1-a1-a1=ba-a1=BA-ii*****
bを732にして(*2)をとらえて、bを610にセットし、remを初期化35回カウンタが0でなければ610へ、0ならばステップを2進めて(出力処理へ行くように。)35回カウンタをリセットしてRouteへ
//610,culcurate2
z**-aa=aA-a1-a1-a1=ba-a1=BA-aa=aA-a1-A1-ii********************************************************************************
aを初期化し、100回カウンタを100に戻す、ステップを進めて(*3)へ行くようにしてRouteに戻る
//732,culcurate3(*3)(100繰り返し)
z**+bb+bb-a1:ba-aa=aA=ba+bb+ba+bb+ba+bb-a1-a1-a1:bA-aa=aA=ba+aa+aa+aa-b1-b1-b1-b1-aB-b1-aB-B1-b1-b1-b1=AB-aa=aA-a1+A1-ii**
(*3)をとらえて、aを初期化しbを854にして100回カウンタを見て、0でなければ(854)へとび、0なら終了なのでremを488-100-35カウンタに書き込み35回カウンタを1減らしてステップを(*2)へ戻してRouteに戻る
//854culcurate4
z**-aa=aA=ba+aa+aa+aa-b1-b1-b1-aB-b1-b1-b1-b1-b1+BB+BA-AA=aB-bb=bB+bb+bb+bb+bb:ba=aA-a1-a1-a1-A1-ii***********************
//976
z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************
z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************
z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************
z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************
z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************
z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************
z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************
z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************
z**-a1+bB:ba=aA-a1-a1-a1-A1-ii********************************************************************************************
z**-a1-bb=bB-b1-b1-b1-b1-b1-b1-b1-b1=Ba-aa=aA=ba+aa+aa+aa-b1-b1-b1-aB=A1-B1-ii********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
場合分けの鬼
//,write1(*4)
z**+bb-a1:ba-aa=aA=ba+bb+ba+bb+bb+bb+ba+bb-a1-a1-a1-a1-a1:bA-aa=aA-a1-A1-ii***********************************************
bをぶっ飛ばして終わりにして(*4)をとらえてbをいい感じの値にセットしてwrite2へとび、35回終わったらステップをi進めて(終わるように)Routeへとぶ
//,write2
z**-aa=aA=ba+aa+aa+aa-b1-b1-b1-b1-aB-b1+aB-B1-b1-aB-a1-b1+AB=oA-ii
(de f (x b s)
(if (= x 0) s (f (/ x 10) (* 2 b) (+ (* b (% x 10)) s))))
(de main ()
(let (n (read))
(prinl (f n 1 0))
)
)
(in NIL (main))
Lispですねぇという感じ。(多倍長がある)
using System;
public class Test
{
public static Main() : void
{
def s = System.Console.ReadLine();
def arr : array[int] = array(150);
for(mutable i = 55; i>=0;i--) {
arr[i] = 0;
}
for(mutable n = 0; n < 100; ++n) {
for(mutable i = 50; i>=0;i--) {
arr[i] *= 2;
arr[i+1] += arr[i] / 10;
arr[i] %= 10;
}
if(s[n]=='1'){
arr[0] += 1;
} else {
}
}
for(mutable i = 50; i>=0;i--) {
System.Console.Write("{0}",arr[i]);
}
}
}
esolangではない
vt
v >:\0\0pv >:66*\-:11p0g2*:9`11g1-0g+11g1-0p25*%11g0pv
>75*>:| >75*>:| >:66*\-0g"0"+,v
>25*:* >:| >~"0"-75*0g+75*0pv >75*>:|
^ - 1< > ^ > @
^ - 1 <
^ -1 $ < ^ -1 <
http://satos.hatenablog.jp/entry/2016/11/29/222026
どちらも同じ。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++[<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>,------------------------------------------------[<+>-]>-]<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>
http://satos.hatenablog.jp/entry/2016/11/29/222026
もっと短くなるはず。
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++[<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>>[<++>-]<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[-<+> >[-]<[->+<]]]]]]]]]]]>>,------------------------------------------------[<+>-]>-]<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>++++++++++++++++++++++++++++++++++++++++++++++++.>>
Brainf*ckの先頭に砂場を作るだけ。
NHSOE
NHENHTEH
NHTES
NHENHESHNHAET
NHAHAE
NHNNEINHSSES
NHSHEHNHENHESHNHENHTEHSSNHENHTEHSSNHTOEE
NHOEHNHOEHNHOEH
NHTEHNHTESNHTEHNHENHTESH
NHTHET
NHENHESHSNHENHESHTNHENHESHSNHENHESHT
NHTES
NHENHESHNHSET
NHENHESHSNHENHESHT
NHNNE
NHTEHNHSSENHENHTEHSSO
NHTES
NHENHESHNHAAET
NHTENHET
スタックベースでランダムアクセスもできるのだが、8命令しかないのでそれなりに面倒。あと多倍長がない。
以下は生成に使ったコード。
#coding: utf-8
from Tkinter import Tk
def push(x):
res = ""
while x>0:
res = ['H','T','A','O','I','N','S'][x%7] + res
x /= 7
return "NH"+res+"E"
div = 'E'
def jnz(addr):
return push(addr)+'T'
sub = 'S'
def tot(x): #to top(0 indexed)
return push(x) + 'H'
def dup(x): #duplicate(0 indexed)
return push(0)+push(x)+'S'+'H'
add = push(0)+tot(1)+sub+sub
def jmp(addr):
return push(1) + jnz(addr)
r = Tk()
r.clipboard_clear()
ctp = dup(0) + push(48) + add + 'O' + push(10) + 'O'
pop = dup(0) + sub + dup(0) + 'T'
k = 40
d = 100
s = (
push(k+5) + '\n' +
push(0) + tot(1) + '\n' +
push(1) + sub + '\n' +
dup(0) + jnz(2) + '\n' +
push(d) + '\n' +
push(k) + 'I' + push(48) + sub + '\n' +
tot(k+2) + dup(0) + add + add + push(10) + div + '\n' +
tot(3) + tot(3) + tot(3) + '\n' + # ... d,k,q,r -> r,d,k,q
tot(1) + push(1) + sub + tot(1) + dup(1) + '\n' +
jnz(7) + '\n' +
pop + pop + '\n' +
push(1) + sub + '\n' +
dup(0) + jnz(6) + '\n' +
pop + '\n' +
push(k) + '\n' +
tot(1) + push(48) + add + 'O' + '\n' +
push(1) + sub + '\n' +
dup(0) + jnz(16) + '\n' +
jmp(0)
)
r.clipboard_append(s)
http://satos.hatenablog.jp/entry/2016/12/14/235918
長すぎるのでリンクを貼っておきます。
vt
v >:$0$0pv >:66*$-:11p0g2*:9)11g1-0g+11g1-0p25*%11g0p v
>75*>:?^v >75*>:?^v >:66*$-0g"0"+ov
>25*:* >:?^v >i"0"-75*0g+75*0pv >75*>:?^v
^ - 1< > ^ > ;
^ - 1 <
^ -1 ~ < ^ -1 <
ほとんどBefungeなのでBefungeのを書きなおすだけ。(言語としての新規性がない)
'["'\'" ""]zip'++~{~}%2base
読めないのでだれか解読してください(ハッカソン当日に通したやつでもう記憶がない)
Scanner scan = new Scanner(System.in);
String s = scan.nextLine()
int[] a = new int[100];
for (int i = 0; i < 55; i++) {
a[i]=0;
}
for(int k=0;k<100;k++){
for (int i = 49; i >=0; i--) {
a[i] *= 2;
a[i+1] += a[i] / 10;
a[i] %= 10;
}
if(s[k]=='1')a[0]+=1;
}
for (int i = 49; i >=0; i--) {
int p = a[i];
print "$p";
}
esolangではない
procedure main()
ai := read()
d := 50
a := reverse(ai[1:d+1])
b := reverse(ai[d+1:d*2+1])
s := 0
every i := 1 to d do {
s *:= 2
s +:= a % 10
a /:= 10
}
every i := 1 to d do {
s *:= 2
s +:= b % 10
b /:= 10
}
write(s)
end
esolangではない(というか言語学的に普通に面白い言語らしい)
_100_";"""""'""""'="!@
) "
_ =
- _
) )
_ )
'=+-"'84_,'*
二次元スタック言語シリーズ。コード書き換えが可能らしいが特に使わずに通った(多倍長が使えたので)
```s``si`k``s`k``si`k``s`kki``s``si`k``si`k`ki`k````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki.0````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki.1````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki.2````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki.3````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki.4````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki.5````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki.6````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki.7````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki.8````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki.9i`k`ki````s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki`ki`d``s`k``s``s`k``s``s`ks``s`kk``s`ks``s`k`s`ks``s`k`s`kk``s`k`si``s`kki`k``s``s`ks``s`k`s`ks``s`k`s`kk``s``s`ks``s`kki`ki`k`ki``s``s`k``s``s`ks``s`kk``si`k``s`k`s``s`ks``s`kki``s``s`ks``s`k`s`ks``s`k`s`kk``s``s`ks``s`kki`ki`k`ki`ki``s``s`k``s``s`ks``s``s`ks``s`kki`k``s``s`ks``s`kk``s`k``s``s`ks``s`kk``si`k``s`k`s``s`ks``s`kki``s``s`ks``s`k`s`ks``s`k`s`kk``s``s`ks``s`kki`ki`k`ki`kii`ki`k`k`ki``s``s``s`k``s``si`k`k`ki`k``s`kki``s``s`k``s`k`s``si`k``s`k``si`k`ki``s``si`k``s``s`k``s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki``s`k``s`k`s``s`ks``s`kki``s``s`ks``s`k`s`ks``s`k`s`kk``s``s`ks``s`kki`ki`k`ki``s`k``si`k``s`kkii``s`k``si`k``s`kkii`k````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki`ki`ki``s`kki``s`k``si`k`kii`k``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki`ki``s`k``si`k`kii``s``s`k``s`k`s``si`k``s`k``si`k`ki``s``si`k``s``s`k``s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki``s`k``s`k`s``s`ks``s`kki``s``s`ks``s`k`s`ks``s`k`s`kk``s``s`ks``s`kki`ki`k`ki``s`k``si`k``s`kkii``s`k``si`k``s`kkii`k````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki`ki`ki``s`kki``s`k``si`k`kii`k``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki`ki`k``s``s`ks``s`kki``s``s`ks``s`kki`ki`k`````s`kc``s`k`s`k`k`ki``ss`k`kk`?0`@i`ki``s``s`ks``s`kki`ki``s`k``si`k``s`kkii``s`k``s``si`k``s``s`ks``s`k`s`k``s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki``s``s`ks``s`k`s`k``s``s`ks``s`kk``s`ks``s`k`s`ks``s`k`s`kk``s`k`si``s`kki`k``s``s`ks``s`k`s`ks``s`k`s`kk``s``s`ks``s`kki`ki`k`ki``s`k`s``s`k``s``s`ks``s`kk``s`k``s``s`ks``s`kk``si`k``s`k`s``s`ks``s`kki``s``s`ks``s`k`s`ks``s`k`s`kk``s``s`ks``s`kki`ki`k`ki`ki``s``s`k``s``s`ks``s``s`ks``s`kki`k``s``s`ks``s`kk``s`k``s``s`ks``s`kk``si`k``s`k`s``s`ks``s`kki``s``s`ks``s`k`s`ks``s`k`s`kk``s``s`ks``s`kki`ki`k`ki`kii`ki`k`k`ki``s``s``s`k``s``si`k`k`ki`k``s`kki``s``s`k``s`k`s``si`k``s`k``si`k`ki``s``si`k``s``s`k``s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki``s`k``s`k`s``s`ks``s`kki``s``s`ks``s`k`s`ks``s`k`s`kk``s``s`ks``s`kki`ki`k`ki``s`k``si`k``s`kkii``s`k``si`k``s`kkii`k````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki`ki`ki``s`kkii`k``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki`kii``s``s`k``s`k`s``si`k``s`k``si`k`ki``s``si`k``s``s`k``s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki``s`k``s`k`s``s`ks``s`kki``s``s`ks``s`k`s`ks``s`k`s`kk``s``s`ks``s`kki`ki`k`ki``s`k``si`k``s`kkii``s`k``si`k``s`kkii`k````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki`ki`ki``s`kkii`k``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki`ki`k``s``s`ks``s`kki``s``s`ks``s`kki`ki`k``s``s``s`k``s``si`k`k`ki`k``s`kki``s``s`k``s`k`s``si`k``s`k``si`k`ki``s``si`k``s``s`k``s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki``s`k``s`k`s``s`ks``s`kki``s``s`ks``s`k`s`ks``s`k`s`kk``s``s`ks``s`kki`ki`k`ki``s`k``si`k``s`kkii``s`k``si`k``s`kkii`k````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki`ki`ki``s`kkii`k``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki``s``s`ks``s`kki`ki`k`ki`k``s``s`ks``s`kki`ki``s`k``si`k`kii``s`kki`k``s`k``si`k``s`kkii``s`kki`k````s``s`ks``s`kk``s`ks``s`k`si``s`kki`k``s`kki`ki`kii``s``s`ks``s`kk``si`k`ki`k
i
関数型esolangの古参。(解説はまたブログに書きます)
http://satos.hatenablog.jp/entry/2016/12/14/235918
なんかソースコードを張ろうとすると消えてしまうのでブログを見てください。
0 x;
0 y;
_ q;
100'[
q~ ( 2 x~ * + x; q;
2 y~ * y;
x~ 1000000000000000 % tx;
x~ tx~ -+ 1000000000000000 / y~ + y;
tx~ x;
]
y~`
x~`
書きやすい言語(ドキュメントがもっと分かりやすければ)。スタックベースだけれども変数が使える。インタプリタがperlで書かれていて、整数が大きすぎると丸められてしまうので上の桁(y)と下の桁(X)に分けて計算している。慣れてくると直観的に書けるようになる。
高機能な言語のはずなのだがドキュメントが貧弱で入力が見当たらなかったために征服をまぬかれていた言語。結局実装を漁る羽目になった。 execというのがあって、いろいろ探索すると、inputというファイルに入力が入っていることが分かるのでそこからどうこうする。
IO.exec("echo 'obase=10;ibase=2;' > i.txt");
IO.exec("cat input >> i.txt");
IO.exec("echo '' >> i.txt");
print IO.exec("cat i.txt | bc");
bcはファイルの最後に改行がないと "(standard_in) 1: syntax error" を吐くので注意。(なんの言語の解説なのか)