Sofá 2048: Quanto mais até 2048?


20

Acabei de experimentar um jogo chamado Couch 2048 .
(Observação: você deve entender melhor essa pergunta.)
Como não foi muito emocionante para mim, eu me perguntei: 'Quanto mais até 2048 !?'
Isso me inspirou a postar um desafio, porque calcular isso não é tão fácil quanto eu pensava.

Seu objetivo:
Dada uma lista de bolas no sofá, você deve gerar quantas bolas com um valor de 2 cairão do céu para que se possa vencer o jogo (alcançando a bola 2048).

  • Suponha que a entrada seja válida.
  • Suponha que o jogador não deixe cair nenhuma bola.
  • Suponha que as bolas que caem do céu sempre tenham um valor 2, como eu disse.
  • Exemplos de saída válidos: 3, "4", [5], ["6"]

Editar:
devo esclarecer uma coisa:
- Você precisa imprimir a menor quantidade de 2s necessária.

Casos de teste:
[2048] -> 0 você já venceu
[1024,1024] -> 0Você não precisa de mais bolas para ganhar
[1024,512,256,128,64,32,16,8,4,2] -> 1Uma bola é necessária para 'ativar a corrente'
[512] -> 768
[512,2] -> 767
[4,16,64] -> 982

Notas :
Não sou um falante nativo - diga-me se você viu um erro de digitação ou algum texto não gramatical.
Se algo não estiver claro, pergunte nos comentários.


por que [4,16,64] -> 22?
L4m2 12/12/18

3
Bem-vindo ao PPCG. Parece que este desafio é: adicione todos os elementos da matriz, subtraia 2048e divida por 2- se assim for, você pode querer checar novamente o último caso de teste - se não, use-o como um exemplo para explicar por que a saída não é 't 982.
Shaggy

1
@Shaggy thx para perceber um erro bobo

4
Woah, eu não acho que meu primeiro desafio terá 7 respostas e 2 votos positivos na primeira hora! E cheguei a ~ 28 pessoas!

2
Ei, downvoter: explique seu ponto de vista! É necessário que o desafio melhore!

Respostas:



8

Flak cerebral , 72 bytes

({{}})({<({}[()()])>()}{})([{}]((((((((()()()()){}){}){}){}){}){}){}){})

Experimente online!

({{}})                     # Sum entire stack
      (                  ) # Push:
       {<          >()}{}  #   The number of times you can...
         ({}[()()])        #   Subtract 2 before reaching 0

([{}]                                        ) # Subtract that from...
     ((((((((()()()()){}){}){}){}){}){}){}){}  # 1024

1
Obrigado! Estou interessado em aprender Brain-Flak e sua explicação foi útil.
Galen Ivanov #








2

Catholicon , 5 bytes

-`L̇½Ṗ

Explicação:

-      subtract
 `L̇    1024
       from
   ½   half of the
    Ṗ  sum [of the input]

1
Essa é uma nova linguagem de golfe que eu sinto? :)
ETHproductions

1
+1 para o novo idioma. Outro para aprender </ sigh>
ElPedro





1

perl -aE, 27 bytes

$"=$:;say eval"(2048-@F)/2"

Isso lê uma linha com números (espaços em branco separados) de STDINe grava a resposta em STDOUT.

O que ele faz é subtrair todos os números da entrada de 2048 e divide o restante por 2. O -acomutador coloca o na matriz @F(um número por elemento). Se interpolarmos uma matriz em uma string (que é o que estamos fazendo aqui), o perl coloca o valor $"entre os elementos. A variável pouco usada $:é o padrão \n-; e como o espaço em branco entre os tokens é ignorado, o resultado está subtraindo todos os números de 2048. O evalcálculo é feito.







0

AWK, 26 bytes

{s+=$1}END{print 1024-s/2}

Os números de entrada são separados por novas linhas (ou seja, uma por linha)


0

Neim, 6 bytes

Muito novo para Neim, mas funcionou

𝐬ᚺςᚫᛦ𝕤

Explicação:

  𝐬         : Sum input
   ᚺ        : Divide by 2 (stack now [input summed and divided by 2])
    ς       : Variable set to 16 pushed to stack
     ᚫ      : Multiply by 2
      ᛦ     : Square (stack now [input summed and divided by 2, 1024])
       𝕤    : Subtract then absolute

Experimente online!


0

JAVA, 30 bytes

2048-IntStream.of(a).sum()/2;




Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.