Brainf * ck、98 77
明らかにこれは勝つためのものではありませんが、brainfkソリューションがなければ競争はどうなりますか
++++[>++++<-]>>,<[->>++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-]++++++[->++++++++<]>.[-]>[-<<<+>>>]<<<<]
Brainfkは8ビット整数しか処理できず、ネガも処理できないため、ルールを完全に順守しているわけではありませんが、勝つためにそれを行ったことはありません。
インタープリターがサポートしている場合、これは実際には16ビット入力に対して機能します
私もアスキー値で出力しました
注釈付きのコードは次のとおりです。
++[>++++<-] preload 8 onto cell 1
>>,< input into cell 2
[- iterate over cell 1
>>++< put 2 in cell 3
[->-[>+>>]>[+[-<+>]>+>>]<<<<<] division algorithm: converts {n d} into {0 d_minus_n%d n%d n/d}
>[-]++++++[->++++++++<]> clears cell 4 and puts 48(ascii of 0) into cell 5
.[-] output n%2 and clear it (the bit)
>[-<<<+>>>] bring n/2 into cell 2 (to be used for division in next iteration)
<<<<] end iterate
より短いアルゴリズム(77):
+>,>-<[>>[->]++[-<+]-<-]++++++++[->++++++<]>+[->+>+>+>+>+>+>+>+<<<<<<<<]>[.>]
これは8ビット整数のみを処理できます。
このアルゴリズムは、実際には非常に短いバイナリカウンターを使用して動作します(1増分で>[->]++[-<+]-<-
ビットを配置します。問題は、すべてのビットを印刷することが難しいことです
その最後のアルゴリズムは、バイトを犠牲にして任意のビット数に適合するように適合させることができます。Nビット整数を処理できるようにするには、エンコードに53 + 3 * Nバイトが必要です。
例:
(1 bit) +>,>-<[>>[->]++[-<+]-<-]++++++++[->++++++<]>+[->+<]>[.>]
(2 bit) +>,>-<[>>[->]++[-<+]-<-]++++++++[->++++++<]>+[->+>+<<]>[.>]
(3 bit) +>,>-<[>>[->]++[-<+]-<-]++++++++[->++++++<]>+[->+>+>+<<<]>[.>]
etc