10 9 8 7 6 5 4 3 2 1… Imprimir 2016


12

Como resultado do meu desafio no Puzzling , seu objetivo é produzir 2016.

Regras:

  • Você deve incluir os números 10 9 8 7 6 5 4 3 2 1nessa ordem. Eles podem ser usados ​​como números inteiros individuais ou concatenados juntos (como 1098), mas 10não podem ser separados por 1e 0- nenhum caractere (s) pode estar presente entre os dígitos. Observe que, em alguns idiomas, 10pode não representar o literal inteiro 10, o que é aceitável.
  • Seu código não deve conter outros números ou variáveis ​​ou constantes de números predefinidos (portanto, Tem Pyth não é permitido, pois é uma constante numérica).
  • Você deve calcular 2016 usando numéricos. A saída simples 2016sem executar nenhuma operação nos números necessários (por exemplo, decodificando uma sequência codificada que consiste apenas em caracteres alfabéticos) não é permitida. Saída 2016em pedaços (como 20, então 16) também não é permitida; você deve ter uma única saída consistindo no valor numérico 2016.
  • A resposta válida com o menor número de bytes vence.

3
@nicael Tenho certeza que resolver o quebra-cabeça já foi feito. Tivemos vários desses desafios de "operadores de inserção para resolver uma equação", mas eles são excepcionais difíceis de pesquisar.
Martin Ender

1
A revisão anterior (2) foi mais interessante, na verdade. O novo está apenas imprimindo a string, o cálculo já foi feito em sua pergunta intrigante ...
nicael

1
Apenas algumas perguntas com base no que eu posso ver sobre a questão atual: 1) podemos calcular 20e 16e imprimi-los um após o outro ou não a necessidade número calculado para ser 2016 antes de imprimir? 2) As funções são permitidas? 3) A concatenação de dígitos é permitida? por exemplo 1098(estou assumindo que sim por comentários anteriores, mas apenas para confirmar) 4) "Calcular 2016 usando números inteiros" significa que nunca podemos flutuar em lugar algum em uma etapa intermediária? por exemplo, posso calcular o número da raiz quadrada e arredondar para baixo?
Sp3000

1
5) O que acontece se eu tiver um idioma em que "10" não seja tratado como o número dez, e sim um seguido por um zero e não houver maneira de contornar isso? Esse idioma é desqualificado? (idioma do exemplo: Befunge) 6) Podemos usar uma variável numérica predefinida no lugar de 10, por exemplo T987654321?
Sp3000

@ Sp3000 1 No. 2 No. 3 Sim. 4 Os flutuadores estão OK, desde que você não quebre outras regras. 5 10deve ser incluído para que você precise lidar com isso de alguma forma. 6 Desde que 10apareça antes T.
precisa saber é o seguinte

Respostas:


22

Geléia , 17 15 14 bytes

109876:54+3_21

Experimente online!

Como funciona

109876:54+3_21

109876            Initialize the left argument as 109876.
      :54         Perform integer division by 54, yielding 2034.
         +3       Add 3, yielding 2037.
           _21    Subtract 21, yielding 2016.

8

Hexagonia, 61 bytes

Não vou ganhar, mas eu só queria fazer um desafio no Hexagony.

Isso usa um método diferente de outras respostas (muito pior). São necessários alguns fatores de 2016 (2,3,6,7,8) e os multiplicam todos juntos.

Minificado:

\109.8/7}_=\"6<}{>...$_5_4/*!@...../}3.."2\/="*=}<*...$1>"*"/

Desminificado:

    \ 1 0 9 .
   8 / 7 } _ =
  \ " 6 < } { >
 . . . $ _ 5 _ 4
/ * ! @ . . . . .
 / } 3 . . " 2 \
  / = " * = } <
   * . . . $ 1
    > " * " /

Explicação em breve;


5
" Explicação em breve; " Acho que temos uma compreensão diferente de 'em breve'. ; P
Kevin Cruijssen

1
@KevinCruijssen Opa, eu esqueci completamente isso. ... E agora eu não entendo mais como isso funciona. Ótimo.
Azul

5

Pitão, 16 bytes

+/109876 54-3 21

Faz divisão inteira e adiciona (3-21).

Experimente aqui .


4

TI-BASIC, 17 15 bytes

