Solitaire Dreams - การสร้างมือเริ่มเล่นไพ่คนเดียวที่ชนะได้


13

ฉันเอง. ถ้ำจอห์นสัน

มันคือ 21 พฤษภาคม คุณกำลังทำงานที่ Aperture Science บริษัท ที่ดีที่สุดในโลกและในวันพรุ่งนี้เราจะปล่อยเวอร์ชั่น 3.0 ของระบบหน้าต่างเรือธงของเรา (หรือWindowS ): CavOS น่าเสียดายที่พรุ่งนี้เช้าหัวหน้าคู่แข่งของเรากำลังปล่อยWindow 3.0 ของพวกเขาด้วยเช่นกัน!

Cave Johnson ซีอีโอรั่วไหลออกมาให้ฉันเห็นว่าWindowS ที่แข่งขันกันมีคุณสมบัติเดียวที่ CavOS ขาด: เกมของ Klondike Solitaire ฉัน Cave Johnson กังวลว่าการละเลยนี้จะนำไปสู่การลดยอดขายลงอย่างมาก ด้วยเหตุนี้ I, Cave Johnson ได้วางแผนการแข่งขันระหว่างการเขียนโปรแกรมฝึกงานเพื่อสร้างเกม Solitaire โปรแกรมเมอร์ที่ได้รับการคัดเลือกจะได้รับโอกาสเข้าร่วมโครงการ GlaDOS AI ที่น่าตื่นเต้น

ฉัน Cave Johnson มีข้อกำหนดบางประการ:

  • เนื่องจากความจริงที่ว่าซอฟต์แวร์จะต้องจัดส่งในวันพรุ่งนี้จะมีการเลือกโปรแกรมที่สั้นที่สุดเพื่อให้เหมาะกับภาคส่วนสำรองของฟลอปปี้ที่พิมพ์แล้วและถ่ายภาพ
  • ไม่ต้องกังวลกับการเล่นเกม ลูกค้าของเรามีเครื่องพิมพ์ใช่ไหม ทั้งหมดที่ฉันต้องการคือให้โปรแกรมของคุณสร้างรายการที่แสดง: ลำดับของไพ่ในสำรับและเนื้อหาของแต่ละกอง 7 เด็คจะถูกแจกจากด้านบน จะเห็นกองซ้อนจากด้านล่าง ใช้ตัวย่อ H, D, C, S สำหรับหัวใจ, เพชร, คลับและโพดำ ใช้ตัวย่อ K, Q, J, A สำหรับ King, Queen, Jack และ Ace แต่ละบัตรควรคั่นด้วยช่องว่าง บรรทัดแรกควรแสดงสำรับไพ่ที่สองของกองแรกและเล็กที่สุดไพ่ใบที่สามของกองที่สองเป็นต้น คุณสามารถใช้ T แทน 10 ได้หากต้องการ

  • เรากำลังทำน้ำมะนาวที่นี่ - ไม่ดูดมะนาว ฉัน Cave Johnson ไม่ต้องการสูญเสียและไม่ทำลูกค้าของเรา ทุกเกมจะต้องชนะ

  • เกมจะต้องสุ่ม ไม่มีความพยายามในการเข้ารหัสเกมเดียว มีมือ Klondike ที่มีความเป็นไปได้สูงถึง 700000000000000 ชิ้นและประมาณ 90% ของไพ่ทั้งหมดนั้นสามารถชนะได้ ฉันมีความสุขกับโปรแกรมที่สามารถสร้างมือ 256 หรือมากกว่านั้น หากภาษาของคุณขาดวิธีรับตัวเลขสุ่ม (จากตัวจับเวลาหรือสิ่งที่คล้ายกัน) ให้สมมติว่าคุณได้รับเมล็ดในลักษณะที่เหมาะสมกับภาษาของคุณ

  • ลูกค้าของเราฉลาดพอสมควร สมมติว่าเป็น winnability ที่พวกเขากำลังเล่น Draw 3 โดยไม่มีการ จำกัด เวลาผ่านเด็ค

ในนามของทุกคน (และทุกอย่าง) ที่รูรับแสงฉันขอให้คุณทุกคนโชคดี เราหวังพึ่งคุณ

" แคโรไลน์? ฉันจะปิดสิ่งแช่งนี้ได้อย่างไร? "


ไม่ใช้อักขระ: สมมติกฎของ Windows, วาด 3, เล่นไพ่คนเดียวไม่ใช่เวกัส ฉันพยายามที่จะข้ามทุกจุดและจุดทุกฉัน แต่ถามว่าคุณมีคำถามใด ๆ โชคดี.

ตัวอย่างผลลัพธ์:

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

เราสามารถใช้ 'T' สำหรับ 10 ได้ดังนั้นการ์ดทุกตัวมี 2 ตัว
captncraig

ฉันคิดว่าลูกค้าของเราฉลาดพอที่จะทำสิ่งนั้นได้ ฉันจะเพิ่มลงในคำอธิบาย
224 Lochok

คำตอบ:


10

Brainfuck - 1575 1365

ฉันใช้ข้อเสนอที่ไม่ซ้ำใครจำนวนมากอย่างไม่เหมาะสม สิ่งนี้จะสร้างเอาต์พุตที่แตกต่างกัน 256 รายการ มันยอมรับหนึ่งไบต์ของอินพุตเป็นเมล็ดสุ่ม

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

อาจมีการควบแน่นมากขึ้นแน่นอน แต่นั่นเป็นลักษณะของภาษา นี่คือรวดเร็วและสกปรกและใช้งานได้

ตัวอย่างเอาต์พุต (อินพุต = 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 สุดยอดวิธีแก้ปัญหาการดัดกฎทั่วไป และมันก็เป็น Brainfuck - ทำได้ดีมาก!
schnaader
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.