Мрії про пасьянс - створення початкової руки пасьянсу


13

Це я. Печера Джонсон.

Це 21 травня. Ви працюєте в Aperture Science, найкращій компанії на Землі, і завтра ми випускаємо версію 3.0 нашої флагманської системи вікон (або WindowS ): CavOS. На жаль, завтра вранці наш головний конкурент також випускає версію 3.0 своїх Вікон !

Мені просочилося, Кейв Джонсон, генеральний директор, що у конкуруючих WindowS є одна особливість, якої бракує CavOS: Гра в пасьянс Клондайк. Я, Кейв Джонсон, стурбований тим, що цей пропуск призведе до різко знижених продажів. Як такий, я, Кейв Джонсон, розробив конкуренцію між стажистами з програмування, щоб створити гру Пасьянс. Програміст, чий запис обраний, отримає можливість приєднатись до захоплюючого проекту GlaDOS AI.

У мене, Кейв Джонсон, є кілька вимог:

  • Через те, що Програмне забезпечення повинно бути поставлене завтра, буде обрана найкоротша програма , яка може вміститись у запасних секторах вже надрукованих, зображених дискети.
  • Не турбуйтеся про геймплей. Наші клієнти мають принтери, чи не так? Все, що мені потрібно, - це щоб ваша програма склала список із зазначенням: Порядок карт на колоді та вміст кожної із 7 паль. Колода буде роздаватися зверху. Палі будуть видні знизу. Використовуйте абревіатури H, D, C, S для Hearts, Diamonds, Clubs and Spades. Використовуйте абревіатури K, Q, J, A для King, Queen, Jack та Ace. Кожна картка повинна бути розділена пробілом. Перший рядок повинен показувати колоду, другий - карту першого і найменшого ворсу, третій - картки другого ворсу і так далі. Ви можете використовувати T замість 10, якщо бажаєте.

  • Ми робимо тут лимонад - не висмоктуємо лимони. Я, Кейв Джонсон, не люблю втрачати, а також не робимо наших клієнтів. Кожна гра повинна бути виграшною

  • Гра повинна бути рандомізованою. Немає спроб кодування однієї гри. Є 7000 трильйонів можливих рук Klondike, і близько 90% з них є виграшними. Я був би задоволений програмою, яка може створити 256 або більше різних рук. Якщо вашій мові не вистачає способу отримання випадкових чисел (від таймера чи подібного), то припустіть, що ви можете отримати насіння таким чином, що відповідає вашій мові.

  • Наші клієнти досить розумні. Припустимо для виграшності те, що вони грають Draw 3, без обмежень у часі через колоду

Від імені всіх (і всього) в "Апертурі" бажаю всім удачі. Ми розраховуємо на вас.

" Каролайн? Як я закрию цю прокляту річ? "


Немає характеру: припустимо правила 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

Я думаю, що наші клієнти досить розумні, щоб піти на це. Я додам його до опису.
лочок

Відповіді:


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
Чудове кодогольф, типове рішення для згинання правил. І це навіть Brainfuck - молодець!
шнадер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.