솔리테어 꿈-승리 할 수있는 솔리테어 시작 손 만들기


13

나야 케이브 존슨

5 월 21 일입니다. 지구상에서 가장 훌륭한 회사 인 Aperture Science에서 일하고 있으며 내일 우리는 주력 윈도우 시스템 (또는 WindowS ) 버전 CavOS 3.0을 출시 합니다. 불행히도, 내일 아침, 우리의 주요 경쟁자는 WindowS 버전 3.0도 출시합니다 !

경쟁하는 WindowS 에 CavOS에없는 한 가지 기능인 클론 다이크 솔리테어 (Clondike Solitaire) 라는 CEO 인 Cave Johnson CEO가 내게 유출되었습니다 . 케이브 존슨 (Cave Johnson)은 이러한 누락이 판매를 크게 감소시킬 것으로 우려하고 있습니다. 이와 같이, Cave Johnson은 솔리테어 게임을 만들기 위해 프로그래밍 인턴들 사이의 경쟁을 고안했습니다. 출품작을 선택한 프로그래머는 흥미로운 GlaDOS AI 프로젝트에 참여할 수 있습니다.

케이브 존슨에는 몇 가지 요구 사항이 있습니다.

  • 소프트웨어가 내일 배송되어야한다는 사실 때문에 이미 인쇄 된 이미지 플로피의 예비 섹터에 맞도록 가장 짧은 프로그램이 선택 될 것 입니다.
  • 게임 플레이에 대해 걱정하지 마십시오. 고객에게 프린터가 있습니까? 내가 필요로하는 것은 여러분의 프로그램 이 덱에있는 카드의 순서와 7 개의 더미 각각의 내용을 보여주는 목록만드는 것입니다. 갑판은 정상에서 처리됩니다. 더미는 바닥에서 볼 수 있습니다. 하트, 다이아몬드, 클럽 및 스페이드는 약어 H, D, C, S를 사용하십시오. King, Queen, Jack 및 Ace에는 약어 K, Q, J, A를 사용하십시오. 각 카드는 공백으로 분리해야합니다. 첫 번째 줄에는 데크, 두 번째 줄은 첫 번째 및 가장 작은 파일의 카드, 세 번째 줄은 두 번째 파일의 카드 등을 표시해야합니다. 원하는 경우 10 대신 T를 사용하는 것이 좋습니다.

  • 우리는 레몬을 빨아 들이지 않는 레모네이드를 만들고 있습니다. 케이브 존슨은지는 것을 좋아하지 않으며 고객도 마찬가지입니다. 모든 게임은 승리 할 수 ​​있어야합니다

  • 게임은 무작위로해야합니다. 단일 게임을 인코딩하려고 시도하지 않습니다. 7,000 조의 클론 다이크 손이 있으며 그 중 약 90 %가 승리 할 수 ​​있습니다. 256 가지 이상의 다른 손을 만들 수있는 프로그램에 만족합니다. 언어에 임의의 숫자를 얻는 방법이없는 경우 (타이머 등에서) 언어에 적합한 방식으로 시드를 얻을 수 있다고 가정하십시오.

  • 우리의 고객은 합리적으로 영리합니다. 그들이 갑판을 통과하는 시간에 제한없이 Draw 3을 플레이하고 있음을 가정하십시오.

Aperture의 모든 사람 (및 모든 것)을 대신하여 모두에게 행운이 있기를 바랍니다. 우리는 당신을 믿고 있습니다.

" 캐롤라인?이 젠장을 어떻게 끄나요? "


캐릭터 외 : Windows의 규칙, Draw 3, Not-vegas solitaire를 가정합니다. 나는 모든 t를 교차하고 모든 i를 점으로 찍으려고 노력했지만 질문이 있는지 물어보십시오. 행운을 빕니다.

출력 예 :

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

'T'를 10으로 사용할 수 있으므로 모든 카드는 2 자입니까?
captncraig

우리 고객들은 그렇게하기에 충분히 영리하다고 생각합니다. 설명에 추가하겠습니다.
lochok

답변:


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
멋진 코드 골프 전형적인 규칙 굽힘 솔루션. 그리고 그것은 심지어 Brainfuck입니다-잘되었습니다!
schnaader
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.