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


12

Come spin-off della mia sfida a Puzzling , il tuo obiettivo è quello di produrre 2016.

Regole:

  • Devi includere i numeri 10 9 8 7 6 5 4 3 2 1in quell'ordine. Possono essere usati come singoli numeri interi o concatenati insieme (come 1098), ma 10non possono essere separati in 1e 0- nessun carattere (i) può essere presente tra le cifre. Si noti che, in alcune lingue, 10potrebbe non rappresentare l'intero valore letterale 10, il che è accettabile.
  • Il tuo codice non deve contenere altri numeri o variabili o costanti di numeri predefiniti (quindi Tin Pyth non è consentito, poiché è una costante numerica).
  • È necessario calcolare 2016 utilizzando i numeri. 2016Non è consentito semplicemente eseguire l' output senza eseguire alcuna operazione sui numeri richiesti (ad esempio, decodificando una stringa codificata costituita da soli caratteri alfabetici). Anche la produzione 2016in pezzi (come 20, quindi 16) non è consentita; è necessario disporre di un singolo output costituito dal valore numerico 2016.
  • Vince la risposta valida con il minor numero di byte.

3
@nicael Sono abbastanza sicuro di aver risolto il puzzle. Abbiamo avuto molte di queste sfide "inserire operatori per risolvere un'equazione", ma sono estremamente difficili da cercare.
Martin Ender,

1
La revisione precedente (2) era in realtà più interessante. Il nuovo sta solo stampando la stringa, il calcolo è già stato fatto nella tua domanda sconcertante ...
nicael,

1
Solo alcune domande sulla base di quello che posso vedere la questione in corso: 1) Possiamo calcolare 20e 16e stamparli uno dopo l'altro o se il numero calcolato necessità di essere 2016 prima della stampa? 2) Sono consentite le funzioni? 3) È consentita la concatenazione di cifre? ad esempio 1098(suppongo di sì dai commenti precedenti, ma solo per confermare) 4) "Calcolare il 2016 usando numeri interi" significa che non possiamo mai avere float da nessuna parte in una fase intermedia? ad esempio posso quadrare un numero e arrotondare per difetto?
Sp3000,

1
5) Cosa succede se ho una lingua in cui "10" non è trattato come il numero dieci, ma piuttosto uno seguito da uno zero e non c'è modo di aggirarlo? Una tale lingua è squalificata? (lingua di esempio: Befunge) 6) Possiamo usare una variabile numerica predefinita al posto di 10, ad esempio T987654321?
Sp3000,

@ Sp3000 1 n. 2 n. 3 Sì. 4 I float vanno bene purché non infrangiate altre regole. 5 10deve essere incluso, quindi dovresti gestirlo in qualche modo. 6 Finché 10appare prima T.
Rybo111,

Risposte:


22

Gelatina , 17 15 14 byte

109876:54+3_21

Provalo online!

Come funziona

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

Esagonia, 61 byte

Non vincerò, ma volevo solo fare una sfida in Hexagony.

Questo utilizza un metodo diverso rispetto ad altre risposte (molto peggio). Prende alcuni fattori del 2016 (2,3,6,7,8) e li moltiplica tutti insieme.

minified:

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

Unminified:

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

Spiegazione in arrivo;


5
" Spiegazione in arrivo; " Penso che abbiamo una diversa comprensione di "presto". ; P
Kevin Cruijssen,

1
@KevinCruijssen Whoops, me ne sono completamente dimenticato. ... E ora non capisco più come funziona. Grande.
Blu,

5

Pyth, 16 byte

+/109876 54-3 21

Fa divisione intera, quindi aggiunge (3-21).

Provalo qui .


4

TI-BASIC, 17 15 byte

