Ecrivez un programme qui ajoute apparemment les nombres 2 et 2 et les sorties 5. Ceci est un concours sournois.
Votre programme ne peut générer aucune erreur. Attention aux trous de mémoire! La saisie est facultative.
Redéfinir 2 + 2 en tant que 5 n'est pas très créatif! Ne le double pas, essaie autre chose.
echo "2+2=5";
Réponses:
Java
La réflexion est en effet le bon choix pour abuser de Java ... mais vous devez aller plus loin que de peaufiner certaines valeurs.
Sortie:
Explication:
Avertissement: Faire cela dans un code réel rendra les gens très malheureux.
Code démo sur ideone .
la source
Integer[] array = (Integer[]) c.get(cache); fisherYatesShuffle(array);
Imaginez juste combien de choses se briseraient ...Haskell
J'adore la façon dont on peut jeter n'importe quoi sur ghci et ça roule totalement avec ça.
la source
let 2+2=5 in 5+5
-il? _ಠNon-exhaustive patterns in function +
- Je définis ici une nouvelle fonction (+), et si je branche tout ce qui ne l'est pas,2+2
cela provoquera une erreur car je n'ai jamais défini ce qui devrait se passer dans ce cas.C
Très bon truc mais je suis sûr que je vais piéger la plupart d'entre vous.
Essayez-le ici
la source
GolfScript
Impressions
5
.la source
Java
Il faut toujours arrondir les doubles
Sortie:
Explication:
la source
Math.ceil(two + two); // round just in case
Je vois ce que vous avez fait là-bastwo
. Le grade de production java estTwo two = Two.two.two();
avec Two.two étant du type TwoFactory.BBC BASIC
EDIT: Pour Andrea Faulds et Squeamish Ossifrage, une version plus convaincante utilisant un interprète différent: http://sourceforge.net/projects/napoleonbrandy/
L'image originale utilisant l'émulateur à l' adresse http://bbcbasic.co.uk/bbcwin/bbcwin.html . (avec un code légèrement différent) peut être vu dans l'historique d'édition.
la source
2+3=5
et2+2=5'
VDU 23,52,126,96,124,6,6,102,60,0
Brainfuck
Sortie:
Essayez ici .
Je sais que cela peut sembler un peu simple, mais j'ai essayé d'être créatif, comme suggéré dans le post original.
la source
+++++.
vous pouvez peindre n'importe quoi.Frapper
Comme il s’agit d’un concours de popularité , j’imagine que je devrais utiliser une méthode assez longue ...
Pour les personnes qui ne connaissent pas Bash:
$((...expr...))
est une syntaxe permettant d'évaluer les expressions arithmétiques.$(bc<<<...expr...)
fait la même chose en utilisant labc
calculatrice en ligne de commande.Sortie
Explication
la source
15
au lieu de la16
ligne 4. Heureusement, cela fonctionnait encore à cause debc
l'arrondi((v = v * 5))
ou((v *= 5))
+=
chose.v=2
etv+=2
): pour quelqu'un qui ne connaît pas bien la gestion des variables Bash, cela équivaudrait à2+2
, mais c'est en fait"2"+"2"
, c'est-à-dire"22"
. les autres commentaires du code ne sont erronés que pour cette raison. Je sais, tout le monde ne trouve pas ça drôlePython
Inspiré par la réponse Java:
Une version plus obscure
Au-delà de 2 + 2
Comme OP mentionné, 2 + 2 peut être un peu ennuyeux; voici donc du code plus propre, multiplateforme et multi-largeurs pour abus abusif.
Courir avec Python 2.7 ... ignore cette ligne à la fin. Fonctionne sous Windows 64 bits et Ubuntu 32 bits, les deux systèmes auxquels j'ai facilement accès.
Sans surprise, nous pouvons casser la propriété associative d’addition, où ( a + b ) + c = a + ( b + c ), comme on le voit dans les première et deuxième
1+2+3
lignes, mais inexplicablement, nous cassons aussi la propriété commutative (où a + b = b + a ; 2e et 3e lignes). Je me demande si l'interpréteur Python ignore simplement les parenthèses superflues entourant les expressions d'addition.la source
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')
Est-ce une première version modifiée. Je l'ai fait pour pouvoir le déposer dans $ PYTHONSTARTUP dans / etc / profile en tant qu'équipe rouge lors de compétitions de piratage.JavaScript:
Vérifiez-le à http://jsfiddle.net/qhRJY/
la source
JavaScript
Vous pouvez le voir sur une autre calculatrice ici .
la source
PHP
Qui produit:
la source
PHP
exemple:$a=2;echo "2+2=".$a++ + $a++;
JavaScript
la source
=
au lieu de==
, facile à voir et franchement plutôt sans inspiration.=
uniquement comme assignation mais comme opérateur de comparaison (par exemple, Pascal, SQL, VB)C #
la source
;
après, ce qui était parfaitement intentionnel, car j'utilisais la boucle vide pour faire avancer un curseur. J'ai accidentellement enlevé le point-virgule, tout a explosé et je ne pouvais pas comprendre pourquoi.Il est dangereux de décorer votre Javascript avec de l'art ASCII.
la source
--
opérateur était acceptable car il devrait faire une erreur avecInvalid left-hand side expression in prefix operation
; Cependant, j'ai réalisé qu'il y avait un espace entre eux.Frapper
Sortie:
Voici un autre:
la source
set a to {1, 2, 3, 4, 5, 6, 7, 8}
item 4 of a
zsh
utilise des tableaux à 1 index (et$arr[0]
est simplement non défini, non défini ou quelque chose), sauf si l'KSH_ARRAYS
option est définie, auquel cas les tableaux sont à 0 indexés.Perl
la source
R
sortie:
5
la source
Java
sortie:
Fonctionne probablement dans toutes les langues utilisant le même type de doublons.
la source
_2_56 + _2_56 = _5_12
), mais il semble plus probable que vous vouliez dire256.000000000000_2_ + 256.000000000000_2_ = 512.000000000000_5_
(note: les caractères de soulignement avaient l'habitude de "gras" les chiffres.Befunge
Ceci est écrit en Befunge, mais est conçu pour ressembler à Python.
Lorsqu'il est exécuté (avec l'interprète correct), le programme sera imprimé
5
.Explication:
la source
JavaScript
Code:
Sortie:
Vous pouvez le tester vous-même sur votre console ou consulter ce violon
la source
U+0431
, soit - presque 6!C (Linux, gcc 4.7.3)
Il imprime 2 + 2 = 5
Donc a = 2, non?
la source
Fortran 77
la source
2=3
Python
Le code affiche 5, ce qui est la réponse correcte pour cette tâche.
Edit: Voici une version alternative qui ajoute des entiers, pas des deux stringifiés.
la source
~eval(`a`)
au lieu de juste~a
?int()
fonctionnalité eteval()
faire le travail si l'entrée est un entier stringifié :)Rubis
Les effets secondaires sont encore pires que ceux de la version Java.
la source
Rubis
Ruby a des environnements de première classe. Cela signifie beaucoup de choses. Cela signifie également que beaucoup de choses peuvent être faites ... peut-être que non.
La sortie de ceci est:
Si vous voulez en savoir plus sur les joies et les dangers de cette expérience , Ruby Conf 2011 Gardez Ruby raisonnable et lisez les environnements de première classe du blog Abstract Heresies.
la source
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
Schème
la source
2+2
n'est pas comment vous faites plus dans le lisp!((((2))(()()))()()(()((((+))))()(((()(())((((2)))))()))(())))
.C #
Pour ceux qui ne sont pas familiers, cela donne l’impression que la plage commence et se termine à 2. En réalité, elle commence à 2 et comprend deux chiffres. Donc 2 + 3 = 5.
la source
{ 2 }
, n'est-ce pas?Enumerable.Range
ne prend pas un début et une fin, mais un début et un nombre d'éléments (qui seront énumérés).F#
Mettons dans la déclaration suivante fsi:
Sortie:
la source
C
Le
5
n'est pas trop bien caché, j'ai peur. Ne fonctionne pas avec l'optimisation.la source