Escriba un fragmento, una función, un programa, ... que se ofusque de una manera que a primera vista parezca claro que hace otra cosa.
Por ejemplo: escriba un poco de código que agregue dos números, pero cuando le pregunte a alguien "¿qué hace?", Él le dirá que imprime "¡Hola, Mundo!".
Reglas
- El código debe ser legible para alguien que conozca aproximadamente el idioma que usa (evite el lenguaje intrínseco ofuscado como APL, en su propio interés).
- El código debe hacer algo inesperado que el lector inicialmente no pudo predecir.
- Cuando le preguntas a diferentes lectores, deben tener la misma opinión (incorrecta) sobre lo que hace el código.
Clasificación
- Lea los códigos de otros concursantes durante un máximo de 10-20 segundos, solo para tener una buena idea de lo que sucede allí.
- Agregue un comentario a la respuesta que diga qué cree que hace el código. Si la respuesta que desea dar ya está allí, simplemente haga +1 en el comentario. (si pierde esa respuesta y agrega otro comentario, no se preocupe, no se contará como otra respuesta).
- Los puntos se perderán de esta manera: (
maxFalseOpinion
-goodGuess
) /totalOpinion
(ver ejemplo a continuación). - Califique a otros concursantes con juego limpio y no comente su propio código.
- Solo agregue comentarios útiles. Evite "No sé" y "¡bueno!", No se tienen en cuenta para la calificación, pero es el código y no las calificaciones las que deben ofuscarse.
Ejemplo de calificación
El fragmento agrega dos números. Los comentarios dicen:
(3) Muestra "¡Hola, mundo!"
(1) Resta 2 números.
(2) Agrega 2 números.
La cantidad total de puntos es la cantidad máxima de opiniones (3): la cantidad de buenas conjeturas (2) dividida por la cantidad total de conjeturas (3 + 1 + 2 = 6). Resultado: (3 - 2) / 6 = 1/6 = 16.67% .
MÁS SOBRE PUNTOS
La gente parece tener algunos problemas para descubrir los puntos.
Aquí hay una puntuación perfecta:
printf('Hello World');
comentarios:
muestra la cantidad de veces que ha hecho clic en un botón. (17 comentarios).
TOTAL: 17 comentarios
Puntuación: (17-0) / 17 = 1 = 100%
Aquí hay una puntuación pobre:
printf('Hello World');
comentarios:
Imprime "Hello World". (13 comentarios).
TOTAL: 13 comentarios
Puntuación: (0-13) / 13 = -1 = -100%
Aquí hay un puntaje no tan malo:
printf('Hello World');
comentarios:
imprime el nombre de usuario. (2 comentarios)
Muestra la hora actual (15 comentarios).
Devuelve lo que ingresó sin modificación. (3 comentarios).
Imprime "Hola Mundo" (1 comentario).
TOTAL: 21 comentarios
Puntuación: (15 - 1) / 21 = 0.6667 = 66.67%
Explicación:
15 es la suposición principal, lo que la gente dijo más. 1 es el número correcto de conjeturas. 21 es la suma de todos los comentarios.
fuente
Respuestas:
Javascript
Respuesta: sale
1
. Los comentarios a continuación lo explican bastante bien: hay dos variables diferentes aquí, una - 'LETRA A LETINA PEQUEÑA A' y '- LETRA A PEQUEÑA CÍRILICA A' .Hubo 1 respuesta correcta, 50 personas pensaron que da como resultado 2, y con un total de 52 respuestas, el puntaje es (50 - 1) / 52 = 49/52 = 94,23%
fuente
2
o al menos eso es lo que espero :)C, puntaje 33.3%
correr
./prog 'Hello & goodbye, world!'
Puntuación
La respuesta correcta es
H\n
(while
es parte del comentario, gracias a la línea que termina con\
, por lo que no hay bucle), dada por 6 personas.El error más popular fue
Hello goodbye, world\n
, dado por 25 personas.(25 - 6) / 57 = 33,3%.
Gracias a Olivier Dulac por molestarse en calcular.
fuente
H\n
.Hello goodbye, world!
(no \ n) (2 espacios después de Hello)Pitón
Clasificación
Buena respuesta: impresiones
0 1 4 9 16 25 36 49 64 64
, cada número en una línea.Explicación: a pesar de que nadie obtuvo la respuesta correcta, considero que esto fue un intento fallido, porque nadie cometió el error que había pretendido. (Agregaré una explicación real más adelante si nadie más lo hace).
Número de buenas respuestas: 0
Número de personas con la misma respuesta incorrecta: 7
Número total de respuestas: 11
Puntuación: 63,64% (redondeado a dos decimales)
Explicación
Primero,
a
se crea una lista y se llena con valoresi * ++i
. No hay ningún++
operador en Python, pero hay un+
operador unario , que no hace nada para los enteros, y aplicarlo dos veces aún no hace nada. Entoncesa
contiene los cuadrados de los enteros de0
a9
.Lo había puesto
++
como una distracción y esperaba que la mayoría de los votantes continuara, pensando que habían encontrado la trampa y caían en la trampa real. No funcionó. Algunos pensaron que++
se trataba de un error de sintaxis, y otros aún buscaron la trampa.La trampa La trampa estaba en el segundo bucle for:
Estaba seguro de que la mayoría de la gente pensaría que esto imprime todo
a[i]
, es decir0 1 4 9 16 25 36 49 64 81
, cada número en una línea. Eso es lo que obtienes con esta variaton, por ejemplo:x
se le asignan los valoresa
y luegox
se imprime. En la primera versión,a[i]
se le asignan los valoresa
, y luegoa[i]
se imprime. La diferencia es que en nuestro caso lo tenemosi == 9
, y por lo tanto el valor dea[9]
se cambia cada vez a través del ciclo. Cuando finalmentea[9]
se imprime, tiene el valor dea[8]
y, por lo tanto,64
se imprime nuevamente.fuente
++
en Python).SyntaxError
en el segundofor
.81
diez vecesSyntaxError
en el segundofor
. Esto es increíble. Esto realmente debería ganar. Me tomó 5 minutos entender lo que estaba pasando jaja.JavaScript , puntuación de -100%
No inventé esto, Gary Bernhardt sí, pero es uno de mis favoritos
fuente
-100%
? ...Python, -54.8%
Respuesta: plantea
SyntaxError: not a chance
Explicación:
from __future__ import braces
es uno de los huevos de pascua en Python. Se entiende como una broma, diciendo que Python nunca usará llaves para determinar el alcance en el futuro.fuente
SyntaxError: not a chance
Perl, 26.67%
Resultados:
Esto imprime "Soy ambivalente acerca de decir cualquier cosa".
my $num1,$num2 = @_;
le faltan paréntesis. Por lo tanto, es equivalente amy $num1; $num2 = @_;
.$num1
no se pone a nada.Por
$num1
lo tanto, nunca es mayor que cero. La parte sobre el mundo secreto de los peces escondido en la pantalla es, err, un arenque rojo, para que la gente piense que ha encontrado el "truco".Además, el operador ternario es un valor l en Perl: en
1 ? $a = 1 : $b = 2
realidad significa(1 ? $a = 1 : $b) = 2
. Lo que($a = 1) = 2
se evalúa significa establecer$a
en2
. Contrariamente a las apariencias, se asigna la segunda cadena$num1
.En caso de que se lo pregunte,
//
es el operador definido u. Si el sub devuelve un valor indefinido, la cadena"Stuff did not happen."
se imprimirá. Pero en realidad no sucede. Fue solo para dar a la gente otra opción.Puntuación:
Total correcto: 5
Total de conjeturas: 30
Puntuación: (13-5) / 30 = 26.67%
fuente
This is a secret fish world. Carp cannot be repressed!
.Hello, world!
.1 ? $a = 1 : $b = 2
en realidad significa(1 ? $a = 1 : $b) = 2
. Lo que significa($a = 1) = 2
se evalúa, estableciendo$a
en 2. Además, como señaló Primo,my $num1, $num2 = @_;
no hace lo que espera porque faltan los paréntesis.PHP 52%
(Copiado textualmente de aquí )
Explicación y puntaje
fuente
train
.C ++ 28.9%
Solución
Puntuación
Cortesía de Alvin Wong.
HelloWorld
(considerando que minitech y zeel son lo mismo)Hello\nworld
3 pensó otra cosa.fuente
cout
si se llama sin parámetros.HelloWorld
.Rubí, 100%
Respuesta correcta:
Puntuación: 3 de la misma respuesta incorrecta, no hay otras respuestas.
fuente
Python, -28.13%
Esto se imprime
11
porque elelse
bloque, que pertenece alwhile
, se ejecuta después de salir del bucle.Puntuación: (8-17) / 32 = -28.13%
fuente
else:
11
en una línea.Python: Calificación: -27%
El programa imprime:
Valoración: Total de opiniones: 22 12 correcto 3 + 1 + 6 incorrecto [para la respuesta de Bakuiru, diría que estaba cerca pero aún así incorrecto ya que os.name es una cadena (os.uname es una función)]
Calificación basada en esa suposición y mi comprensión del sistema de calificación: Máximo incorrecto = 6 Correcto = 12 Puntuación = (6-12) / 22 = -27%
fuente
What is your name: [operating system name]
,What is your quest: Seek and find the holy grail
,What is your favourite color: blue
en líneas separadas. Obviamente[operating system name]
se reemplaza por el nombre real.name = "Robin"
,seek = "Seek and find holy grail"
yfavorite_color = "red"
, oh, no.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
yWhat is your favorite color: blue
en líneas separadas.Pitón
editar:
puntaje (8-1) / 9 == 77.7%
la salida correcta es '2 is company' en python 2, '3 is a crowd' en python 3.
fuente
2 is a crowd
(en Python 2, 3 en Python 3).2 is company
(en Python 2) o3 is a crowd
(en Python 3).JavaScript, -46.7%
Puede ejecutarlo aquí cuando esté listo (¡adivine primero!). Si se desplaza hacia abajo lo suficiente en el panel JS, verá el código con una breve explicación.
Respuesta correcta:
Puntuación:
fuente
Please enter a number:
y le devuelve la respuesta seguida detrue
.That's a big number
después de un retraso igual al número que ingresó en ms.Javascript
Respuesta: alerta
Hello
. Elconcat
método no modifica la matriz: devuelve una matriz que contiene la concatenación de la matriz a la que se llama y cualquier otro argumento proporcionado.15 correctas, 26 incorrectas, 41 respuestas en total y la puntuación es (26-15) / 41 = 11/41 = 26,83%
fuente
Hello, world!
Hello
Python 33.3%
Nota: Suponga que esto es Python 2.x, y no Python 3.
Cuando se ejecuta, este código produce un
UnboundLocalError: local variable 'True' referenced before assignment
.fuente
SyntaxError
False, True = True, False
?True
.UnboundLocalError
.Java
Primer intento de codegolf ...
buena respuesta: impresiones
Some ungodly gibberish and then some more.
y una nueva líneaClasificación:
Puntuación: 9% (55% en modo pedante)
fuente
Some ungodly gibberish and then some more.
Some ungodly gibberish
con una nueva líneaC # 62.5%
Este es mi primer código de golf.
La respuesta correcta fue: "algo entre 55 y 110". Esto se debe a que cada vez que se ejecuta la instrucción "sum + = i", usará el valor actual de i. Este código podría incluso ejecutarse después de que se realiza el ciclo for , en cuyo punto tengo el valor 11. Esto hace que el valor más alto sea 110 (y puede asegurarse de verlo si ralentiza el lambda en su prueba). El valor más pequeño posible es suma (1..10), que es 55.
puntaje: estrictamente hablando, nadie acertó, por lo que el puntaje debería ser (5-0) / 8 = 62.5%. Si estamos dispuestos a contar "aproximadamente bueno" como respuesta correcta, entonces el puntaje es (5-5) / 8 = 0%
fuente
Python, -83.3%
Respuesta: impresiones
a < b
si las entradas son iguales,a = b
si la primera es más grande ya > b
si la segunda es más grande.Explicación:
cmp(a, b)
devuelve0
si ambos argumentos son iguales,1
si el primero es más grande y-1
si el primero es más pequeño, razón por la cual se imprime el símbolo de comparación incorrecto.fuente
a = b
para la entrada a == b,a < b
para la entrada a> b ya > b
para la entrada a <ba = b
si a> b,a < b
si a == b,a > b
si a < b. (Esto es probablemente lo que quería decir @Foon.)PHP, 100%
Publicación por primera vez en golfo de código, con suerte esto no está mal.
la salida correcta es 'hellohelloworld'
el puntaje es (10-0) / 10 = 1 = 100%
fuente
hello world
.'one' == 0
=>true
. Muy inteligente.Perl: 100% (4-0) / 4
Este programa imprime "3" sin una nueva línea. Perl analiza esta instrucción como
entonces solo
(1+2)
se pasa como argumento aprint
.fuente
9
seguidas de una nueva líneaC#
fuente
CPython
la salida correcta es 'Hola'
puntaje (14-3) / 19 == 57.9%
fuente
Hello\nWorld!
.Hello
. (Depende de la implementación.)C (Puntuación: 4.45%)
Buenas conjeturas: 7
Máximo de conjeturas incorrectas: 6 + 2 = 8
Total de conjeturas: 6 + 7 + 3 + 2 + 4 = 22
Solución:
??/
es un trigrafo para\
, por lo que se escapa la nueva línea yscanf
se comenta la línea. Por lo tanto, el programa se ejecuta para siempre, imprimiendoGuess a number between 1 and 10:
. Los comentarios son una cita de Mozart (víafortune
).Spoiler, cómo compilar y ejecutar:
fuente
"Guess a number between 1 and 10: Guess a number between 1 and 10: Guess a number between 1 and 10: " (and so on)
sin pedir informaciónJava
La respuesta
Imprime
Padded value:
(con una nueva línea).El
format
método de String esstatic
, con el formato que se pasa como el primer parámetro. Es decir, la llamada anterior es equivalente a:Número de buenas respuestas: 2 Respuestas incorrectas: 9
Puntuación : (9-2) / 11 = 63%
fuente
Padded value: - 0012\n
C
Puntuación = (3-16) / 19 == -68.4%
No olvides tu toalla.
fuente
C ++
Puntuación = (1 - 6) / 7 = -0.71428571428571 = -71.428571428571%
fuente
JavaScript
fuente
Z = false
.Pitón
la salida correcta es 'hell0 w0rld'
puntaje (8-14) / 22 == -27.3%
fuente
hell0 w0rld
R: 100%
No es tan imaginativo pero podría confundir a algunas personas:
¿Cuál crees que es el resultado?
Editar :
La respuesta fue 20. Debido a una falta
s
enstringAsFactors
( en lugar destringsAsFactors
), el argumento no se reconoce, por lo que la función crea una nueva columna llamadastringAsFactors
. Debido al reciclaje de vectores, la columna contiene 10 vecesTRUE
que se convierten en1
s en la suma, por lo tanto, un total de 20 y no 10.Esta respuesta no se dio en los comentarios. Se dieron 3 respuestas (todas diciendo
10
más o menos). De ahí una puntuación de 100%, supongo.fuente
10
.Tcl
Inspirado por ugoren
Lo sentimos, olvidé una cadena de ejemplo. Ok, corre como
Editar solución correcta: no se filtra en absoluto. ( 6x )
Máxima respuesta incorrecta: 4x
Total de respuestas: 10
Puntuación: -0,2
fuente
" "
,"&"
,"\"
.