int(109876/54-√(321

Questo utilizza il metodo di @ nicael.

17 byte:

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

Questa soluzione di Puzzling può essere tradotta direttamente in TI-BASIC.


1
Valido anche in Japt, e probabilmente in alcuni altri.
ETHproductions

1
Funziona anche in PowerShell e Mathematica (Wolfram), e immagino molti, molti altri. E probabilmente funziona in dozzine di più con modifiche banali.
AdmBorkBork,


Se vuoi prendere le altre lingue, eliminerò la mia community wiki one.
Addison Crump,

3

Japt, 17 16 byte

Â(109876/54-321q

Odio questo 17. Probabilmente troverà un'altra soluzione. YAYZ.

Spiegazione:

  • 321q è una radice quadrata di 321.
  • ~~ indica il numero.

Provalo online!


Â== ~~:-)
ETHproductions

109876/54-321¬fè il 15 :-D
ETHproductions

@Eth ma f non funziona, no?
nicael,

Dovrebbe essere risolto. Ma l'interprete è in manutenzione per il momento, lo ripristinerò momentaneamente.
ETHproductions

109876/54-321q)fora funziona. L'altro suggerimento no.
ETHproductions


3

aC, 14

109876/54+3-21

Niente di eccitante qui - prende in prestito da altre risposte.


1
L'equivalente in cc 109876 54/3+21-psegna 16, ma non garantisce una risposta propria.
Toby Speight,

2

Haskell, 31 byte

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

Non il più breve, 10+9*8-7+654*3-21come visto in altre risposte funziona anche in Haskell, ma qualcosa di diverso.

Questo crea un elenco che inizia con 10e 9*8*7+6 = 510, quindi l'offset è 500per i seguenti elementi. L'intero elenco è [10,510,1010,1510,2010,2510 ...]. Selezioniamo l' 4thelemento (basato su indice 0), cioè 2010e aggiungiamo 3*2*1 = 6. Ecco.

Uso const 6 5 = 6per sbarazzarmi di ciò 5che non è necessario.


2

Python 2, 20 byte

print 109876/54+3-21

Ancora una volta, lo stesso noioso 2016.(740). Fa uso del fatto che se non hai un numero decimale nella tua espressione restituisce un numero intero.


1

> <> (pesce), 18 byte

10987**r65r4*n;321

spiegazione:

moltiplica 9 8 e 7 insieme per ottenere 504, inverte la pila e la inverte nuovamente prima dell'aggiunta del 4, quindi moltiplica 504 e 4 per ottenere il 2016. Quindi stampa il numero e termina il programma prima degli ultimi 3 numeri (potrei fare anche dopo senza alcuna differenza, se ciò è importante dal punto di vista delle regole).


1

Math ++ , 17 byte

_(109876/54)+3-21

In realtà, questo stampa 2016.0. Ma non c'è davvero modo di stampare la stringa esatta 2016in questa lingua.

La soluzione TI-BASIC a 17 byte funzionerebbe anche qui.


1

Poliglotta, 17 byte

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

Questo codice, utilizzato per la prima volta nella risposta TI-BASIC di Thomas Kwa , funziona anche in:

  • AppleScript (programma completo)
  • bc (programma completo)
  • Math ++ (espressione o programma completo)
  • Mathematica (funzione, quindi non valida)
  • Powershell (programma completo)
  • Japt (programma completo)
  • JavaScript (input da console, quindi non valido) Richiede una seconda verifica
  • Perl 5 (funzione, quindi non valida). Richiede una seconda verifica
  • Haskell (funzione, quindi non valida)
  • Python REPL (espressione, quindi per ottenere l'output è necessario l'ambiente REPL)

1
E qual è il punto?
nicael,

@nicael sto --- andando --- sto programmando (a meno che Thomas Kwa non desideri aggiungere anche le altre risposte alle sue) per aggiungere tutte le risposte che coinvolgono questa risposta (tranne TI-BASIC) che posso trovare. Contrassegnato come Community in modo che altri possano contribuire.
Addison Crump,

1
Perché la "funzione, quindi non valida" osserva? Le funzioni sono consentite per impostazione predefinita.
nimi,

5
Non conosco le altre lingue, ma 10+9*8-7+654*3-21non è né JavaScript né una funzione Perl.
Dennis,

1
@ Sp3000: Oh, queste modifiche alle regole invalidanti ...
nimi



1

PHP, 27 byte

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

(22 byte) era troppo noioso,

quindi ho usato da 10 a 9 come numeri separati:

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

altre soluzioni, principalmente con piccoli trucchi:

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 Lattea 1.6.5 , 28 25 byte

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

Spiegazione

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 byte

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

Stesso tema di molti presenti.


0

VBA, 15 byte

?109876\54+3-21

(calcolo spudoratamente rubato a Dennis )


0

JavaScript (ES6), 21 byte

f=

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

console.log(f())

Se il "conto alla rovescia" è andato a 0, potrebbe essere fatto in 19 byte.

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

E visto che è il 2017 adesso, questo può essere fatto anche in 21 byte:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.