Hallo Welt!!! Fibonacci-Verteilung


21
  1. Ihr Programm sollte genau ausgeben: Hello world!!!mit oder ohne Zeilenvorschub danach.
  2. Ihr Programm sollte keine Eingabe annehmen.
  3. Die Verteilung der Quellcode-Zeichen muss korrekt sein gemäß:
    • Die Anzahl der numerischen Zeichen (0-9) muss genau eine Fibonacci-Sequenznummer sein.
    • Die Anzahl der anderen nicht numerischen Zeichen ! (0-9) im Quellcode muss genau der Fibonacci-Sequenznummer vor der obigen Fibonacci-Sequenznummer entsprechen.

Vier Beispiele für eine gültige Zeichenverteilung im Quellcode:

  • 13 numerische und 8 nicht numerische Zeichen.
  • 34 numerische und 21 nicht numerische Zeichen.
  • 55 numerische und 34 nicht numerische Zeichen.
  • 89 numerische und 55 nicht numerische Zeichen.

Das ist Code-Golf, der kürzeste Code in Bytes gewinnt! Viel Glück!

Bearbeiten: Da diese Frage Einschränkungen hinsichtlich der Quellcode-Größe in Verbindung mit Code-Golf aufweist, ist die akzeptierte Antwort (wenn mehr als eine Frage die gleiche Länge der gewinnenden Zeichen hat) die Antwort mit den meisten Stimmen (und der geringsten Anzahl von Zeichen): 2014- 03-01.


6
Somit haben alle Lösungen eine Zeichenanzahl, die eine Fibonacci-Zahl ist.
Howard

1
Hier ist ein Programm, um Antworten zu validieren (fügen Sie den Code in das Eingabefeld ein.)
Justin

1
Ist es überhaupt möglich, dies in weniger als 55 Zeichen zu tun? Die erforderliche Ausgabe hat 14 Zeichen, und ich kann mir keine Sprache vorstellen, die Zahlen zur Ausgabe von Zeichen verwendet, ohne mindestens ein Zeichen pro Zeichen zu verwenden.
Justin

2
@Plarsen definitiv nicht in Ordnung
John Dvorak

1
Okay, dann werde ich die Regeln nicht ändern :)
Plarsen

Antworten:


27

Windows-Eingabeaufforderung - 34, 8 , 5 Zeichen (2 unten)

* Diese können gegen Regel 2 verstoßen oder auch nicht, aber hier ist es trotzdem

%~099

Benennen Sie die Datei:

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


Jetzt können wir das Dateisystem ein wenig beschädigen - 2 Zeichen (oder weniger, wenn Sie wollen)

A1

Benennen Sie die Datei (mit Ihrer bevorzugten unorthodoxen Methode):

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

Wie funktioniert das:

Da Cmd-Skripte mit 'cmd.exe / C "% 1"% *' aufgerufen werden, lautet der ausgeführte Befehl:

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

was wird in der folgenden Reihenfolge:

  • Fehler beim Ausführen von "c: \ PATH_TO_THE_SCRIPT \"
  • Öffne einen neuen Shell-Druck Hallo Welt! \ N
  • Beenden Sie die ursprüngliche Shell

2
Wow! Ich denke, wir hatten einen Gewinner, wenn die Regeln keine Eingabe sagten. +1 sowieso für das Outside-of-Box-Denken.
Plarsen

2
Code Golf mit Windows CMD ... +1. Es kann auch argumentiert werden, dass "keine Eingabe" "kein Lesen von STDIN" bedeuten könnte: P
Camilo Martin

1
Das ist ein interessanter Trick auch für andere Code-Golfer. Schreiben Sie den echten Code in den Dateinamen und führen Sie ihn mit so etwas wie eval $0<rolleyes> aus.
Tobia

1
Das ist nicht möglich!! 5 Zeichen? Wirklich interessanter Ansatz
Plarsen

1
Tatsächlich habe ich gerade eine 2-Zeichen- Lösung veröffentlicht.
Tobia

20

MySQL, 34

x'48656C6C6F20776F726C642121'||'!'

Dies ist ein MySQL-Ausdruck, der ausgewertet wird Hello world!!!, vorausgesetzt, die sql_modeEinstellung enthält PIPES_AS_CONCAT. Es enthält genau 21 Ziffern und 13 nicht-Ziffern.

Ob dies ein gültiger Beitrag ist, überlasse ich der Jury.

Beispiel

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

5
Was zum ... CMD und SQL gewinnender Code Golf?
Camilo Martin

Die selectund ;sind wohl Teil der Aussage, aber dennoch eine clevere Lösung.
Primo

@primo sie sind, deshalb bin ich mir nicht sicher, ob dies qualifiziert ist. Aber ich dachte, ich würde es aus Vergnügen posten ;-)
Tobia


11

GolfScript, 55 Zeichen

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

Ich habe keinen Weg gefunden, eine 34-Zeichen-Lösung zu haben, also habe ich diese erstellt.


10

Befunge 98 - 55

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

Beschlossen, es mit einem Newline zu tun, da es nichts kostet. Die Zahlen sind die verketteten Werte der Fibonacci-Sequenz.


8

Python 34-55

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

