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 trueou yesou 1ou 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 -
22222222ainda 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,
22048pode 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á!
22048saída, goodmas isso não é verdade. Você não pode combinar 2com 2048e a grade é: 4x4se 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