子供の頃に学んだ最初の魔法のカードのトリックは次のとおりです。
- 裏面のパターンが上下対称ではないカードを1デッキ持っています。
- すべてのカードを一方向に向けて整理します。
- 個人に、「カードを選んで、どんなカードでも覚えて、それを返してくれ」と頼みます。
- (間違った方向で)デッキに入れてください。
- カードがどこにあるかわからないという錯覚を与えながら、激しくシャッフルします。
- 彼らのカードを驚かせる。
このトリックは明らかに少し欠乏しており、今日では本質的に光沢がありますが、良い挑戦になります。入力を与えない場合、ランダムにシャッフルされたカードのデッキを出力し、ランダムに選択されたカードの1つを反転して出力するプログラムを作成します。ただし、入力が1枚のカードが逆になっているカードのデッキである場合は、逆のカードを(正しい順序で)出力する必要があります。
カードのデッキ
カードのデッキは次のように定義されます:
[2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS,
2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD,
2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH,
2C,3C,4C,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC]
カードは番号で定義され、次にスーツの最初の文字です。カードの裏は正反対で、スーツの最初の文字の後に数字が続きます。
描かれたカード
たとえば、逆にランダムに選択したカードがであった場合、4 of Clubs (4C)
(シャッフルせずに、明らかに)なります:
[2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS,
2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD,
2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH,
2C,3C,C4,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC]
シャッフル
次に、シャッフルした後:
[2H,2C,6S,4D,QH,6C,TD,8C,7H,5H,C4,3D,7S,7C,KC,QD,QC,JS,7D,6D,2S,5C,KD,3C,3S,2D,8H,KH,6H,AH,8S,JH,TS,AD,5D,9H,4H,JD,QS,4S,JC,3H,8D,TC,AS,TH,KS,AC,9C,9S,5S,9D]
これは、空の入力が与えられた場合の有効な出力です。
デッキ入力
ただし、逆に、プログラムが上記の出力を入力として受け取った場合は、出力する必要があります4C
。つまり、次の入力に対して:
[2H,2C,6S,4D,QH,6C,TD,8C,7H,5H,C4,3D,7S,7C,KC,QD,QC,JS,7D,6D,2S,5C,KD,3C,3S,2D,8H,KH,6H,AH,8S,JH,TS,AD,5D,9H,4H,JD,QS,4S,JC,3H,8D,TC,AS,TH,KS,AC,9C,9S,5S,9D]
反転したカードが見つかるまで繰り返し処理し、それを戻し、通常の状態に戻します。したがって、ここC4
でCが数値ではないことがわかり、それをとして返し4C
ます。これは正しいです。
ルール
- 外部ソースからデッキをロードすることはできません。
- 空の入力は、ランダムに1枚のカードが逆になった、ランダムにシャッフルされたデッキになります。
- 入力としてカードが1枚反転したカードのデッキでは、カードが反転します。
- 他の入力があると、爆発的なラマが未来のチューブを通ってセグウェイに乗ってしまいます。
- または他の何か、それについて。
- 選択したカードとシャッフルの順序は、両方とも一様にランダムでなければなりません。
- IEすべてのカードは、逆に選択される可能性が等しくあります。
- IEのすべてのカードの組み合わせは、同じ確率で出現します。
- あなたは使用すること
SHCD
やshcd
スーツのために、しかし、一貫して:- 大文字のスーツ(
SHCD
)を選択する場合も使用する必要がありますTJQKA
。 - 小文字のスーツ(
shcd
)を選択する場合も使用する必要がありますtjqka
。
- 大文字のスーツ(
- これはcode-golfで、勝者は最下位バイトです。