2048 é um jogo incrivelmente divertido e viciante, no qual o objetivo é criar um bloco com 2048.
Aqui está uma breve descrição do jogo:
Pressionar uma tecla de seta deslizará todos os blocos no palco nessa direção. Por exemplo, se x
representa um bloco, e você pressionou a seta para cima neste caso:
...x
.x..
..x.
xx..
Então o conselho se tornaria
xxxx
.x..
....
....
Além disso, os blocos são numerados, começando em 2
. Se dois dos mesmos blocos numerados forem movidos juntos, eles serão mesclados no próximo número. Por exemplo, pressionando "para cima" neste quadro:
.2..
..22
.2..
....
Criaria isso:
.422
....
....
....
E, depois de pressionar "direito", ele se tornaria ..44
e, portanto, pressionar direito novamente criaria um bloco "8" e assim por diante.
A cada turno, um novo bloco "2" é criado em um quadrado aberto aleatório. (Na verdade, nem sempre é um "2", mas, por simplicidade, vamos mantê-lo assim.) Se não houver movimentos possíveis restantes (por exemplo, o tabuleiro está cheio e você não pode mesclar nada), o jogo está perdido e se um bloco 2048 é criado, você ganha!
Seu desafio é recriar este jogo, jogou golfe!
Para casos extremos, como pressionar "direita" nesta placa:
.... .222 .... ....
você deve mesclar os blocos mais próximos da borda da tecla de seta pressionada. Por exemplo, isso se tornaria
..24
, porque o segundo e o terceiro "2" s são os mais próximos da borda direita.Se o jogador pressionar uma jogada inválida (como "subir" em um tabuleiro como
2.2. / .... / .... / ....
), você deve ignorar a jogada.Os movimentos podem ser aceitos de qualquer forma, como clicar, teclas de seta
ULRD
etc.Os blocos devem ter a mesma forma - um bloco "1024" deve ter o mesmo tamanho que um bloco "2".
Os ladrilhos devem ser separados de alguma maneira. Por exemplo,
|1024| 2|1024|1024|
é um exemplo válido de uma linha (assumindo que os blocos são quadrados), enquanto1024 210241024
não é.Você deve produzir "você ganha" se o jogador criar um bloco 2048 ou "você perde" se não houver movimentos válidos restantes.
Isso é código-golfe , então o código mais curto em bytes vencerá!
fonte
Respostas:
APL (Dyalog APL) ,
153150167156 bytesSolicita mudança; 0 = Esquerda, 1 = Para cima 2 = Para a direita, 3 = Para baixo
Experimente online!
Ungolfed, com espaço em branco
Explicação
Linhas em branco indicam uma nova linha, enquanto blocos de linhas pertencem a uma única linha
fonte
GolfScript, 323 caracteres
As chaves que você precisa usar são,
wasd
mas você pode alterar a constante no código para as chaves que desejar. Ignora graciosamente qualquer chave desconhecida ou movimento ilegal. Infelizmente você precisa pressionar enter após cada tecla.Solução de 256 caracteres
Aqui a saída é logarítmica hexadecimal, ou seja,
0
representa.
,1
for2
,2
for4
,3
for8
...B
for2048
. Como todos sabemos hexadecimais e os poderes de dois, isso não deve ser uma limitação.Exemplo de execução (primeiros movimentos):
fonte
J -
240230216 charIsso conta a nova linha à direita, porque você precisa para começar a rodar o jogo no console. Para jogar, digite um de
udlr
e pressione Enter. Movimentos que não fazem nada para o quadro são manipulados adequadamente, mas o programa fica bravo com você se você der uma entrada ruim.A versão legível e a explicação são um pouco grandes demais para caber confortavelmente no post: você pode encontrar um artigo neste link .
Uso:
fonte
Mathematica, 484 caracteres
Muito feio.
Controlado por teclas de seta.
Ungolfed:
fonte
Delphi XE3 (Waaay para muitos {sussurros} 2.979 bytes -> 4.560 bytes não utilizados)
Eu gosto de chamar esse "código 2048 de romance".
Usava mais bytes do que eu gostaria, mas funciona e foi divertido de fazer.
Ainda vou tentar diminuí-lo mais tarde.
Jogo em progresso
Golfe
Ungolfed
fonte
,
e.
em números!C (padrão C89), 881 bytes
Use teclas wasd para mover. Compila no GCC e clang por padrão, a menos que definido como padrão C99 (eu acho). Usa termios.h, trabalhado em Linux e MacOS X. Não tem certeza sobre o Windows.
Quebrado em algumas linhas:
O aspecto:
Pode ser melhorado com certeza.
fonte
Java:
13461269Editar Portanto, embora este concurso esteja concluído, às vezes não posso deixar de lado quando melhorias podem ser feitas. Esta versão possui uma função de dobragem mais enxuta, mesquinha e no local, o despejo da maioria dos
boolean
tipos, exceto onde seria mais detalhado sem eles, e células um pouco menores (4x4 em vez de 5x5) para cortar alguns caracteres extras lá.Então essa foi divertida. Obrigado por publicar! Ungolfed, isto era 2856 bytes, golfed eu encolhi a 1346 bytes. Sendo Java, não vou ganhar, mas queria mostrar bem. Descobrir uma função de rolagem "geral" para lidar com junções e movimentos de peças foi divertido - é claro que você pode conferir meu "progresso" examinando os commits no meu repositório do github para esta solução .
Golfe:
Ungolfed: (Verifique meu repositório do github para este projeto para obter uma versão atualizada, incluindo um teste baseado em asserções para novas funções de dobragem)
Usar o programa é simples. Para criar e executar:
Pressione
u
para dobrar para cima,r
dobrar para a direita,d
dobrar para baixo,l
dobrar para a esquerda. Qualquer outra chave é ignorada, movimentos inválidos (sem resultado) são ignorados. Sendo Java, pressioneenter
após cada tecla para liberar o buffer da linha. Conforme exigido pelas regras, se você ganhar as saídas do programayou win
, se perder as saídas do programayou lose
. Os novos2
são colocados aleatoriamente nos ladrilhos abertos. As fusões seguem as regras declaradas. As células são caracteres 4x4, com uma borda ao redor de cada célula. Claro, deixe-me um comentário se eu estraguei alguma coisa e eu vou ter certeza de corrigi-la.Exemplo de saída:
fonte
Lua,
622616615612592590575 bytesConsultas stdin para 1,2,3,4 correlacionadas com esquerda, baixo, direita, cima (feita para entrada numpad); trava se você der uma entrada incorreta.
Quadrados em branco são impressos como '0'.
Exemplo de saída:
fonte
Clojure: 599
executá-lo em um REPL
golfed
destroçado
fonte