Schreiben Sie ein Snippet, eine Funktion, ein Programm, ... das so verschleiert ist, dass auf den ersten Blick klar wird, dass es etwas anderes tut.
Beispiel: Schreiben Sie einen Code, der zwei Zahlen hinzufügt. Wenn Sie jedoch jemanden fragen, "was macht er?", Wird er Ihnen mitteilen, dass "Hallo, Welt!" Gedruckt wird.
Regeln
- Der Code muss für jemanden lesbar sein, der die von Ihnen verwendete Sprache ungefähr kennt (vermeiden Sie in Ihrem eigenen Interesse intrinsisch verschleierte Sprachen wie APL).
- Der Code muss etwas Unerwartetes tun, das der Leser zunächst nicht vorhersagen konnte.
- Wenn Sie verschiedene Leser fragen, müssen sie dieselbe (falsche) Meinung über die Funktionsweise des Codes haben.
Bewertung
- Bitte lies die Codes anderer Teilnehmer innerhalb von maximal 10-20 Sekunden durch, um eine gute Vorstellung davon zu bekommen, was dort passiert.
- Fügen Sie der Antwort einen Kommentar hinzu, der besagt, was Ihrer Meinung nach der Code bewirkt. Wenn die Antwort, die Sie geben möchten, bereits vorhanden ist, geben Sie einfach +1 für den Kommentar. (Wenn Sie diese Antwort verpassen und einen weiteren Kommentar hinzufügen, wird sie nicht als weitere Antwort gewertet.)
- Die Punkte werden folgendermaßen angezeigt: (
maxFalseOpinion
-goodGuess
) /totalOpinion
(siehe Beispiel unten). - Bewerten Sie andere Teilnehmer mit Fairplay und kommentieren Sie Ihren eigenen Code nicht.
- Füge nur nützliche Kommentare hinzu. Vermeiden Sie "Ich weiß nicht" und "Gute!", Sie werden für die Bewertung nicht berücksichtigt, aber es ist der Code und nicht die Bewertung, die verschleiert werden muss.
Rating-Beispiel
Das Snippet fügt zwei Zahlen hinzu. Die Kommentare sagen:
(3) Es wird "Hallo Welt!" Angezeigt.
(1) Es werden 2 Zahlen abgezogen.
(2) Es werden 2 Zahlen hinzugefügt.
Die Gesamtpunktzahl ist die maximale Anzahl der Meinungen (3) - die Anzahl der guten Vermutungen (2) geteilt durch die Gesamtzahl der Vermutungen (3 + 1 + 2 = 6). Ergebnis: (3 - 2) / 6 = 1/6 = 16,67% .
MEHR ÜBER PUNKTE
Die Leute scheinen Probleme damit zu haben, die Punkte herauszufinden.
Hier ist eine perfekte Punktzahl:
printf('Hello World');
Kommentare:
Zeigt an, wie oft Sie auf eine Schaltfläche geklickt haben. (17 Kommentare).
Insgesamt: 17 Kommentare
Punktzahl: (17 - 0) / 17 = 1 = 100%
Hier ist eine lahme Punktzahl:
printf('Hello World');
Kommentare:
Es wird "Hello World" gedruckt. (13 Kommentare).
Insgesamt: 13 Kommentare
Punktzahl: (0 - 13) / 13 = -1 = -100%
Hier ist ein nicht so schlechtes Ergebnis:
printf('Hello World');
Kommentare:
Gibt den Benutzernamen aus. (2 Kommentare).
Es zeigt die aktuelle Uhrzeit an (15 Kommentare).
Es gibt das, was Sie eingegeben haben, unverändert zurück. (3 Kommentar).
Es druckt "Hallo Welt" (1 Kommentar).
Insgesamt: 21 Kommentare
Punktzahl: (15 - 1) / 21 = 0.6667 = 66.67% Erklärung
:
15 ist die wichtigste Vermutung, was die Leute am meisten sagten. 1 ist die richtige Anzahl von Vermutungen. 21 ist die Summe aller Kommentare.
quelle
Antworten:
Javascript
Antwort: Es wird ausgegeben
1
. Die folgenden Kommentare erklären es recht gut - hier gibt es zwei verschiedene Variablen : 'LATIN SMALL LETTER A' und 'CYRILLIC SMALL LETTER A' .Es gab 1 richtige Antwort, 50 Leute dachten, es gäbe 2 aus, und bei insgesamt 52 Antworten ist die Punktzahl (50 - 1) / 52 = 49/52 = 94,23%.
quelle
2
oder zumindest das ist, was ich hoffe :)C, Score 33,3%
Lauf
./prog 'Hello & goodbye, world!'
Ergebnis
Die richtige Antwort ist
H\n
(daswhile
ist Teil des Kommentars, da die Zeile mit endet\
, es gibt also keine Schleife), gegeben von 6 Personen.Der häufigste Fehler wurde
Hello goodbye, world\n
von 25 Personen begangen.(25 - 6) / 57 = 33,3%.
Vielen Dank an Olivier Dulac für die Mühe zu berechnen.
quelle
H\n
.Hello goodbye, world!
(no \ n) (2 Leerzeichen nach Hallo)Python
Bewertung
Gute Antwort: Druckt
0 1 4 9 16 25 36 49 64 64
jede Zahl in einer Zeile.Erläuterung: Obwohl niemand die richtige Antwort erhält, halte ich dies größtenteils für einen fehlgeschlagenen Versuch, da niemand den Fehler gemacht hat, den ich beabsichtigt hatte. (Ich werde später eine echte Erklärung hinzufügen, wenn es sonst niemand tut.)
Anzahl guter Antworten: 0
Anzahl der Personen mit der gleichen falschen Antwort: 7
Gesamtzahl der Antworten: 11
Punktzahl: 63,64% (auf zwei Dezimalstellen gerundet)
Erläuterung
Zunächst wird eine Liste
a
erstellt und mit Werten gefüllti * ++i
.++
In Python gibt es keinen Operator, aber es gibt einen unären+
Operator, der nichts für Ganzzahlen tut, und dessen zweimalige Anwendung immer noch nichts bewirkt. Soa
enthält die Quadrate der ganzen Zahlen von0
zu9
.Ich hatte das
++
als Ablenkung gewertet und gehofft, dass die meisten Wähler weitermachen würden, weil sie dachten, sie hätten die Falle gefunden und wären in die wahre Falle geraten. Es hat nicht geklappt. Einige dachten, das++
sei ein Syntaxfehler, und die anderen suchten immer noch nach der Falle.Die Falle Die Falle befand sich in der zweiten for-Schleife:
Ich war mir sicher, dass die meisten Leute denken würden, dies druckt alle
a[i]
, dh0 1 4 9 16 25 36 49 64 81
jede Zahl in einer Zeile aus. Das bekommen Sie mit dieser Variante zum Beispiel:x
wird die Werte in zugewiesena
und dannx
gedruckt. In der ersten Version werdena[i]
die Werte in zugewiesena
und danna[i]
gedruckt. Der Unterschied ist, dass wir in unserem Fall habeni == 9
und somit der Wert vona[9]
jedes Mal durch die Schleife geändert wird. Wenn finala[9]
gedruckt wird, hat es den Wert vona[8]
und wird somit64
erneut gedruckt.quelle
++
in Python).SyntaxError
am zweitenfor
.81
zehnmalSyntaxError
am zweitenfor
. Das ist großartig. Das sollte wirklich gewinnen. Ich brauchte 5 Minuten, um zu verstehen, was los war, lol!JavaScript , Score von -100%
Ich habe das nicht erfunden, Gary Bernhardt, aber es ist einer meiner Favoriten
quelle
-100%
? ...Python, -54,8%
Antwort: Wirft
SyntaxError: not a chance
Erläuterung:
from __future__ import braces
ist eines der Ostereier in Python. Es ist ein Scherz, der besagt, dass Python in Zukunft niemals mehr geschweifte Klammern verwenden wird.quelle
SyntaxError: not a chance
Perl, 26,67%
Ergebnisse:
Dieses druckt "ich bin über das Sagen alles überhaupt ambivalent."
my $num1,$num2 = @_;
Klammern fehlen. Daher ist es äquivalent zumy $num1; $num2 = @_;
.$num1
wird auf nichts eingestellt.Ist
$num1
also nie größer als Null. Das bisschen über die geheime Fischwelt, die sich hinter dem Bildschirm verbirgt, ist ein roter Hering, so dass die Leute denken, sie hätten den "Trick" gefunden.Außerdem ist der ternäre Operator in Perl ein l-Wert:
1 ? $a = 1 : $b = 2
eigentlich bedeutet(1 ? $a = 1 : $b) = 2
. Welches Mittel($a = 1) = 2
ausgewertet wird, setzt$a
auf2
. Im Gegensatz zum Aussehen wird die zweite Zeichenfolge zugewiesen$num1
.Wenn Sie sich fragen,
//
ist der definierte Operator. Wenn das Sub einen undefinierten Wert zurückgibt, wird die Zeichenfolge"Stuff did not happen."
gedruckt. Aber das passiert eigentlich nicht. Es ging nur darum, den Menschen eine andere Option zu geben.Wertung:
Insgesamt richtig: 5
Gesamtschätzungen: 30
Ergebnis: (13 - 5) / 30 = 26,67%
quelle
This is a secret fish world. Carp cannot be repressed!
.Hello, world!
.1 ? $a = 1 : $b = 2
bedeutet eigentlich(1 ? $a = 1 : $b) = 2
. Welches Mittel($a = 1) = 2
ausgewertet wird, wird$a
auf 2 gesetzt. Wie Primo betont hat, wirdmy $num1, $num2 = @_;
auch nicht das getan, was Sie erwarten, da die Klammern fehlen.PHP 52%
(Wörtlich von hier kopiert )
Erklärung & Score
quelle
train
.C ++ 28,9%
Lösung
Ergebnis
Mit freundlicher Genehmigung von Alvin Wong
HelloWorld
( unter Berücksichtigung MiniTech ist und Zeel- Gruppen sind gleich)Hello\nworld
3 dachte etwas anderes.quelle
cout
wenn es ohne Parameter aufgerufen wird.HelloWorld
.Rubin, 100%
Korrekte Antwort:
Punktzahl: 3 der gleichen falschen Antwort, keine anderen Antworten.
quelle
Python, -28,13%
Dies wird gedruckt,
11
weil derelse
Block, der zu dem gehörtwhile
, ausgeführt wird, nachdem die Schleife verlassen wurde.Ergebnis: (8 - 17) / 32 = -28,13%
quelle
else:
11
in einer Zeile.Python: Bewertung: -27%
Das Programm druckt:
Rating: Gesamt Meinungen: 22 12 Richtig 3 + 1 + 6 Falsch
Bewertung basierend auf dieser Annahme und meinem Verständnis des Bewertungssystems: Maximal falsch = 6 richtig = 12 Punkte = (6-12) / 22 = -27%
quelle
What is your name: [operating system name]
,What is your quest: Seek and find the holy grail
,What is your favourite color: blue
auf separaten Zeilen. Offensichtlich[operating system name]
wird durch den tatsächlichen Namen ersetzt.name = "Robin"
,seek = "Seek and find holy grail"
undfavorite_color = "red"
, oh, nein.blue
! (AAARRGGGHHH!)What is your name: <function os.name at 0x....>
etc.What is your name: Robin
,What is your quest: Seek and find holy grail
undWhat is your favorite color: blue
in separaten Zeilen.Python
bearbeiten:
Ergebnis (8-1) / 9 == 77,7%
Die korrekte Ausgabe ist '2 is company' in Python 2, '3 is a crowd' in Python 3.
quelle
2 is a crowd
(in Python 2, 3 in Python 3).2 is company
(in Python 2) oder3 is a crowd
(in Python 3).JavaScript, -46,7%
Sie können es hier ausführen, wenn Sie bereit sind (raten Sie zuerst!). Wenn Sie im JS-Bedienfeld weit genug nach unten scrollen, wird der Code mit einer kurzen Erläuterung angezeigt.
Korrekte Antwort:
Wertung:
quelle
Please enter a number:
und gibt Ihre Antwort gefolgt von zurücktrue
.That's a big number
nach einer Verzögerung, die der von Ihnen eingegebenen Zahl in ms entspricht.Javascript
Antwort: Es warnt
Hello
. Dieconcat
Methode ändert das Array nicht - sie gibt ein Array zurück, das die Verkettung des aufgerufenen Arrays und aller anderen angegebenen Argumente enthält.15 richtig, 26 falsch, 41 Antworten insgesamt und die Punktzahl ist (26-15) / 41 = 11/41 = 26,83%
quelle
Hello, world!
Hello
Python 33,3%
Hinweis: Angenommen, dies ist Python 2.x und nicht Python 3.
Beim Ausführen wurde mit diesem Code ein
UnboundLocalError: local variable 'True' referenced before assignment
.quelle
SyntaxError
False, True = True, False
?True
.UnboundLocalError
.Java
Erster Codegolfversuch ...
gute
Some ungodly gibberish and then some more.
antwort : drucke und eine newlineBewertung:
Prüfungsergebnis: 9% (55% im pedantischen Modus)
quelle
Some ungodly gibberish and then some more.
Some ungodly gibberish
mit einem NewlineC # 62.5%
Dies ist mein erster Code Golf.
Die richtige Antwort war: "Etwas zwischen 55 und 110". Dies liegt daran, dass bei jeder Ausführung der Anweisung "sum + = i" der aktuelle Wert von i verwendet wird. Dieser Code wird möglicherweise sogar ausgeführt, nachdem die for-Schleife ausgeführt wurde. Zu diesem Zeitpunkt hat i den Wert 11. Dies ergibt den höchstmöglichen Wert 110 (und Sie können sicherstellen, dass er angezeigt wird, wenn Sie das Lambda in Ihren Tests verlangsamen). Der kleinstmögliche Wert ist sum (1..10) und beträgt 55.
Punktzahl: Genau genommen hat es niemand richtig gemacht, daher sollte die Punktzahl (5-0) / 8 = 62,5% betragen. Wenn wir bereit sind, "ungefähr gut" als richtige Antwort zu zählen, ist die Punktzahl (5-5) / 8 = 0%.
quelle
Python, -83,3%
Antwort: Druckt,
a < b
wenn die Eingaben gleich sind,a = b
wenn die erste größer ist unda > b
wenn die zweite größer ist.Erläuterung:
cmp(a, b)
Gibt zurück,0
wenn beide Argumente gleich sind,1
wenn das erste größer und-1
das erste kleiner ist. Aus diesem Grund wird das falsche Vergleichssymbol gedruckt.quelle
a = b
für Eingabe a == b,a < b
für Eingabe a> b unda > b
für Eingabe a <ba = b
wenn a> b,a < b
wenn a == b,a > b
wenn a < b. (Dies ist wahrscheinlich, was @Foon bedeutete.)PHP, 100%
Zum ersten Mal in Code Gulf posten, hoffentlich ist das nicht so schlimm.
korrekte Ausgabe ist 'hellohelloworld'
Punktzahl ist (10 - 0) / 10 = 1 = 100%
quelle
hello world
.'one' == 0
=>true
. Ziemlich schlau.Perl: 100% (4-0) / 4
Dieses Programm gibt "3" ohne eine neue Zeile aus. Perl analysiert diese Anweisung als
so wird nur das
(1+2)
als argument an übergebenprint
.quelle
9
gefolgt von einer neuen ZeileC #
quelle
CPython
korrekte Ausgabe ist 'Hallo'
Ergebnis (14-3) / 19 == 57,9%
quelle
Hello\nWorld!
.Hello
. (Implementierungsabhängig.)C (Ergebnis: 4,45%)
Gute Vermutungen: 7
Maximum der falschen Vermutungen: 6 + 2 = 8
Gesamte Vermutungen: 6 + 7 + 3 + 2 + 4 = 22
Lösung: Ist
??/
ein Trigraph für\
, so wird die neuescanf
Zeile ausgeblendet und die Zeile auskommentiert . Daher läuft das Programm für immer und drucktGuess a number between 1 and 10:
. Die Kommentare sind ein Zitat von Mozart (viafortune
).Spoiler, wie kompiliert und ausgeführt wird:
quelle
"Guess a number between 1 and 10: Guess a number between 1 and 10: Guess a number between 1 and 10: " (and so on)
ohneJava
Die Antwort
Es wird gedruckt
Padded value:
(mit einer neuen Zeile).Die
format
Methode von String iststatic
, wobei das Format als erster Parameter übergeben wird. Dh der obige Aufruf entspricht:Anzahl guter Antworten: 2 Falsche Antworten: 9
Ergebnis : (9-2) / 11 = 63%
quelle
Padded value: - 0012\n
C
Ergebnis = (3-16) / 19 == -68,4%
Vergiss dein Handtuch nicht.
quelle
C ++
Ergebnis = (1 - 6) / 7 = -0,71428571428571 = -71,428571428571%
quelle
JavaScript
quelle
Z = false
.Python
korrekte Ausgabe ist 'hell0 w0rld'
Ergebnis (8-14) / 22 == -27,3%
quelle
hell0 w0rld
R: 100%
Nicht so einfallsreich, könnte aber einige Leute verwirren:
Was denkst du ist das Ergebnis?
Bearbeiten :
Die Antwort war 20. Aufgrund eines Fehlens
s
instringAsFactors
(anstelle vonstringsAsFactors
) wird das Argument nicht erkannt, sodass die Funktion eine neue Spalte mit dem Namen erstelltstringAsFactors
. Aufgrund des Vektorrecyclings enthält die Säule 10-mal,TRUE
die1
in der Summe in s umgewandelt werden , also insgesamt 20 und nicht 10.Diese Antwort wurde in den Kommentaren nicht gegeben. Es wurden 3 Antworten gegeben (alle sagen
10
mehr oder weniger). Also eine Punktzahl von 100%, denke ich.quelle
10
.Tcl
Inspiriert von ugoren
Sorry, habe einen Beispielstring vergessen. Ok, lauf als
Richtige Lösung bearbeiten : Es wird überhaupt nicht gefiltert. ( 6x )
Max falsche Antwort: 4x
Alle Antworten: 10
Punkte: -0.2
quelle
" "
,"&"
,"\"
.