counterstringは、ソフトウェアのテストで使用される自己記述型テストデータのいくつかの並べ替えです。それが実際にジェームズ・バッハによって発明されたかどうかはわかりませんが、私はそこからそれを知っています。
アイデアは次のとおりです。テストデータには多くのアスタリスク(*
)が含まれています。アスタリスクの前の数字は、その時点でのテストデータの長さを示しています。テストデータ内でアスタリスクではない位置を知る必要がある場合は、最後のアスタリスクを見つけ、前の数字を見て、それに続く桁数を追加します。
シーケンスは次のように始まります。
2*4*6*8*11*14*17*20*23*
^
ご覧のとおり、マークされたアスタリスクは位置14にあります。
次のようにファイルが切り捨てられた場合
[...]2045*20
あなたは2047文字のどこかに(2045アスタリスクがプラスのための2の限界があることを導き出すことが可能2
とは0
)。
その形式の任意の長いテスト文字列(std :: outまたはfileなど)を出力する最短(これはcode-golf)プログラムを作成するのはあなたのタスクです。文字の長さは引数として指定されます。プログラムは、最大2 GBのテストデータ(入力値2147483647文字)をサポートするものとします。
2 GBファイルの「危険な」位置:
8*11*
98*102*
998*1003*
9998*10004*
99998*100005*
999995*1000003*
9999995*10000004*
99999995*100000005*
999999995*1000000006*
これは、995 * 999 *から995 * 1000 *または同様の決定を行う場合に@Leaky Nunの質問に答える必要があります。
入力値2147483647の2 GBファイルの終わりは次のとおりです。
2147483640*2147483
995*999*
、995*1000*
またはそのようなものを選択する必要がないことを証明できますか?