Wiederholen eine Liste, in der Scala

Ich bin ein Scala noob. Ich haben beschlossen, schreiben ein spider solitaire solver als erste übung die Sprache zu lernen und die funktionale Programmierung im Allgemeinen.

Möchte ich generieren, die einem zufällig gemischten Kartenstapel mit 1, 2 oder 4 Anzüge. Hier ist, was ich kam mit:

val numberOfSuits = 1
(List("clubs", "diamonds", "hearts", "spades").take(numberOfSuits) * 4).take(4)

welche zurückgeben sollte

List("clubs", "clubs", "clubs", "clubs")
List("clubs", "diamonds", "clubs", "diamonds")
List("clubs", "diamonds", "hearts", "spades")

je nach dem Wert von numberOfSuits, außer es gibt keine Liste mit "multiplizieren" - operation, die ich finden kann. Hab ich es vermissen? Gibt es eine bessere Art und Weise zu erzeugen, das komplette deck vor dem mischen?

BTW, ich plan auf dem verwenden einer Enumeration für die Anzüge, aber es war leichter zu geben auf meine Frage mit den Saiten. Ich werde die Liste oben generierten und mit einem für das Verständnis, Durchlaufen die Anzüge und eine ähnliche Liste Karte "gehört" zu generieren, die ein komplettes deck.

  • Der interessante Teil dieses Projektes wird die Schaffung der unveränderlichen Generationen der tableau (aktuelle layout der Karten). Ich bitte das aktuelle tableau für eine Liste von regelgemäßen Zügen, kehrte als Tupel von (Spalte Quelle Spalte "Ziel", und die source-position). Ich habe dann gelten zu den jeweils aktuellen tableau in a recursive fashion mit einer Art mini-max-Algorithmus zum finden der "besten" zu bewegen. Ich will auch die Karte Objekt unveränderlich, so der tableaus ("tableaux?") haben, um zu wissen, ob eine Karte aufgedeckt ist.
InformationsquelleAutor Ralph | 2010-03-22
Schreibe einen Kommentar