Escriba un programa que aparentemente agregue los números 2 y 2 y produzca 5. Este es un concurso oculto.
Su programa no puede generar ningún error. ¡Cuidado con los agujeros de memoria! La entrada es opcional.
¡Redefinir 2 + 2 como 5 no es muy creativo! No lo pienses dos veces, prueba con otra cosa.
echo "2+2=5";
Respuestas:
Java
La reflexión es, de hecho, la forma correcta de abusar de Java ... pero necesita profundizar más que simplemente ajustar algunos valores.
Salida:
Explicación:
Advertencia: Hacer esto en código real hará que la gente sea muy infeliz.
Código de demostración en ideone .
fuente
Integer[] array = (Integer[]) c.get(cache); fisherYatesShuffle(array);
Solo imagine cuántas cosas se romperían ...Haskell
Me encanta cómo puedes arrojarle algo a ghci y todo funciona.
fuente
let 2+2=5 in 5+5
hacer? ಠ_ಠNon-exhaustive patterns in function +
: estoy definiendo una nueva función (+) aquí, y si conecto algo que no2+2
sea, se producirá un error porque nunca definí lo que debería suceder en ese caso.C
Truco bastante barato, pero estoy seguro de que atraparé a la mayoría de ustedes.
Pruébalo aquí
fuente
GolfScript
Impresiones
5
.fuente
Java
Siempre tienen que redondear sus dobles, amigos
Salida:
Explicación:
fuente
Math.ceil(two + two); // round just in case
Veo lo que hiciste allítwo
. Java de grado de producción esTwo two = Two.two.two();
con Two.two siendo del tipo TwoFactory.BBC BASIC
EDITAR: Para Andrea Faulds y Squeamish Ossifrage, una versión más convincente con un intérprete diferente: http://sourceforge.net/projects/napoleonbrandy/
La imagen original con el emulador en http://bbcbasic.co.uk/bbcwin/bbcwin.html . (con un código ligeramente diferente) se puede ver en el historial de edición.
fuente
2+3=5
y2+2=5'
VDU 23,52,126,96,124,6,6,102,60,0
Brainfuck
Salida:
Probarlo aquí .
Sé que esto puede sonar un poco simple, pero traté de ser creativo, como se sugiere en la publicación original.
fuente
+++++.
puedes pintar cualquier cosa.Golpetazo
Dado que este es un concurso de popularidad , creo que debería usar un método de largo aliento ...
Para las personas que no conocen Bash:
$((...expr...))
es una sintaxis para evaluar expresiones aritméticas.$(bc<<<...expr...)
hace lo mismo usando labc
calculadora de línea de comandos.Salida
Explicación
fuente
15
lugar de16
en la línea 4. Afortunadamente, todavía funcionó debido albc
redondeo((v = v * 5))
o((v *= 5))
+=
cosa de inmediato.v=2
yv+=2
): para alguien que no esté familiarizado con el manejo de variables Bash, eso sería equivalente a2+2
, pero de hecho"2"+"2"
, es decir"22"
. los otros comentarios en el código solo son incorrectos debido a esto. Lo sé, no todo el mundo encuentra este divertidoPitón
Inspirado por la respuesta de Java:
Una versión más ofuscada
Más allá de 2 + 2
Como OP mencionó, 2 + 2 puede ser un poco aburrido; Así que aquí hay un código más limpio, multiplataforma y de ancho múltiple para el abuso sin sentido.
Ejecutando con Python 2.7 ... ignore esa línea al final. Funciona en Windows de 64 bits y Ubuntu de 32 bits, los dos sistemas a los que tengo fácil acceso.
Como era de esperar, podemos romper la propiedad asociativa de la suma, donde ( a + b ) + c = a + ( b + c ), como se ve en las
1+2+3
líneas 1 y 2 , pero inexplicablemente también rompemos la propiedad conmutativa (donde a + b = b + a ; 2da y 3ra líneas). Me pregunto si el intérprete de Python ignora los paréntesis superfluos alrededor de las expresiones de suma.fuente
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')
Es una primera versión modificada. Hice esto para poder colocarlo en $ PYTHONSTARTUP en / etc / profile como equipo rojo en las competiciones de pirateo.JavaScript:
Compruébelo en http://jsfiddle.net/qhRJY/
fuente
JavaScript
Puedes verlo en una calculadora diferente aquí .
fuente
PHP
Que produce:
fuente
PHP
ejemplo:$a=2;echo "2+2=".$a++ + $a++;
JavaScript
fuente
=
en lugar de==
, fácil de ver y, francamente, poco inspirado.=
sólo como un assigment pero un operador de comparación (por ejemplo, Pascal, SQL, VB)C#
fuente
;
after, que fue perfectamente intencional ya que estaba usando el bucle vacío para avanzar un cursor. Accidentalmente eliminé el punto y coma, todo explotó y no pude entender por qué.Es peligroso decorar tu Javascript con arte ASCII.
fuente
--
operador era aceptable, ya que debería equivocarseInvalid left-hand side expression in prefix operation
; Sin embargo, me di cuenta de que hay un espacio en blanco entre ellos.Golpetazo
Salida:
Aquí está otro:
fuente
set a to {1, 2, 3, 4, 5, 6, 7, 8}
item 4 of a
zsh
usa matrices indexadas en 1 (y$arr[0]
simplemente no está definido o no está definido o algo así), a menos que se establezca laKSH_ARRAYS
opción, en cuyo caso las matrices están indexadas en 0.Perl
fuente
R
salida:
5
fuente
Java
salida:
Probablemente funciona en cualquier idioma que use el mismo tipo de dobles.
fuente
_2_56 + _2_56 = _5_12
), pero parece más probable que quiera decir256.000000000000_2_ + 256.000000000000_2_ = 512.000000000000_5_
(nota: los subrayados solían "poner en negrita" los dígitos.)Befunge
Esto está escrito en Befunge, pero está diseñado para parecerse a Python.
Cuando se ejecuta (con el intérprete correcto) se imprimirá el programa
5
.Explicación:
fuente
JavaScript
Código:
Salida:
Puede probarlo usted mismo en su consola o consultar este Fiddle
fuente
U+0431
es б, ¡casi 6!C (Linux, gcc 4.7.3)
Imprime 2 + 2 = 5
Entonces a = 2, ¿verdad?
fuente
FORTRAN 77
fuente
2=3
Pitón
El código imprime 5, que es la respuesta correcta para esta tarea.
Editar: Aquí hay una versión alternativa que agrega enteros, no dos en cadena.
fuente
~eval(`a`)
lugar de solo~a
?int()
funcionalidad yeval()
hace el trabajo si la entrada es un número entero stringified :)Rubí
Los efectos secundarios de esto son incluso peores que la versión de Java.
fuente
Rubí
Ruby tiene ambientes de primera clase. Esto significa muchas cosas. También significa que se pueden hacer muchas cosas que ... tal vez no deberían.
El resultado de esto es:
Si desea comprender más sobre las alegrías y los peligros de esto, Ruby Conf 2011 Mantener a Ruby Razonable y lea entornos de primera clase del blog Abstract Heresies.
fuente
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
Esquema
fuente
2+2
¡no es cómo haces la suma en lisp!((((2))(()()))()()(()((((+))))()(((()(())((((2)))))()))(())))
.C#
Para alguien no familiar, esto parecerá que estoy obteniendo un rango que comienza y termina en 2. En realidad, comienza en 2 y va por dos números. Entonces 2 + 3 = 5.
fuente
{ 2 }
, ¿no?Enumerable.Range
no toma un inicio y un final, toma un inicio y un recuento (de elementos que se enumerarán).F#
Pongamos en fsi la siguiente declaración:
Salida:
fuente
C
El
5
no está muy bien escondido, me temo. No funciona con optimización.fuente