2048 est un jeu incroyablement amusant et addictif dans lequel le but est de créer une tuile avec 2048 dessus.
Voici une brève description du jeu:
Appuyez sur une touche fléchée pour faire glisser tous les blocs de la scène dans cette direction. Par exemple, si x
représente un bloc et que vous avez appuyé sur la flèche vers le haut dans ce cas:
...x
.x..
..x.
xx..
Alors le conseil deviendrait
xxxx
.x..
....
....
De plus, les blocs sont numérotés à partir de 2
. Si deux blocs identiques numérotés sont déplacés ensemble, ils seront fusionnés dans le prochain nombre. Par exemple, en appuyant sur "up" sur ce forum:
.2..
..22
.2..
....
Créerait ceci:
.422
....
....
....
Et ensuite, après avoir appuyé sur "right", il deviendrait ..44
, et donc appuyer à nouveau sur créerait un bloc "8", et ainsi de suite.
Chaque tour, un nouveau bloc "2" est créé sur une case ouverte aléatoire. (Ce n’est pas toujours un "2", mais pour des raisons de simplicité, gardons-le.) S'il ne reste plus aucun mouvement possible (le tableau est plein et vous ne pouvez rien fusionner), la partie est perdue et si un bloc 2048 est créé, vous gagnez!
Votre défi est de recréer ce jeu, joué au golf!
Pour les cas extrêmes, comme appuyer sur "droite" sur ce tableau:
.... .222 .... ....
vous devez fusionner les tuiles les plus proches du bord de la touche fléchée enfoncée. Par exemple, cela deviendrait
..24
, car les deuxième et troisième "2" sont les plus proches du bord droit.Si le joueur appuie sur un coup invalide (comme "haut" sur un tableau
2.2. / .... / .... / ....
, par exemple), vous devez ignorer le coup.Les déplacements peuvent être acceptés de quelque manière que ce soit, tels que cliquer, flèches
ULRD
, etc.Les carreaux doivent tous avoir la même forme - un carreau "1024" doit avoir la même taille qu'un carreau "2".
Les tuiles doivent être séparées d'une manière ou d'une autre. Par exemple,
|1024| 2|1024|1024|
est un exemple valide de ligne (en supposant que les carreaux sont des carrés), alors qu’il1024 210241024
ne l’est pas.Vous devez indiquer "vous gagnez" si le joueur crée une tuile 2048, ou "vous perdez" s'il ne reste plus aucun coup valide.
C'est du code-golf , donc le code le plus court en octets va gagner!
la source
Réponses:
APL (Dyalog APL) ,
153150167156 octetsInvite au déménagement; 0 = gauche, 1 = haut 2 = droite, 3 = bas
Essayez-le en ligne!
Ungolfed, avec des espaces
Explication
Les lignes vides indiquent une nouvelle ligne, tandis que les blocs de lignes appartiennent à une seule ligne
la source
GolfScript, 323 caractères
Les clés que vous devez utiliser sont,
wasd
mais vous pouvez modifier la constante du code pour obtenir les clés de votre choix. Il ignore gracieusement toute clé inconnue ou tout mouvement illégal. Malheureusement, vous devez appuyer sur Entrée après chaque touche.Solution de 256 caractères
Ici, la sortie est logarithmique hexadécimale, c’est-à-dire
0
, pour.
,1
pour2
,2
pour4
,3
pour8
...B
pour2048
. Puisque nous connaissons tous les hexadécimaux et les pouvoirs de deux, cela ne devrait pas être une limitation du tout.Exemple d'exécution (premiers coups):
la source
J -
240230216 charCela compte la fin de ligne, car vous en avez besoin pour lancer le jeu sur la console. Jouez en tapant l'un des
udlr
puis en appuyant sur Entrée. Les mouvements qui ne font rien au tableau sont gérés correctement, mais le programme se fâchera contre vous si vous lui donnez une mauvaise entrée.La version lisible et l'explication sont un peu trop volumineuses pour s'intégrer facilement dans le message: vous pouvez trouver un résumé sur ce lien .
Usage:
la source
Mathematica, 484 caractères
Très laid.
Contrôlé par les touches fléchées.
Ungolfed:
la source
Delphi XE3 (Waaay to many {whispers}} 2 979 octets -> non golfé 4,560 octets)
J'aime appeler cela "le code 2048 du roman" a
utilisé plus d'octets que je n'aime mais cela fonctionne et c'était amusant à faire.
Je vais encore essayer de le raccourcir plus tard.
Jeu en cours
Golfé
Ungolfed
la source
,
et.
en chiffres!C (norme C89), 881 octets
Utilise les touches WASD pour te déplacer. Compile dans GCC et clang par défaut, sauf si défini sur le standard C99 (je suppose). Utilise termios.h, fonctionne sous Linux et MacOS X. Pas sûr de Windows.
Cassé en quelques lignes:
Les regards:
Cela peut être amélioré à coup sûr.
la source
Java:
13461269Modifier Ainsi, bien que ce concours soit terminé, je ne peux parfois pas me laisser aller lorsque des améliorations peuvent être apportées. Cette version offre une fonction de pliage sur place plus mince, plus méchante, l'éviction de la plupart des
boolean
types, sauf dans les cas où elle serait plus verbeuse sans eux, et des cellules légèrement plus petites (4x4 au lieu de 5x5) pour y découper quelques caractères supplémentaires.C'était donc amusant. Merci d'avoir posté! Non, cela faisait 2856 octets, au golf je l'ai réduit à 1346 octets. Étant Java, je ne vais pas gagner, mais je voulais faire une bonne performance. Il était amusant de définir une fonction de remontée "générale" pour gérer les jointures et les déplacements de mosaïques. Vous pouvez bien sûr consulter mes "progrès" en consultant les validations de mon référentiel github pour connaître cette solution .
Golfé:
Ungolfed: (Consultez le référentiel github de ce projet pour une version mise à jour, incluant un test basé sur les assertions pour les nouvelles fonctions de pliage)
Utiliser le programme est simple. Pour construire et exécuter:
Appuyez
u
pour plier,r
plier à droite,d
plier,l
plier à gauche. Toute autre clé est ignorée, les déplacements invalides (aucun résultat) sont ignorés. Étant Java, appuyez surenter
après chaque touche pour vider le tampon de ligne. Conformément aux règles, si vous gagnez les sorties du programmeyou win
, si vous perdez les sorties du programmeyou lose
. Les nouveaux2
sont placés au hasard dans les carreaux ouverts. Les fusions suivent les règles énoncées. Les cellules sont des caractères 4x4, avec une bordure entourant chaque cellule. Bien sûr, laissez-moi un commentaire si je me suis trompé et que je serai certain de le réparer.Exemple de sortie:
la source
Lua,
622616615612592590575 octetsRequêtes stdin pour 1,2,3,4 corrélation avec gauche, bas, droite, haut (fait pour la saisie du pavé numérique); se bloque si vous donnez une mauvaise entrée.
Les carrés vierges sont imprimés en tant que '0'.
Exemple de sortie:
la source
Clojure: 599
l'exécuter dans un REPL
joué au golf
non-golfé
la source