Ja. Ich verschwende sie Ziffern. Was wirst du dagegen tun?


Wer wusste, dass Pi ~ 3 so nützlich wäre!
Kyle Kanos

1
Die Frage lautet 21 nicht numerisch plus 34 numerisch, Ihre Antwort lautet 34 nicht numerisch plus 21 numerisch.
user12205

1
Die "Hallo Welt" sollte "Hallo Welt" sein. das ist kapitalisieren die h.
Justin

7

C (89 Zeichen)

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

Obwohl das oben Genannte gültig ist, entsprechen meine Bemühungen, es mit dem folgenden Programm zu komprimieren, leider nicht der Spezifikation. Ich glaube, es lohnt sich, sich das anzuschauen, und vielleicht kann es jemand anderes ein bisschen verkürzen (64 Zeichen, 37 Ziffern, 27 Nicht-Ziffern). Um es zu kompilieren, müssen Sie clang und with verwenden -fms-extensions.

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

Zusammengesetzte Literale ist der Name für das, wonach Sie suchen. Ich versuche, sie zu benutzen, um das jetzt auf 21 Zeichen zu reduzieren!
charmlessCoin

Die niedrigste nicht numerische Anzahl, die ich erreichen kann, ist 26, indem ich iglobal mache (weglassen int). Verwenden longkann Kommas sparen, kostet aber mehr. 21 ist sehr weit.
Ugoren

Ja, es ist viel Platzverschwendung. Mit diesem kleinen Trick kann ich es schaffen, main(){puts((int[]){1819043144,1870078063,560229490,8481});}aber das sind immer noch 60 Zeichen. Wenn ich nur ein paar mehr eliminieren könnte ... Edit: wow, müssen Globale also keine Deklaration haben? Wer wusste?
vmrob

@vmrob, Globals müssen eine Erklärung haben. Aber die Art standardmäßig int, so a;entspricht int a;.
Ugoren

@ugoren Ich wusste, dass sie eine Erklärung haben mussten, ich wusste nur nicht, dass es standardmäßig int war!
vmrob

6

Windows PowerShell (wahrscheinlich auch Bash), 55

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

Sie haben nichts über den Netzwerkzugriff gesagt, daher hier eine schmutzige Lösung. Beim zweiten Versuch habe ich eine kleine URL mit genügend Buchstaben. Leider sind es immer noch 21 nicht-stellige Zeichen, die 34 Zeichen benötigen, um verwendet oder verschwendet zu werden.


Sie wissen, dass Sie die bit.ly-Links bearbeiten können, oder?
Timtech

Was meinst du, bearbeiten? Außerdem würde ich das unter 13 Buchstaben auf keinen Fall bekommen.
John Dvorak

Sie können den Stift neben "Kopieren" drücken und den Link bearbeiten. In diesem Fall funktionieren alle alten Versionen weiterhin.
Timtech

1
Auf 34 verkürzt! curl 37.187.42.18/?hw=112358132134
Dom Hastings

6

sh, 55

echo Hello world!!! #1234567890123456789012345678901234


5

Bash, 2 Zeichen

Sehr gut, in dem unwahrscheinlichen Fall, dass Roberts Antwort nicht disqualifiziert wird, hier ist meine:

$0

Datei echo Hello world!!!benennen und mit ausführen sh.


5

Python

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

Ziffern: 55 nicht Ziffern: 34


Beachten Sie, dass die Lösung keine Kommentare enthält. nur Code.
Elisha

4

PHP (55 Bytes)

Dieses Programm verwendet Binary (wow, es ist das dritte Mal, dass ich denselben Trick wieder verwende). 21 nicht numerische Zeichen, 34 numerische Zeichen. Keine Briefe, denn Briefe sind langweilig.

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: Ich bin mir fast sicher, dass ich "vorher oder nachher" gelesen habe. Na ja, dann lass es mich reparieren.
Konrad Borowski

4

Mathematica 55

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

Ausgabe

Hello World!!!

4

Sclipting (34 Zeichen)

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

Leider verwendet Sclipting überhaupt keine ASCII-Zeichen, so dass ich das Programm mit 21 unnötigen Zahlenzeichen auffüllen muss :(


2

Vierter oder Rubin, 55

(34 numerisch + 21 nicht numerisch)

Forth

." Hello world!!!" \ 3141592653589793238462643383279502

Rubin

puts"Hello world!!!"#3141592653589793238462643383279502

Das Verwenden von Kommentaren zum Auffüllen fühlt sich schmutzig an, aber das sind gültige Antworten.


2

J (55 Zeichen)

(34 numerisch + 21 nicht numerisch)

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

0

233 Bytes

233 Zeichen
144 Numerisch
89 Nicht numerische Zeichen

/*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));

Ausgänge:

Hello world!!!

0

Japt , 55 Bytes

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

Probieren Sie es online!

Es ist im Grunde eine einfache Hallo-Welt mit etwas Müll am Anfang, der ignoriert wird, aber den Code die Bedingungen erfüllen lässt.


-1

Windows Batch

echo Hello World!!!::0123456789012345678901234567890123

12
Wow. Das ist so viel anders als meine sh-Lösung.
user12205

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.