Solitaire Dreams - Creazione di una mano iniziale solitario vincibile


13

Sono io. Cave Johnson.

È il 21 maggio. Stai lavorando ad Aperture Science, la migliore azienda sulla Terra, e domani rilasceremo la versione 3.0 del nostro sistema di finestre (o WindowS ) di punta: CavOS. Sfortunatamente, domani mattina, il nostro principale concorrente rilascerà anche la versione 3.0 delle sue finestre !

È stato trapelato a me, Cave Johnson, CEO che WindowS in competizione ha una caratteristica che manca a CavOS: un gioco di Klondike Solitaire. Io, Cave Johnson, sono preoccupato che questa omissione porterà a vendite drasticamente inferiori. Come tale, io, Cave Johnson, ho ideato una competizione tra gli stagisti programmatori per creare un gioco di solitario. Il programmatore la cui voce viene scelta avrà l'opportunità di unirsi all'entusiasmante progetto AI di GlaDOS.

Io, Cave Johnson, ho alcuni requisiti:

  • A causa del fatto che il software deve essere spedito domani, verrà scelto il programma più breve in modo che possa adattarsi ai settori di riserva dei floppy già stampati e con immagini.
  • Non preoccuparti del gameplay. I nostri clienti hanno stampanti no? Tutto ciò di cui ho bisogno è che il tuo programma produca un elenco che mostri: L'ordine delle carte nel mazzo e il contenuto di ciascuna delle 7 pile. Il mazzo verrà distribuito dall'alto. Le pile saranno visibili dal basso. Usa le abbreviazioni H, D, C, S per Hearts, Diamonds, Clubs e Spades. Usa le abbreviazioni K, Q, J, A per King, Queen, Jack e Ace. Ogni carta deve essere separata da uno spazio. La prima linea dovrebbe mostrare il mazzo, la seconda la carta del primo e il mazzo più piccolo, la terza le carte del secondo mazzo e così via. Se lo desideri, puoi usare T invece di 10.

  • Qui facciamo limonata, non succhiamo limoni. Io, Cave Johnson, non mi piace perdere, e nemmeno i nostri clienti. Ogni partita deve essere vincibile

  • Il gioco deve essere randomizzato. Nessun tentativo di codificare un singolo gioco. Ci sono 7000 trilioni di mani Klondike possibili e circa il 90% di esse è vincibile. Sarei felice con un programma che può produrre 256 o più mani diverse. Se la tua lingua non ha un modo per ottenere numeri casuali (da un timer o simili), supponi che puoi ottenere un seme in un modo appropriato per la tua lingua.

  • I nostri clienti sono ragionevolmente intelligenti. Supponi per la vincita che stanno giocando a Draw 3, senza limiti di tempi nel mazzo

A nome di tutti (e di tutto) ad Aperture, auguro a tutti buona fortuna. Contiamo su di te.

" Caroline? Come posso chiudere questa dannata cosa? "


Fuori dal personaggio: assumi le regole di Windows, Disegna 3, Solitario non vegas. Ho tentato di incrociare ogni punto e ogni punto, ma chiedi se hai domande. In bocca al lupo.

Esempio di output:

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

Possiamo usare 'T' per 10, quindi ogni carta ha 2 caratteri?
captncraig,

Penso che i nostri clienti siano abbastanza intelligenti da farlo. Lo aggiungerò alla descrizione.
Lochok,

Risposte:


10

Brainfuck - 1575 1365

Sto abusando orribilmente del numero minimo di offerte uniche. Ciò produrrà esattamente 256 output distinti. Accetta un byte di input come seed casuale.

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

Potrebbe sicuramente essere più condensato, ma è un po 'la natura della lingua. Questo è veloce e sporco e funziona.

Esempio di output (input = 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 

È abbastanza intuitivo che tutti i deck di questo formato siano vincibili.


2
Meravigliosa soluzione di flessione della regola tipica del codegolf. Ed è anche Brainfuck - ben fatto!
Schnaader,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.