Schreiben Sie ein Programm, das scheinbar die Zahlen 2 und 2 addiert und 5 ausgibt.
Ihr Programm kann keine Fehler ausgeben. Achten Sie auf Erinnerungslöcher! Die Eingabe ist optional.
2 + 2 als 5 neu zu definieren ist nicht sehr kreativ! Denken Sie nicht doppelt, probieren Sie etwas anderes.
echo "2+2=5";
Antworten:
Java
Reflexion ist in der Tat der richtige Weg, um Java zu missbrauchen ... aber Sie müssen tiefer gehen, als nur einige Werte zu optimieren.
Ausgabe:
Erläuterung:
Warnung: Wenn Sie dies in echtem Code tun, werden die Leute sehr unglücklich.
Code Demo auf Ideone .
quelle
Integer[] array = (Integer[]) c.get(cache); fisherYatesShuffle(array);
Stellen Sie sich vor , wie viele Dinge brechen würden ...Haskell
Ich liebe es einfach, wie man alles auf ghci wirft und es total mitrollt.
quelle
let 2+2=5 in 5+5
das? ಠ_ಠNon-exhaustive patterns in function +
- Ich definiere hier eine neue Funktion (+) und wenn ich etwas einstecke, das nicht der2+2
Fall ist , wird ein Fehler ausgegeben, da ich nie definiert habe, was in diesem Fall passieren soll.C
Ziemlich billiger Trick, aber ich bin sicher, ich werde die meisten von Ihnen fangen.
Probieren Sie es hier aus
quelle
GolfScript
Druckt
5
.quelle
Java
Müssen immer Ihre Doppel runden, Leute
Ausgabe:
Erläuterung:
quelle
Math.ceil(two + two); // round just in case
Ich verstehe, was Sie dort getan habentwo
. Java in Produktionsqualität istTwo two = Two.two.two();
mit Two.two vom Typ TwoFactory.BBC BASIC
EDIT: Für Andrea Faulds und Squeamish Ossifrage eine überzeugendere Version mit einem anderen Interpreter: http://sourceforge.net/projects/napoleonbrandy/
Das Originalbild mit dem Emulator unter http://bbcbasic.co.uk/bbcwin/bbcwin.html . (mit etwas anderem Code) ist im Bearbeitungsverlauf zu sehen.
quelle
2+3=5
und2+2=5'
VDU 23,52,126,96,124,6,6,102,60,0
Brainfuck
Ausgabe:
Probieren Sie es hier aus .
Ich weiß, dass dies ein wenig zu einfach klingt, aber ich habe versucht, kreativ zu sein, wie im ursprünglichen Beitrag vorgeschlagen.
quelle
+++++.
hast, kannst du alles malen.Bash
Da dies ein Beliebtheitswettbewerb ist , sollte ich eine langwierige Methode anwenden ...
Für Leute, die Bash nicht kennen:
$((...expr...))
ist eine Syntax zum Auswerten von arithmetischen Ausdrücken.$(bc<<<...expr...)
tut dasselbe mit dembc
Kommandozeilenrechner.Ausgabe
Erläuterung
quelle
15
statt16
in Zeile 4 geschrieben habe. Zum Glück hat es immer noch funktioniert, weilbc
's rundet((v = v * 5))
oder((v *= 5))
+=
Ding sofort entdeckt.v=2
undv+=2
): Für jemanden, der mit der Handhabung von Bash-Variablen nicht vertraut ist, wäre dies äquivalent2+2
, aber es ist tatsächlich so"2"+"2"
, dh"22"
. Die anderen Kommentare im Code sind nur deswegen falsch. Ich weiß, nicht jeder findet das lustigPython
Inspiriert von der Java-Antwort:
Eine verschleierte Version
Jenseits von 2 + 2
Wie OP erwähnt, kann 2 + 2 ein bisschen langweilig sein; Hier ist also ein sauberer, plattformübergreifender Code mit mehreren Breiten für mutwilligen Missbrauch.
Läuft mit Python 2.7 ... ignoriere diese Zeile am Ende. Funktioniert unter Windows 64-Bit und Ubuntu 32-Bit, die beiden Systeme, auf die ich einfachen Zugriff habe.
Es ist nicht überraschend, dass wir die assoziative Eigenschaft der Addition brechen können, wobei ( a + b ) + c = a + ( b + c ), wie in der 1. und 2.
1+2+3
Zeile gezeigt, aber unerklärlicherweise auch die kommutative Eigenschaft (wobei a + b) = b + a ; 2. und 3. Zeile). Ich frage mich, ob der Python-Interpreter überflüssige Klammern um Additionsausdrücke einfach ignoriert.quelle
exec('\x66\x72\x6f\x6d\x20\x63\x74\x79\ \x70\x65\x73\x20\x69\x6d\x70\x6f\ \x72\x74\x20\x63\x5f\x69\x6e\x74\ \x38\x3b\x20\x69\x6d\x70\x6f\x72\ \x74\x20\x73\x74\x72\x75\x63\x74\ \x3b\x20\x63\x5f\x69\x6e\x74\x38\ \x2e\x66\x72\x6f\x6d\x5f\x61\x64\ \x64\x72\x65\x73\x73\x28\x69\x64\ \x28\x34\x29\x20\x2b\x20\x73\x74\ \x72\x75\x63\x74\x2e\x63\x61\x6c\ \x63\x73\x69\x7a\x65\x28\x27\x50\ \x50\x27\x29\x29\x2e\x76\x61\x6c\ \x75\x65\x3d\x35')
Ist eine modifizierte erste Version. Ich habe das gemacht, damit ich es als rotes Team in Hacking-Wettbewerben in $ PYTHONSTARTUP in / etc / profile ablegen kann.JavaScript:
Überprüfen Sie es auf http://jsfiddle.net/qhRJY/
quelle
JavaScript
Sie können es hier auf einem anderen Rechner sehen .
quelle
PHP
Welches produziert:
quelle
PHP
Beispiel:$a=2;echo "2+2=".$a++ + $a++;
JavaScript
quelle
=
statt==
, leicht zu sehen und ehrlich gesagt eher einfallslos.=
nur als Assigment verwendet, sondern als Vergleichsoperator (z. B. Pascal, SQL, VB)C #
quelle
;
danach, was durchaus beabsichtigt war, da ich die leere Schleife zum Vorrücken eines Cursors verwendete. Ich habe versehentlich das Semikolon entfernt, alles ist in die Luft gesprengt, und ich konnte nicht herausfinden, warum.Es ist gefährlich, Ihr Javascript mit ASCII-Kunst zu dekorieren.
quelle
--
Operator akzeptabel ist, da er Fehler machen sollteInvalid left-hand side expression in prefix operation
. Ich erkannte jedoch, dass zwischen ihnen ein Leerzeichen ist.Bash
Ausgabe:
Hier ist ein anderes:
quelle
set a to {1, 2, 3, 4, 5, 6, 7, 8}
item 4 of a
zsh
Verwendet 1-indizierte Arrays (und$arr[0]
ist einfach nicht gesetzt oder undefiniert oder so), sofern dieKSH_ARRAYS
Option nicht gesetzt ist. In diesem Fall sind Arrays 0-indiziert.Perl
quelle
R
Ausgabe:
5
quelle
Java
Ausgabe:
Funktioniert wahrscheinlich in jeder Sprache, die die gleiche Art von Double verwendet.
quelle
_2_56 + _2_56 = _5_12
), aber es ist wahrscheinlicher, dass Sie meinen256.000000000000_2_ + 256.000000000000_2_ = 512.000000000000_5_
(Hinweis: Unterstriche, die verwendet wurden, um die Ziffern "fett" zu machen.Befunge
Dies ist in Befunge geschrieben, sieht aber wie Python aus.
Beim Ausführen (mit dem richtigen Interpreter) wird das Programm gedruckt
5
.Erläuterung:
quelle
JavaScript
Code:
Ausgabe:
Sie können es selbst auf Ihrer Konsole testen oder diese Geige überprüfen
quelle
U+0431
á ist - fast 6!C (Linux, gcc 4.7.3)
Es wird 2 + 2 = 5 ausgegeben
Also a = 2, richtig?
quelle
FORTRAN 77
quelle
2=3
Python
Der Code gibt 5 aus, was die richtige Antwort für diese Aufgabe ist.
Bearbeiten: Hier ist eine alternative Version, in der ganze Zahlen hinzugefügt werden, nicht zwei.
quelle
~eval(`a`)
statt nur~a
?int()
Funktionen verlassen undeval()
erledige die Aufgabe, wenn die Eingabe eine Ganzzahl mit String ist :)Rubin
Die Nebenwirkungen sind noch schlimmer als bei der Java-Version.
quelle
Rubin
Ruby hat erstklassige Umgebungen. Das bedeutet viele Dinge. Es bedeutet auch, dass viele Dinge getan werden können, die vielleicht nicht getan werden sollten.
Die Ausgabe davon ist:
Wenn Sie mehr über die Freuden und Gefahren verstehen möchten, lesen Sie Ruby Conf 2011 Keeping Ruby Reasonable und erstklassige Umgebungen im Abstract Heresies-Blog.
quelle
class Fixnum; def +(n) 5 end end; 2 + 2 # => 5
class Fixnum; alias_method :orig_plus, :+; protected :orig_plus; def +(n) self == 2 && n == 2 ? 5 : self.orig_plus(n) end end
Planen
quelle
2+2
ist nicht so, wie du Addition in Lisp machst!((((2))(()()))()()(()((((+))))()(((()(())((((2)))))()))(())))
.C #
Für jemanden, der nicht vertraut ist, sieht es so aus, als würde ein Bereich bei 2 beginnen und enden. In Wirklichkeit beginnt er bei 2 und gilt für zwei Zahlen. Also 2 + 3 = 5.
quelle
{ 2 }
, nicht wahr?Enumerable.Range
braucht keinen Anfang und kein Ende, sondern einen Anfang und eine Zählung (von Elementen, die aufgezählt werden).F #
Lassen Sie uns folgende Anweisung in fsi einfügen:
Ausgabe:
quelle
C
Das
5
ist leider nicht so gut versteckt. Funktioniert nicht mit Optimierung.quelle