int(109876/54-√(321

Isso usa o método do @ nicael.

17 bytes:

10+9*8-7+654*3-21

Esta solução da Puzzling pode ser traduzida diretamente para o TI-BASIC.


1
Também é válido em japonês e provavelmente em alguns outros.
ETHproductions

1
Também funciona no PowerShell e Mathematica (Wolfram), e eu imagino muitos, muitos outros. E provavelmente funciona em dezenas de outras com modificações triviais.
AdmBorkBork

Uma solução poliglota linda
TanMath

Se você quiser usar os outros idiomas, excluirei o wiki da minha comunidade.
Addison Crump

3

Japonês, 17 16 bytes

Â(109876/54-321q

Eu odeio isso 17. Provavelmente vai encontrar outra solução. YAYZ.

Explicação:

  • 321q é uma raiz quadrada de 321.
  • ~~ aumenta o número.

Experimente online!


Â== ~~:-)
ETHproductions

109876/54-321¬fé 15 :-D
ETHproductions

@ Et, mas f não funciona, não?
Nicael

Deve ser consertado. Mas o intérprete está em manutenção no momento, eu o recuperarei momentaneamente.
ETHproductions

109876/54-321q)fagora funciona. A outra sugestão não.
ETHproductions


3

bc, 14

109876/54+3-21

Nada emocionante aqui - empresta outras respostas.


1
O equivalente em CC 109876 54/3+21-pmarca 16, mas não garante uma resposta própria.
Toby Speight

2

Haskell, 31 bytes

[10,9*8*7+const 6 5..]!!4+3*2*1

Não é o mais curto, 10+9*8-7+654*3-21como visto em outras respostas, também funciona em Haskell, mas algo diferente.

Isso cria uma lista começando com 10e 9*8*7+6 = 510, portanto, o deslocamento é 500para os seguintes elementos. A lista inteira é [10,510,1010,1510,2010,2510 ...]. Nós escolhemos o 4thelemento (baseado no índice 0), ie, 2010e adicionamos 3*2*1 = 6. Voilà.

Eu uso const 6 5 = 6para me livrar do 5que não é necessário.


2

Python 2, 20 bytes

print 109876/54+3-21

Mais uma vez, o mesmo chato 2016.(740). Faz uso do fato de que, se você não tiver um número decimal em sua expressão, ele retornará um número inteiro.


1

> <> (peixe), 18 bytes

10987**r65r4*n;321

explicação:

multiplica 9 8 e 7 juntos para obter 504, inverte a pilha e inverte-a novamente imediatamente antes da adição de 4, depois multiplica 504 e 4 para obter 2016. Em seguida, imprime o número e termina o programa antes dos últimos 3 números (eu poderia fazer depois também sem diferença, se isso importa em termos de regras).


1

Matemática ++ , 17 bytes

_(109876/54)+3-21

Na verdade, isso imprime 2016.0. Mas não há realmente nenhuma maneira de imprimir a string exata 2016nesse idioma.

A solução TI-BASIC de 17 bytes também funcionaria aqui.


1

Poliglota, 17 bytes

10+9*8-7+654*3-21

Esse código, usado pela primeira vez na resposta TI-BASIC de Thomas Kwa , também funciona em:

  • AppleScript (programa completo)
  • bc (programa completo)
  • Math ++ (expressão ou programa completo)
  • Mathematica (função, portanto, não é válida)
  • Powershell (programa completo)
  • Japt (programa completo)
  • JavaScript (entrada do console, portanto, não é válida) Precisa de segunda verificação
  • Perl 5 (função, portanto, não é válida). Precisa de segunda verificação
  • Haskell (função, portanto, não válida)
  • Python REPL (expressão, portanto, o ambiente REPL é necessário para obter a saída)

1
E qual é o objetivo?
Nicael

@nicael Estou --- indo --- estou planejando (a menos que Thomas Kwa queira adicionar as outras respostas às dele) para adicionar todas as respostas que envolvem essa resposta (exceto a TI-BASIC) que eu puder encontrar. Marcado como Comunidade para que outros possam contribuir.
Addison Crump

1
Por que a "função, portanto, não é válida", observa? As funções são permitidas por padrão.
nimi

5
Eu não sei sobre os outros idiomas, mas 10+9*8-7+654*3-21não é uma função JavaScript nem Perl.
Dennis

1
@ SP3000: Oh essas mudanças de regras invalidar ...
nimi



1

PHP, 27 bytes

<?=~~(109876/54+3-21);

(22 bytes) era muito chato,

então eu usei 10 a 9 como números separados:

<?=10*(9-8+7-6),5+4-3+2<<1;

outras soluções, principalmente com pequenos truques:

30: <?=10**(9+8-7-6)/5+4*3+(2<<1);
30: <?=10*trim(9*8,7),6+5+4+3-2*1;
29: <?=10*trim(9*8,76),5*4-3-2+1;
31: <?=10*trim(9*8,765),4+(3*2<<1);
31: <?=10*trim(9*8,765),4*3+(2<<1);
32: <?=ceil(1098*76/54)+321+ord(~j);
33: <?=(10<<9)/876*543/M_PI*2-M_E&~1;

0

Via Láctea 1.6.5 , 28 25 bytes

10+9*(8)7;^*6*5/4*3/2*A!1

Explicação

10+9*                      ` perform 10*9 (leaves 90 at TOS)
     (8)7;^*               ` get rid of 8 and multiply the TOS by 7
            6*5/4*3/2*A    ` perform TOS*6/5*4/3*2 (leaves 2016 at TOS)
                       !   ` output the TOS
                        1  ` push 1 to the stack




0

C 37 bytes

main(){printf("%d",109876/54+3-21);}

Mesmo tema que muitos presentes.


0

VBA, 15 bytes

?109876\54+3-21

(cálculo descaradamente roubado de Dennis )


0

JavaScript (ES6), 21 bytes

f=

_=>~~(109876/54+3-21)

console.log(f())

Se a "contagem regressiva" for 0, isso poderá ser feito em 19 bytes.

f=
_=>109876/54+3-21|0
console.log(f())

E, como agora é 2017, isso também pode ser feito em 21 bytes:

f=
_=>-~(109876/54+3-21)
console.log(f());

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.