ソリティアの夢-勝てるソリティアスターティングハンドを作成する


13

それは私です。ケーブジョンソン。

5月21日です。あなたは地球上で最高の会社であるAperture Scienceで働いており、明日、私たちの主力ウィンドウシステム(またはWindowS)のバージョン3.0 CavOSをリリースします。残念ながら、明日の朝、私たちの主要な競合他社はWindowSのバージョン3.0もリリースしてます!

競合するWindowSには、CavOSにはない機能が1つあるという、Cave JohnsonのCEOに漏らされました。KlondikeSolitaireのゲームです。私、ケイブ・ジョンソンは、この省略が大幅な売上減少につながることを懸念しています。そのため、私、ケイブジョンソンは、プログラミングインターン間の競争を考案して、ソリティアのゲームを作成しました。エントリーが選ばれたプログラマーは、刺激的なGlaDOS AIプロジェクトに参加する機会を得ます。

私、ケイブ・ジョンソンには、いくつかの要件があります。

  • ソフトウェアは明日出荷する必要があるため、すでに印刷され、イメージ化されたフロッピーのスペアセクターに収まるように、最短のプログラムが選択されます。
  • ゲームプレイについて心配する必要はありません。私たちの顧客はプリンターを持っていますか?私が必要なのは、あなたのプログラムが以下を示すリストを作成することだけです:デッキのカードの順序と、7つの山のそれぞれの内容。デッキは上から配られます。杭は下から見えるようになります。Hearts、Diamonds、Clubs、およびSpadesには、略語H、D、C、Sを使用します。King、Queen、Jack、およびAceには、略語K、Q、J、Aを使用します。各カードはスペースで区切る必要があります。最初の行はデッキを示し、2番目は最初の最小のパイルのカード、3番目は2番目のパイルのカードなどを示します。必要に応じて、10の代わりにTを使用できます。

  • ここではレモネードを作っています-レモンを吸いません。私、ケイブ・ジョンソンは負けたくないし、顧客も好きではない。すべてのゲームは勝つ必要があります

  • ゲームはランダム化する必要があります。単一のゲームをエンコードしようとしません。クロンダイクには7000兆のハンドがあり、それらの約90%が勝ちです。256以上の異なるハンドを作成できるプログラムに満足しています。言語に(タイマーなどから)乱数を取得する方法がない場合は、言語に適した方法でシードを取得できると想定してください。

  • お客様はかなり賢いです。勝ち勝ちのために、彼らはデッキ3で時間制限なしでDraw 3をプレイしていると仮定します

Apertureの皆さん(およびすべてのもの)を代表して、皆さんの幸運を祈ります。お待ちしています。

キャロライン?どうやったらこの事を止められるの?


性格外:Windowsのルール3、ドロー3、ベガス以外のソリティアを想定します。私はすべてのtを渡り、すべてのiにドットを付けようとしましたが、質問があるかどうか尋ねます。幸運を。

出力例:

5H AS 7C 8S QH ...    
AH    
JS 10S    
JC JH 7C    
9D AC 8D 7C     
.    
.    
.

すべてのカードが2文字になるように、「T」を10に使用できますか?
captncraig

私たちの顧客はそのために行くのに十分賢いと思います。説明に追加します。
ロチョック

回答:


10

Brainfuck - 1575 1365

最小数のユニークな取引を恐ろしく乱用しています。これにより、正確に256の異なる出力が生成されます。ランダムシードとして1バイトの入力を受け入れます。

,>++++[>++++++<-]<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>>>[<+<<+>>>-]>[-]<
<-[>+<-]<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>[-]>[-]>[<<<+>>>-]>[-]+[>+<
+++++]>+++++[>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>
>+>>+>>+>>+>>+[<<]>-]>>>>>>>>>+>>+>>+>>+>++++++[>++++>>++++>>++++>>+++
+>>+++>>+++>>+++>>+++>>++++>>++++>>++++>>++++>>+++>>+++>>+++>>+++<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<-]>++++>>++++>>++++>>++++>>>>>>>>>>+>>+>>+>>
+>>+>>+>>+>>+[<<]>>[>+<-<+>]>[<+>-]<<+++++++++++[>>+>>+>>+>>+>>+>>+>>+
>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+[<<]>>-]>>>>+>>++++
+>>++++++++++++++++>>>>+>>+++++>>++++++++++++++++>>>>+>>+++++>>+++++++
+++++++++>>>>+>>+++++>>++++++++++++++++>>>>+>>+++++>>++++++++++++++++>
>>>+>>+++++>>++++++++++++++++[<<]<<<<<<[>>>>>>+<<<<<<-]>>>>>>[>[<<+>>-
]<[>+<-]>>[<<+>>-]<-[>+<-]>]>.[-]>.[-]>[[<<<<+>>>>-]>]<<<<<[<<]<++++[>
++++++++<-]>.[-]<<<[>>>+<<<-]>>>[>[<<+>>-]<[>+<-]>>[<<+>>-]<-[>+<-]>]>
.[-]>.[-]>[[<<<<+>>>>-]>]<<++++[>++++++++<-]>.[<<<+>>>-]<<<<<[.[-]>.[-
]>.[<<+>>-]<<<<]>>[>+>++>++<<<-]++++++++++.>>+>+++<.>.<<<.>>----------
-----.+>.<<.>.+>.<<<.>>.+>.<<.>.+>.<<.>.+>.<<<.>>.>.<<.>++++++++++.>+.
<<.>---------------.+>.<<.>.+>.<<<.>>.+>.<<.>.+>.<<.>.+>.<<.>.+>.<<.>+
++++++++.>++++.<<<.>>---------------.+>.<<.>.+>.<<.>.+>.<<.>.+>.<<.>.+
>.<<.>.+>.<<<.>>+++++++++.>+++++++++++.<<.>---------------.+>.<<.>.+>.
<<.>.+>.<<.>.+>.<<.>.+>.<<.>.+>.<<.

間違いなくもっと凝縮できますが、それはちょっと言語の性質です。これは迅速で汚れており、機能します。

出力例(入力= 98):

8H 9S KS KH KD KC QS QH QD QC JS JH JD JC TS TH TD TC 9H 9D 9C 8S 8D 8C 
AC
2C 3C
4C 5C 6C
7C AD 2D 3D
4D 5D 6D 7D AH
2H 3H 4H 5H 6H 7H
AS 2S 3S 4S 5S 6S 7S 

この形式のすべてのデッキが勝つことはかなり直感的です。


2
素晴らしいcodegolfの典型的なルール曲げソリューション。そして、それはブレインファックです-よくやった!
シュナーダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.