Ciao mondo!!! Distribuzione di Fibonacci


21
  1. Il tuo programma dovrebbe produrre esattamente: Hello world!!!con o senza avanzamento riga dopo.
  2. Il tuo programma non dovrebbe ricevere input.
  3. La distribuzione dei caratteri del codice sorgente deve essere corretta in base a:
    • Il numero di caratteri numerici (0-9) deve essere esattamente un numero di sequenza fibonacci.
    • Il numero di altri caratteri non numerici ! (0-9) nel codice sorgente deve essere esattamente il numero di sequenza fibonacci prima del numero di sequenza fibonacci sopra indicato.

Quattro esempi di distribuzione di caratteri valida nel codice sorgente:

  • 13 caratteri numerici, 8 caratteri non numerici.
  • 34 caratteri numerici, 21 caratteri non numerici.
  • 55 caratteri numerici, 34 caratteri non numerici.
  • 89 caratteri numerici, 55 caratteri non numerici.

Questo è code-golf, vince il codice più corto in byte! In bocca al lupo!

Modifica: poiché questa domanda ha dei vincoli sulla dimensione del codice sorgente in combinazione con l'essere code-golf, la risposta accettata (se più di una condivide la stessa lunghezza di carattere vincente) sarà la risposta con il maggior numero di voti (e il minor numero di caratteri): 2014- 03-01.


6
Pertanto, tutte le soluzioni hanno un conteggio dei caratteri che è un numero di fibonacci.
Howard,

1
Ecco un programma per convalidare le risposte (incollare il codice nella casella di input.)
Justin

1
È anche possibile farlo in meno di 55 caratteri? L'output richiesto ha 14 caratteri e non riesco a pensare a una lingua che può usare i numeri per generare caratteri senza usare almeno un carattere per carattere.
Justin il

2
@Plarsen sicuramente non va bene
John Dvorak il

1
Ok, allora non cambierò le regole :)
Plarsen,

Risposte:


27

Prompt dei comandi di Windows - 34, 8 , 5 caratteri, (2 in basso)

* Questi possono o meno infrangere la Regola 2, ma eccola comunque

%~099

Assegna un nome al file:

&start call echo Hello world!!!&exit -b .cmd


Ora consente di corrompere un po 'il file system - 2 caratteri (o meno se vuoi)

A1

Assegna un nome al file (usando il tuo metodo non ortodosso preferito):

"&start call echo Hello world!!!&exit&.cmd

Come funziona:

Poiché gli script cmd vengono richiamati con 'cmd.exe / C "% 1"% *' il comando eseguito sarà:

cmd.exe /C "c:\PATH_TO_THE_SCRIPT\"&start call echo Hello world!!!&exit&.cmd"

che sarà nel seguente ordine:

  • Impossibile eseguire "c: \ PATH_TO_THE_SCRIPT \"
  • Apri una nuova shell stampa Hello world! \ N
  • Esci dalla shell originale

2
Wow! Penso che avremmo ottenuto un vincitore se le regole non dicessero alcun input. +1 comunque per il pensiero fuori dagli schemi.
Plarsen,

2
Codice golf con Windows CMD ... +1. Inoltre, è discutibile che "nessun input" avrebbe potuto significare "nessuna lettura STDIN": P
Camilo Martin

1
Questo è un trucco interessante anche per altri golf di codice ... scrivi il vero codice nel nome del file e usa qualcosa di simile eval $0per eseguirlo <rolleyes>
Tobia

1
È impossibile!! 5 caratteri? Approccio davvero interessante
Plarsen,

1
In effetti, ho appena pubblicato una soluzione a 2 caratteri di seguito.
Tobia,

20

MySQL, 34

x'48656C6C6F20776F726C642121'||'!'

Questa è un'espressione MySQL che valuta Hello world!!!, presupponendo che l' sql_modeimpostazione includa PIPES_AS_CONCAT. Contiene esattamente 21 cifre e 13 non cifre.

Se questo si qualifica come un ingresso valido, lo lascio alla giuria.

Esempio

mysql> select x'48656C6C6F20776F726C642121'||'!';
+------------------------------------+
| x'48656C6C6F20776F726C642121'||'!' |
+------------------------------------+
| Hello world!!!                     |
+------------------------------------+
1 row in set (0.00 sec)

5
Che cosa ... il codice golf CMD e SQL vincente ??
Camilo Martin,

L' selecte ;sono senza dubbio parte della dichiarazione, ma ancora una soluzione intelligente.
primo

@primo sono, ecco perché non sono sicuro che questo si qualifichi. Ma ho pensato di pubblicarlo per ilarità ;-)
Tobia,


11

GolfScript, 55 caratteri

[72 101 108 108 111 32 119 111 114 108 100 33 {.}2*]''+

Non ho trovato il modo di avere una soluzione di 34 caratteri, quindi ho creato questo.


10

Befunge 98 - 55

a"!!!dlrow olleH"ek,@1235813213455891442333776109871597

Ho deciso di farlo con una nuova riga, dal momento che non costa nulla. I numeri sono i valori concatenati della sequenza di Fibonacci.


8

Python 34-55

print "Hello world%s"%("!"*int(3.141592653589793238462643383279502884197169399375105820))

Sì. Li spreco di cifre. Che cosa hai intenzione di fare al riguardo?


Chi sapeva che pi ~ 3 sarebbe stato così utile!
Kyle Kanos,

1
La domanda dice 21 non numerici più 34 numerici, la tua risposta è 34 non numerici più 21 numerici.
user12205

