Ihr Ziel : Schreiben Sie einen Code, der das klassische Ergebnis von "Hallo Welt!" auf STDOUT oder gleichwertig gedruckt werden.
Regeln : Code muss vollständig im ASCII-Format gedruckt werden. Jeder Code muss funktionsfähig sein - das Entfernen eines einzelnen Zählzeichens muss das Ergebnis verändern oder den Code funktionsunfähig machen. Alle Variablen müssen nach der Zuweisung verwendet werden. Zeichen- und Zeichenkettenliterale müssen für die Ausgabe erforderlich sein. Das Ersetzen von Zeichenliteralen oder Zeichen in einem Zeichenkettenliteral durch ein anderes Zeichen muss das Ergebnis ändern können (und nicht durch die Auswirkung der Escape-Sequenz - Ersetzen von Zeichen durch Backslash) oder gleichwertig)
(HINWEIS: Die endgültige Regel wurde in bearbeitet.)
Wertung : Hier wird es interessant. Die höchste Punktzahl wird durch die Anzahl der Zeichen gemäß den typischen Regeln für das Code-Bowling bestimmt. Die wiederholte Verwendung von Zeichen führt jedoch zu Punktabzügen. Speziell...
- Die wiederholte Verwendung eines alphanumerischen Zeichens (az, AZ, 0-9) führt zu einem Abzug von 3 Punkten pro Wiederholung (die erste Verwendung führt nicht zu einem Abzug).
- Die wiederholte Verwendung der grundlegenden Interpunktion ([!? .-, ": ';]) - einschließlich der Klammern - führt zu einem Abzug von 2 Punkten pro Wiederholung.
- Die wiederholte Verwendung anderer ASCII-Zeichen {`~ @ # $% ^ & * _ + = | \ /> <} - einschließlich der geschweiften Klammern - führt zu einem Abzug von 4 Punkten pro Wiederholung.
- Die wiederholte Verwendung von Leerzeichen, Tabulatoren und Zeilenumbrüchen führt zu einem Abzug von 1 Punkt pro Wiederholung. Dies bedeutet, dass nur die erste Verwendung eines Leerzeichens, Tabulators oder einer neuen Zeile für Ihre Gesamtsumme berücksichtigt wird.
Hinweis: Kommentare zählen nicht zur Gesamtsumme, obwohl die Zeichen, die den Anfang / das Ende eines Kommentars markieren, dies tun. In C / C ++ /* This is a comment */
werden zum Beispiel zwei Schrägstriche und zwei Sternchen gezählt, aber nichts dazwischen.
Einige Beispiele (Hinweis: Verwenden von Julia als Beispielsprache) ...
print("Hello, world!");
Insgesamt sichtbare Zeichen: 22
Enthält
Leerzeichen : +1 Wiederholte alphanumerische Zeichen: -12 für llor
Wiederholte Interpunktion: -2 für "
Endpunktzahl: 22 + 1-12-2 = 9
print("Hel",char(108),"o, wor",0x108,"d!"); # 0x108 makes a Uint8 that prints as ASCII
Gesamtanzahl der Zeichen: 43 (zählt keine Zeichen nach #, dem Kommentarzeichen)
Enthält
Leerzeichen : +1 Wiederholte alphanumerische Zeichen: -18 für rr1008
Wiederholte Interpunktion: -24 für () "" "" ,,,,,
Final Punktzahl: 43 + 1-24-18 = 2
xy=STDOUT
m="Hello, world!"
print(xy,m);
Insgesamt sichtbare Zeichen: 37
Enthält Newline: +1
Enthält
Leerzeichen : +1 Wiederholte alphanumerische Zeichen: -18 für Xyllor
Wiederholte Interpunktion: -4 für ",
Wiederholte andere ASCII-Zeichen: -4 für =
Endpunktzahl: 37 + 1 + 1-18-4 -4 = 13
Ein paar ungültige Code-Teile ...
x=2;print("Hello,world!")
Problem: x
wird zugewiesen, aber nicht verwendet.
print("Hello,"*" world!")
Problem: *
ist unnötig, das Ergebnis wird ohne dasselbe sein.
k=1
if k>0
print("Hello, world!")
else
print("abcghjmquvxyzABCDEFGIJKLMNOPQRSTUVWXYZ_+*-&|")
end
Problem: Der zweite print
Befehl wird nicht ausgeführt. Auch das Entfernen von Zeichen in Anführungszeichen im zweiten print
Befehl ändert die Ausgabe nicht.
x="Hello, world!";
print(x)
Problem: Das Entfernen einer neuen Zeile ändert weder das Ergebnis noch den Fehler (in Julia ist ein Semikolon nur erforderlich, wenn sich mehrere Befehle in derselben Zeile befinden, andernfalls wird nur der Rückgabewert unterdrückt).
print("Hellos\b, world!")
Problem: Das s
Zeichen hat keinen Einfluss auf das Ergebnis, da es von gelöscht wird \b
. Dies ist akzeptabel, wenn dies über code ( "Hello",char(100),"\b, world!"
) erfolgt, jedoch nicht über Zeichenkettenliterale oder Zeichenliterale.
Praktischer Score-Rechner - http://jsfiddle.net/4t7qG/2/ - dank Doorknob