2048 es un juego increíblemente divertido y adictivo en el que el objetivo es crear un mosaico con 2048 en él.
Aquí hay una breve descripción del juego:
Al presionar una tecla de flecha se deslizarán todos los bloques en el escenario en esa dirección. Por ejemplo, si x
representa un bloque, y presionó la flecha hacia arriba en este caso:
...x
.x..
..x.
xx..
Entonces el tablero se convertiría
xxxx
.x..
....
....
Además, los bloques están numerados, comenzando en 2
. Si dos de los mismos bloques numerados se mueven juntos, se fusionarán en el siguiente número. Por ejemplo, presionando "arriba" en este tablero:
.2..
..22
.2..
....
Crearía esto:
.422
....
....
....
Y luego, después de presionar "derecha", se volvería ..44
, y por lo tanto presionar nuevamente hacia la derecha crearía un bloque "8", y así sucesivamente.
Cada turno, se crea un nuevo bloque "2" en un cuadrado abierto al azar. (En realidad, no siempre es un "2", pero por simplicidad sigamos así). Si no quedan movimientos posibles (es decir, el tablero está lleno y no puedes fusionar nada), el juego se pierde, y si se crea un bloque 2048, ¡tú ganas!
¡Tu desafío es recrear este juego, golfizado!
Para casos extremos, como presionar "derecha" en este tablero:
.... .222 .... ....
debe fusionar las fichas más cercanas al borde de la tecla de flecha presionada. Por ejemplo, esto se convertiría
..24
, porque el segundo y tercer "2" s son los más cercanos al borde derecho.Si el jugador presiona un movimiento no válido (como "arriba" en un tablero como
2.2. / .... / .... / ....
), debe ignorar el movimiento.Los movimientos se pueden aceptar de cualquier manera, como hacer clic, teclas de flecha
ULRD
, etc.Todos los mosaicos deben tener la misma forma: un mosaico "1024" debe tener el mismo tamaño que un mosaico "2".
Los azulejos deben estar separados de alguna manera. Por ejemplo,
|1024| 2|1024|1024|
es un ejemplo válido de una fila (suponiendo que los mosaicos son cuadrados), mientras1024 210241024
que no lo es.Debes generar "ganas" si el jugador crea una ficha de 2048, o "pierdes" si no quedan movimientos válidos.
Este es el código de golf , ¡así que el código más corto en bytes ganará!
fuente
Respuestas:
APL (Dyalog APL) ,
153150167156 bytesSolicitudes de movimiento; 0 = Izquierda, 1 = Arriba 2 = Derecha, 3 = Abajo
Pruébalo en línea!
Sin golf, con espacios en blanco
Explicación
Las líneas en blanco indican una nueva línea, mientras que los bloques de líneas pertenecen a una sola línea.
fuente
GolfScript, 323 caracteres
Las teclas que tiene que usar son
wasd
pero puede cambiar la constante en el código a las teclas que desee. Ignora con gracia cualquier clave desconocida o movimiento ilegal. Lamentablemente, debe presionar enter después de cada tecla.Solución de 256 caracteres
Aquí la salida es logarítmica hexadecimal, es decir,
0
significa.
,1
para2
,2
para4
,3
para8
...B
para2048
. Como todos conocemos los hexadecimales y los poderes de dos, esto no debería ser una limitación en absoluto.Ejemplo de ejecución (primeros movimientos):
fuente
J -
240230216 CharEsto cuenta la nueva línea final, porque la necesitas para comenzar a ejecutar el juego en la consola. Juega escribiendo uno de
udlr
y luego presionando Enter. Los movimientos que no hacen nada al tablero se manejan correctamente, pero el programa se enojará con usted si le da una mala entrada.La versión legible y la explicación son un poco demasiado grandes para caber cómodamente en la publicación: puede encontrar una reseña en este enlace .
Uso:
fuente
Mathematica, 484 caracteres
Muy feo.
Controlado por las teclas de flecha.
Sin golf:
fuente
Delphi XE3 (Waaay para muchos {susurros} 2.979 bytes -> 4.560 bytes sin golf)
Me gusta llamar a esto "2048 code the novel".
Usé más bytes de los que me gustan pero funciona y fue divertido hacerlo.
Todavía voy a intentar hacerlo más corto más adelante.
Juego en progreso
Golfed
Sin golf
fuente
,
y.
en números!C (estándar C89), 881 bytes
Usa las teclas wasd para moverte. Compila en GCC y clang por defecto, a menos que esté configurado en el estándar C99 (supongo). Utiliza termios.h, trabajó en Linux y MacOS X. No estoy seguro acerca de Windows.
Roto en algunas líneas:
Las miradas:
Se puede mejorar con seguridad.
fuente
Java:
13461269Editar Entonces, aunque este concurso está terminado, a veces no puedo dejarlo ir cuando se pueden hacer mejoras. Esta versión cuenta con una función de plegado más delgada, más mala en el lugar, el desalojo de la mayoría
boolean
tipos, excepto donde sería más detallado sin ellos, y celdas ligeramente más pequeñas (4x4 en lugar de 5x5) para cortar algunos caracteres adicionales allí.Así que esta fue divertida. ¡Gracias por publicar! Ungolfed, esto era 2856 bytes, golf lo reduje a 1346 bytes. Siendo Java, no voy a ganar, pero quería mostrarme bien. Descubrir una función de acumulación "general" para manejar las uniones y movimientos de mosaico fue divertido; por supuesto, puede verificar mi "progreso" mirando los commits en mi repositorio de github para esta solución .
Golfizado:
Ungolfed: (Consulte mi repositorio de github para este proyecto para obtener una versión actualizada, que incluye una prueba basada en aserciones para nuevas funciones de plegado)
Usar el programa es simple. Para construir y ejecutar:
Presione
u
para plegar hacia arriba,r
plegar hacia la derecha,d
plegar hacia abajo,l
plegar hacia la izquierda. Se ignora cualquier otra tecla, se ignoran los movimientos no válidos (sin resultado). Siendo Java, presioneenter
después de cada tecla para vaciar el búfer de línea. Como lo requieren las reglas, si gana las salidas del programayou win
, si pierde las salidas del programayou lose
. Los nuevos2
se colocan aleatoriamente en las fichas abiertas. Las fusiones siguen las reglas establecidas. Las celdas son caracteres 4x4, con un borde que rodea cada celda. Por supuesto, déjame un comentario si he estropeado algo y me aseguraré de arreglarlo.Salida de ejemplo:
fuente
Lua,
622616615612592590575 bytesConsulta stdin para 1,2,3,4 correlacionando con izquierda, abajo, derecha, arriba (hecho para la entrada del teclado numérico); se bloquea si le das una entrada incorrecta.
Los cuadrados en blanco se imprimen como '0'.
Salida de ejemplo:
fuente
Clojure: 599
ejecutarlo en un REPL
golf
sin golf
fuente