I am a Scala noob. Ho deciso di scrivere un solitario solitario Spider come primo esercizio per imparare la lingua e la programmazione funzionale in generale.Ripetizione di una lista in Scala
Vorrei generare un mazzo di carte casualmente mescolato contenente 1, 2 o 4 semi. Ecco quello che mi si avvicinò con:
val numberOfSuits = 1
(List("clubs", "diamonds", "hearts", "spades").take(numberOfSuits) * 4).take(4)
che dovrebbe tornare
List("clubs", "clubs", "clubs", "clubs")
List("clubs", "diamonds", "clubs", "diamonds")
List("clubs", "diamonds", "hearts", "spades")
a seconda del valore di numberOfSuits, tranne che non esiste un elenco operazione "moltiplicare" che posso trovare. Mi è mancato? C'è un modo migliore per generare il mazzo completo prima di mischiare?
BTW, ho intenzione di utilizzare un'enumerazione per i semi, ma è stato più facile digitare la mia domanda con le stringhe. Prenderò la Lista generata sopra e useremo una comprensione, itererà sopra i semi e un simile elenco di "ranghi" di carte per generare un mazzo completo.
La parte interessante di questo progetto sarà la creazione delle generazioni immutabili del tableau (layout corrente delle carte). Chiedo al tableau corrente un elenco di mosse legali, restituito come tuple di (colonna di origine, colonna di destinazione e posizione di origine). Poi applico ciascuno al tableau corrente in modo ricorsivo usando una sorta di algoritmo mini-max per trovare la mossa "migliore".Voglio anche che l'oggetto della carta sia immutabile, quindi i tableau ("tableaux?") Dovranno sapere se una carta è scoperta. – Ralph