Je suis un Scala noob. J'ai décidé d'écrire un solitaire spider solver comme un premier exercice pour apprendre le langage et la programmation fonctionnelle en général.Répétition d'une liste dans Scala
Je voudrais générer un jeu de cartes mélangées aléatoirement contenant 1, 2 ou 4 combinaisons. Voici ce que je suis venu avec:
val numberOfSuits = 1
(List("clubs", "diamonds", "hearts", "spades").take(numberOfSuits) * 4).take(4)
qui devrait revenir
List("clubs", "clubs", "clubs", "clubs")
List("clubs", "diamonds", "clubs", "diamonds")
List("clubs", "diamonds", "hearts", "spades")
en fonction de la valeur de numberOfSuits, sauf qu'il n'y a pas de liste d'opération « multiplier » que je peux trouver. Ai-je manqué ça? Y a-t-il un meilleur moyen de générer le jeu complet avant de le mélanger? Par ailleurs, j'ai l'intention d'utiliser une énumération pour les combinaisons, mais il était plus facile de taper ma question avec des chaînes. Je vais prendre la liste générée ci-dessus et en utilisant un pour la compréhension, itérer sur les costumes et une liste similaire de cartes "rangs" pour générer un pont complet.
La partie intéressante de ce projet sera la création des générations immuables du tableau (mise en page actuelle des cartes). Je demande au tableau courant une liste de coups légaux, retournés sous forme de tuples de (colonne source, colonne de destination, et position source). J'applique ensuite chacun au tableau courant d'une manière récursive en utilisant une sorte d'algorithme mini-max pour trouver le "meilleur" mouvement.Je veux aussi que l'objet carte soit immuable, donc les tableaux ("tableaux") devront savoir si une carte est face visible. – Ralph