Inspirado por xkcd .
Seu desafio é determinar se um número faria uma boa combinação no jogo 2048 . Sua entrada será um número, como:
8224
E a saída será se esse número seria uma boa 2048 de combinação, que para esta entrada seria true
ou yes
ou 1
ou qualquer outra forma de indicar um resultado positivo.
Para aqueles não familiarizados com o jogo, aqui está uma explicação simples: potências de dois são organizados em uma grade, como este: [2] [2]
. As peças podem ser movidas em qualquer direção e, se duas peças idênticas se encontrarem, elas se tornarão a próxima potência de duas (assim, [2] [2]
quando movidas para a esquerda ou direita [4]
). Ou você pode apenas tentar o jogo aqui .
O que significa "uma boa combinação 2048"? Significa qualquer número que, se estivesse no jogo "2048", poderia ser combinado em um único número. (Um zero significa um espaço vazio e pode ser ignorado, se necessário.) Observe que os números podem ter vários dígitos! No entanto, os números não devem mudar entre os movimentos. Aqui estão alguns exemplos / casos de teste (com "Bom" indicando uma boa combinação e "Ruim" significando não bom):
- Bom: 8224 (8224 -> 844 -> 88 -> 16)
- Bom: 2222 (2222 -> 44 -> 8)
- Bom: 22048 (22048 -> 448 -> 88 -> 16)
- Ruim: 20482 (não é possível combinar os 2 externos, nem os 2048 e os 2)
- Bom: 20482048 (20482048 -> 4096)
- Ruim: 210241024 (210241024 -> 22048, mas agora é [2] [2048] e não pode ser combinado, pois os números não podem mudar entre os movimentos)
- Bom: 2048 (já é um número)
- Ruim: 2047 (não é um poder de 2)
- Ruim: 11 (não há 1's no jogo)
- Bom: 000040000000 (zeros são espaços vazios)
Regras diversas:
- A entrada pode ser de qualquer lugar razoável, como STDIN, argumento da função, arquivo, etc.
- A saída também pode ser razoável em qualquer lugar, ou seja, STDOUT, valor de retorno da função, arquivo etc.
- Ignore o tamanho da grade -
22222222
ainda deve ser verdadeiro. - O número não é máximo para o número s, desde que seja uma potência de dois. Portanto, os números possíveis são qualquer potência de dois maior que 0.
- Para aqueles preocupados com zeros causando ambiguidade, esse não é o caso. Por exemplo,
22048
pode ser analisado como[2] [2048]
ou[2] [2] [0] [4] [8]
. O primeiro não funciona, mas o segundo, por isso deve ser verdadeiro. - Isso é código-golfe , então o código mais curto em bytes vencerá!
22048
saída, good
mas isso não é verdade. Você não pode combinar 2
com 2048
e a grade é: 4x4
se todos os números forem separados, você receberá 5 células. então talvez você deva remover o 0
? Também o seu quinto exemplo parece ser inválido desde que o jogo pára em 2048
:)
1