ロッドは、ジョージとティムの2人のプレイヤーの間でカードゲームをモデレートしています。現在、ティムはカードをシャッフルしています。ロッドは、ティムが不正行為をしようとしているのではないかと疑っています。
ティムはオーバーハンドシャッフルを行っています。彼はデッキの底からカードの山を切り取り、次に山の上部からデッキの上部にさまざまな部分を切り取り、そのプロセスを数回繰り返します。
ロッドはイーグルアイで、ティムが毎回何枚のカードをカットしているかを正確に見ることができますが、ティムがシャッフルするほど速くカードを計算して追跡することはできません。ここであなたがやって来ます:Rodは、詳細なシャッフル情報を取得し、シャッフルが公正か、弱いか、またはトリックかを判断するプログラムまたは関数を作成することを望んでいます。
- シャッフルした後、隣接するカードが25ペア未満(同じ順序で)残っている場合、シャッフルは公平であり、ゲームを続行できます。
- 隣接するカードの少なくとも25組(ただしすべてではない)が隣接している場合、シャッフルは弱くなり、ロッドはティムを頭の上で弾き、さらにシャッフルするように頼みます。
- すべてのカードが最後に同じ位置に残っている場合、ティムは明らかに不正行為であり、ロッドは大きなマスで彼を叩きます。
これはコードゴルフなので、最短のコードが勝ちます。
入力:
いくつかの行で、スペースで区切られた0〜52(両方とも排他的)の一連の数字を取得します。各行は、すべてのカードを積み重ねて開始および終了するシャッフルのラウンドを表します。
各行の最初の数字は、ティムがデッキの下部からカットしたカードの数であり、後続の各数字は、手からデッキの上部にドロップするカードの数です。ラインの最後の番号の後にカードが残っている場合は、ティムがそれらをデッキの一番上に置いたと想定する必要があります。
入力は有効であることが保証されています。少なくとも1行の数字があり、各行には少なくとも2つの数字が含まれています。各行の最初の数値は、同じ行の他のすべての数値の合計より小さくありません。末尾の改行はオプションです。入力に1つがあると仮定することも、入力がないと仮定することもできます。
出力:
プログラムは、シャッフルが公正な場合は「公平」、シャッフルが弱い場合は「弱」、ティムがすべてのカードを同じ順序に維持している場合は「トリック」を印刷または返す必要があります。末尾の改行はオプションです。
例:
このデッキには52枚のカードがあると想定されていますが、デモのために、10枚の小さなデッキを使用します。
入力:
5 3 1
4 2 2
上から見た初期デッキ:0 1 2 3 4 5 6 7 8 9
5
➜ 0 1 2 3 4
(5 6 7 8 9
手で)
3
➜ 5 6 7 0 1 2 3 4
(8 9
手で)
1
➜ 8 5 6 7 0 1 2 3 4
(9
手で)
行の末尾➜ 9 8 5 6 7 0 1 2 3 4
4
➜ 9 8 5 6 7 0
(1 2 3 4
手で)
2
➜ 1 2 9 8 5 6 7 0
(3 4
手で)
2
➜ 3 4 1 2 9 8 5 6 7 0
4対は隣接残ります。(3 4) (1 2) (5 6) (6 7)
テストケース:
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
出力: fair
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5
出力: weak
29 24
19 18
38 2 1 8 13 6 4
47 15 16 5 2 1 7
34 22 9 3
44 9 10 11 3 1 7
33 18 4 2 3 3
出力: fair
24 6 12 4
25 3 19
36 4 25 2
19 11 1 3
15 9 3
37 5 27
出力: weak
26 13
26 13
26 13
26 13
出力: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
出力: weak
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
出力: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
49 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
出力: fair
要件:
- 関数を作成する場合、標準入力から読み取るか、単一の文字列パラメーターとして入力を受け取ることができます。また、関数は出力を出力するか、返すことができます。
- プログラムは、自由に利用可能なソフトウェアを使用してLinuxで実行可能である必要があります。
- ソースコードはASCII文字のみを使用する必要があります。
- 標準的な抜け穴はありません。