Structure de données Utilisée pour le Serpent et Échelle de jeu
Je suis tombé sur une question d'entrevue "Suggèrent des structures de données que vous utilisez pour la snake & échelle de jeu? "
Je voudrais utiliser un tableau 2D (comme nous le faisons dans les échecs ) de la conception de chaque bloc de jeu. Mais est-il possible de le concevoir en 1D tableau ? Beaucoup de gens ont suggéré cela, mais personne n'a expliqué comment le faire.
Vous devez vous connecter pour publier un commentaire.
Règles pour Serpent et Échelle sont:
j'. si(rouleau==6), les joueurs auront la chance de nouveau ,sinon les autres joueurs auront.
Nous sommes en train de seulement une table de hachage, qui contient la position actuelle comme la clé et suivant la position de la valeur. Je pense qu'une table de hachage permet d'accomplir toutes les exigence de l'Échelle et le Serpent,
Vakh est correct.
"Oui, c'est possible: chaque tableau 2D peut être représenté comme un tableau 1D."
Le tableau
peut contenir des échelles
4->14, 9->13, 20->38, 28->84, 40->59, 51->67, 63->81, 71->91
et les serpents
17->7, 54->34, 62->19, 64->60, 87->le 24, 93->73, 95->75, 99->78
si le rouge est à la position 2 (c'est à dire r=2) et les scores de 2 (c'est à dire s=2), puis de nouveau en position de rouge est
c'est à dire
@Jan Dvorak,
"les tableaux irréguliers ne sont pas tableau 2D"
Dans le la mise en œuvre à mon blog, j'ai utilisé une simple paire de listes liées à stocker les serpents et les échelles. Chaque élément de la liste a une paire de places, le "de place" et le "pour" carré; si vous avez atterri sur tout "" de place, votre pièce a été transféré à l' "à la place". J'ai trouvé un minimum de jeu longueur de 7 tours, et une moyenne de jeu de la longueur de 33 tours. Vous peut alternativement utiliser un tableau à une dimension, où l'indice de la matrice indique la place et la valeur de la matrice représente les "pour" carré, ce qui est la même que celle de l'indice, sauf au début d'un serpent ou d'une échelle.
Depuis mouvement des Serpents/serpents et Échelles est généralement dans une seule direction, plutôt que sur les multiples directions possibles aux Échecs, un 1D tableau ou une liste devrait certainement travailler.
Pour représenter les serpents et les échelles, vous pouvez définir le contenu de chaque élément de la liste à être un entier, en disant que le jeu, à quelle distance passez votre compteur d'avancer ou de reculer lorsque vous tombez sur elle. Par exemple, en Python:
Oui c'est possible: chaque tableau 2D peut être représenté comme un tableau 1D.
Représenter toutes les lignes du tableau 2D un après l'autre dans un tableau 1D. Ce faisant,
2d[i][j]
devient1d[i * rowLength + j]
. Sauf si vous n'avez pas d'autre choix que d'utiliser un tableau 1d, il n'est généralement pas une bonne chose à faire car il devient de moins en moins lisible et moins facile à utiliser.À L'Aide Du Tableau:
chaque élément de ce tableau contient un entier selon la règle suivante:
x
àx+l
, puisSNL[x]=l;
x
et vous laissant àx-s
, puisSNL[x]=-s;
, sinonSNL[x]=0;
Certainement, nous pouvons résoudre le problème en utilisant 1D tableau parce que le nombre marqué sur le conseil d'administration sont de 1 à 100. Nous pouvons initialiser deux tableaux 1D: serpent et échelle à la fois de taille 100.
Si le joueur à la tête de serpent(supposons au 56), alors il faut passer à la queue(supposons au 6). Ensuite serpent[56] = 6 (selon la règle) le joueur va passer à bloc qui est marqué que 6. De même pour l'échelle de tableau. J'ai couvert le cas dans lequel le joueur est à la tête de serpent et de naviguer à sa queue et il s'est trouvé une échelle et vice versa.
Le pseudo-code est:
Pourquoi personne ne suggère à l'aide de la Carte comme une structure de données. Nous allons tracer l'entier à lui-même si il n'y a pas de serpent ou une échelle. En cas de serpent nous allons tracer la tête de serpent à sa queue et de même pour l'échelle aussi. Nous pouvons utiliser la variable de type entier pour chaque joueur.