スコア:37 43
+>-,->,+-><->-[>---+-+<[--->>+><,+>>>++<><<<+<[>--]]><><+-+>+<<+<><+++<[[<[---->-<-]>++>],>,]<,]<+-.
編集:今私のプログラムはいくつかの角括弧を許可します。それで賞品を獲得するつもりはありませんが、それは私がいくつかの重み付きRNGが私のために忙しい仕事をするようにするために得るものです。
これは、Cで作成したプログラムによって生成されました。
N
削除される文字ごとに、出力は次のとおりです。
N = 0 => 158
N = 1 => 158
N = 2 => 158
N = 3 => 187
N = 4 => 129
N = 5 => 100
N = 6 => 158
N = 7 => 13
N = 8 => 1
N = 9 => 211
N = 10 => 129
N = 11 => 1
N = 12 => 57
N = 13 => 255
N = 14 => Mismatched Braces
N = 15 => 59
N = 16 => 11
N = 17 => 11
N = 18 => 11
N = 19 => 117
N = 20 => 11
N = 21 => 117
N = 22 => 166
N = 23 => Mismatched Braces
N = 24 => 206
N = 25 => 206
N = 26 => 206
N = 27 => 147
N = 28 => 147
N = 29 => 158
N = 30 => 148
N = 31 => 188
N = 32 => 51
N = 33 => 17
N = 34 => 84
N = 35 => 84
N = 36 => 84
N = 37 => 158
N = 38 => 158
N = 39 => 94
N = 40 => 46
N = 41 => 94
N = 42 => 94
N = 43 => 94
N = 44 => 17
N = 45 => 196
N = 46 => Mismatched Braces
N = 47 => 149
N = 48 => No Termination
N = 49 => No Termination
N = 50 => Mismatched Braces
N = 51 => Mismatched Braces
N = 52 => 45
N = 53 => 77
N = 54 => 45
N = 55 => 77
N = 56 => 50
N = 57 => 209
N = 58 => 50
N = 59 => 251
N = 60 => 249
N = 61 => 99
N = 62 => 99
N = 63 => 117
N = 64 => 89
N = 65 => 207
N = 66 => 89
N = 67 => 115
N = 68 => 115
N = 69 => 115
N = 70 => 95
N = 71 => Mismatched Braces
N = 72 => Mismatched Braces
N = 73 => 104
N = 74 => Mismatched Braces
N = 75 => No Termination
N = 76 => No Termination
N = 77 => No Termination
N = 78 => No Termination
N = 79 => Left Overflow
N = 80 => 3
N = 81 => 2
N = 82 => No Termination
N = 83 => Mismatched Braces
N = 84 => No Termination
N = 85 => 133
N = 86 => 133
N = 87 => 0
N = 88 => Mismatched Braces
N = 89 => 158
N = 90 => 0
N = 91 => 4
N = 92 => Mismatched Braces
N = 93 => 0
N = 94 => 158
N = 95 => Mismatched Braces
N = 96 => 0
N = 97 => 157
N = 98 => 159
N = 99 => None
合計37の一意の出力があります(数値順)。
0, 1, 2, 3, 4, 11, 13, 17, 45, 46, 50, 51, 57, 59, 77, 84, 89, 94, 95, 99,
100, 104, 115, 117, 129, 133, 147, 148, 149, 157, 158, 159, 166, 187, 188,
196, 206, 207, 209, 211, 249, 251, 255
私はこのソリューションが最適ではないことを90% 100%確信していますが、それが非常に難しいことを証明しています。明確なことがいくつかあります。全く持っていない.
最後の文字までのシンボルは思わ移動するための方法であることを、そして角括弧は、( []
)ではなく役に立たないように見えます。ここで少し考えましたが、概要を説明します。
させるL
(チャレンジのバイトのコードの長さ100
)、およびn
サブプログラムのユニークな出力の数です。
の場合L=3
、形式の最適解がいくつかあります+-.
。ここでn=2
(この場合、出力は+.
との-.
それぞれ1と255です。)これにより、の最適な比率が得L = 3
られn/L = 66.67%
ます。この比率は少なくともforられないことに注意してくださいL<10
。
のためL=10
に、ソリューションはそれをブルートフォースするのに十分簡単です。最適なソリューションはn = 6
次のとおりです。
++>-->+<+. => 6
++>-->+<+. => 6
+++>->+<+. => 6
--->->+<+. => 6
++>---><+. => 6
+++>--><+. => 6
-->++>-<-. => 6
+++>+>-<-. => 6
--->+>-<-. => 6
-->+++><-. => 6
--->++><-. => 6
これにより、スコア比はになりn/L = 60%
ます。
のようにL->infinity
、潜在的に無限の可能な出力は255個しかないため、比率は0に近づく必要があることは明らかですL
。
ただし、比率は均一に減少しません。の解を構築することは不可能であるn=6, L=9
ため、の最適な比率はL=9
です5/9 = 55.56% < 60%
。
これはどのように、質問を頼むすばやくで、何が問題なのでしょうか?以下のためにL = 100
、とで10^9 checks/second
、それが最適解をブルートフォースするために長い宇宙の寿命よりも数桁を取るだろう。これについてエレガントな方法はありますか?それがダウンしていることを私は非常に多くの疑問37%
についてL = 100
。
比率は、実際には最大で増加しL=100
ます。他の回答を表示して確認します。
上記のあなたの評価を聞いてみたい。私ができる結局のところ、はひどく間違っていた。