1
il "ciao mondo" dovrebbe essere "ciao mondo"; cioè capitalizzare la h.
Justin il

7

C (89 caratteri)

main() {
int i[0000000000000004]={1819043144,1870078063,560229490,2566922529};
puts(i);
}

Sebbene quanto sopra sia valido, sfortunatamente, i miei sforzi per compattarlo con il seguente programma non soddisfano le specifiche. Sento che vale la pena guardare e forse qualcun altro può accorciarlo un po '(64 caratteri, 37 numeri, 27 non numerici). Per compilarlo, dovrai usare clang e with -fms-extensions.

main(){puts((__int128[]){671944380693508453879479574226248i8});}

Letterati composti , è il nome per quello che stai cercando. Sto cercando di usarli per ottenere questo fino a 21 caratteri ora!
charmless

Il conteggio non numerico più basso che posso raggiungere è 26, rendendo iglobale (omettendo int). L'uso longpuò salvare le virgole, ma costa di più. 21 è molto lontano.
ugoren,

Sì, è un sacco di spazio sprecato. Usando quel piccolo trucco, riesco a farcela main(){puts((int[]){1819043144,1870078063,560229490,8481});}ma sono ancora 60 caratteri. Se potessi eliminare solo qualche altro ... Modifica: wow, quindi i globi non devono avere una dichiarazione? Chi lo sapeva?
VMB

@vmrob, i globi devono avere una dichiarazione. Ma il tipo predefinito è int, quindi a;è equivalente a int a;.
ugoren,

@ugoren Sapevo che dovevano avere una dichiarazione, ma non mi rendevo conto che non era impostato su int!
vmrob

6

Windows PowerShell (probabilmente anche Bash), 55

curl -L bit.ly/1b9q8ve?1=123581321345589144233377610987

Non hai detto nulla sull'accesso alla rete, quindi ecco una soluzione sporca. Ho un URL bit.ly con poche lettere sufficienti al secondo tentativo. Sfortunatamente, sono ancora 21 non cifre, che richiedono 34 cifre da utilizzare o sprecare.


Sai che puoi modificare i collegamenti bit.ly giusto?
Timtech,

Cosa intendi con modifica? Inoltre, non lo troverei sotto le 13 lettere in ogni caso.
John Dvorak,

Puoi premere la matita accanto a "Copia" e modificare il collegamento. Se lo fai, tutte le vecchie versioni funzioneranno comunque.
Timtech,

1
Abbreviato a 34! curl 37.187.42.18/?hw=112358132134
Dom Hastings,

6

sh, 55

echo Hello world!!! #1234567890123456789012345678901234

6

Korn Shell, 21

echo $0
#123456789012

La sceneggiatura deve essere chiamata "Hello world !!!" :)


5

Bash, 2 caratteri

Bene, nell'improbabile caso la risposta di Robert non è squalificata, ecco la mia:

$0

Assegna un nome al file echo Hello world!!!ed eseguilo con sh.


5

Pitone

print'092020090920200948656c6c6f20776f726c642121212009200909200920'.decode('hex').strip()

cifre: 55 non cifre: 34


Nota che non ci sono commenti nella soluzione. solo codice.
Eliseo,

4

PHP (55 byte)

Questo programma utilizza binario (wow, è la terza volta che riutilizzo lo stesso trucco). 21 caratteri non numerici, 34 caratteri numerici. Nessuna lettera, perché le lettere sono noiose.

xxd

0000000: 3c3f 3d7e b79a 9393 90df 8890 8d93 9bde  <?=~............
0000010: dede f53b 2331 3233 3435 3637 3839 3031  ...;#12345678901
0000020: 3233 3435 3637 3839 3031 3233 3435 3637  2345678901234567
0000030: 3839 3031 3233 34                        8901234

@JanDvorak: sono quasi sicuro di aver letto "prima o dopo". Vabbè, lasciami riparare allora.
Konrad Borowski il

4

Mathematica 55

"Hello World!!!"(34+21!)/000000000051090942171709440034

Produzione

Hello World!!!

4

Sclipting (34 caratteri)

丟0000000000긒괡뉆롲닷댠닶롬뉔밈0000000000併0反

Sfortunatamente Sclipting non usa alcun carattere ASCII, quindi devo riempire il programma con 21 caratteri numerici inutili :(


2

Forth or Ruby, 55

(34 numerici + 21 non numerici)

Via

." Hello world!!!" \ 3141592653589793238462643383279502

Rubino

puts"Hello world!!!"#3141592653589793238462643383279502

L'uso dei commenti per il pad sembra sporco, ma quelle sono risposte valide.


2

J (55 caratteri)

(34 numerici + 21 non numerici)

(72 101 108 108 111 32 119 111 114 108 100{a.), 3#33{a.

0

C #, 233 byte

233 caratteri
144 numerici
89 caratteri non numerici

/*I suck at CodeGolf!!!*/new List<int>{0072,00101,000108,000108,000111,0000032,00000119,00000111,0000000000114,0000000000108,00000000000000100,00000000000000033,00000000000000033,00000000000000033}.ForEach(c=>Console.Write((char)c));

Uscite:

Hello world!!!

0

Japt , 55 byte

"aaaaaaa1234567890123456789012345678901234"`HÁM WŽld!!!

Provalo online!

Fondamentalmente è un semplice mondo di ciao con un po 'di spazzatura all'inizio che viene ignorato ma fa sì che il codice soddisfi le condizioni.


-1

Windows Batch

echo Hello World!!!::0123456789012345678901234567890123

12
Wow. Questo è molto diverso dalla mia soluzione sh.
user12205

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.