Escribe una función que contenga cinco líneas.
Si ejecuta la función tal como está, debería devolver 0.
Si elimina cualquiera de las cinco líneas y ejecuta la función, debería indicarle cuál de las líneas se ha eliminado (por ejemplo, si elimina la línea final, debería devolver 5).
La brevedad, la novedad y la elegancia merecen consideración. La solución más votada (después de un tiempo razonable) gana.
popularity-contest
function
jawns317
fuente
fuente
Respuestas:
Rubí
Evitando los números mágicos ya que no es un código de golf.
Cada línea elimina su propio número
1^2^3^4^5
. Es Ruby, por lo que la última línea define el valor de retorno.fuente
JavaScript (
13477696560 caracteres)→ demostración en vivo ←
llama a esta función con n = 10.
Versión anterior:
65 caracteres
(debe llamarse con n = 15)
69 caracteres
(debe llamarse con n = 15)
77 caracteres
134 caracteres
no golfizado
fuente
var a
después dereturn
hacer? En teoría, no debería ser alcanzado.Pitón
Si se permiten parámetros, esto funcionará:
fuente
R
La función utiliza "constantes" incorporadas y asigna otro valor a cada una de ellas. Si todas estas variables son iguales al nuevo valor, la función devuelve 0. Los valores lógicos se transforman en numéricos debido a los operadores matemáticos. Los paréntesis alrededor de la cuarta línea permiten devolver visiblemente su resultado (si es el último comando).
fuente
Lua 5.2+
55 caracteres en el cuerpo de la función excluyendo nuevas líneas. No se me ocurrió nada mejor, pero esto:
Con la esperanza de obtener puntos extra por abuso de comentarios: P
La razón por la que no funciona en 5.1 es que los anidados
[[]]
se eliminaron, y en 5.1 da un error de compilación en lugar de ignorarlo como lo hace 5.2.return 7-2-5
return 1
return 7-5
return 7-2-2
return 7-2-1
return 7-2
fuente
Rubí
¡Intenté hacerlo con operaciones bit a bit y luego me di cuenta de que hay una solución mucho más simple usando listas! Este desafío se cumple mejor con un lenguaje de programación que devuelve automáticamente el último valor que ve, como Ruby.
fuente
Befunge no tiene funciones explícitas, pero esto es lo que llamaría una función en Befunge:
La primera y la última línea son inicio de función y fin de función. Hace lo más parecido a "retorno", es decir, empuja el valor correcto a la pila.
fuente
Nueva respuesta
Encontré otra solución. Eso es tan malo, me gustó mucho la matemática. Esta solución usa recursividad y variables globales (¡qué asco!) Para saber si cada línea se ejecutó o no. Quería hacer algo diferente de las otras soluciones, por lo que no es muy elegante, pero funciona correctamente :)
PHP
Realmente disfruté este desafío, ¡gracias! :)
Vieja respuesta
Lo resolví usando las matemáticas. Si cada variable se ve como desconocida, y hacemos una declaración por línea, hay cinco incógnitas y cinco líneas de código: esto nos lleva al siguiente sistema 5x5:
Una vez que encontré los valores, los codifiqué y agregué algunas cosas básicas.
PHP
Nota: La respuesta anterior no funcionará si se deja como está.
fuente
cera de abejas , 86 bytes
Probar mi primer esolang inventado. Después de la confusión inicial, descubrí que la solución es muy simple.
Explicación:
Los programas de cera de abejas funcionan en una cuadrícula hexagonal 2D. Los programas se almacenan en formato rectangular.
se almacena como
Las instrucciones para moverse en ciertas direcciones son:
Explicación breve
_1 p
Cree una IP, agregue 1, luego redirija la IP a la línea 2_^v>~2+p
Cree otra IP, en caso de que falte la línea 1, reduzca la velocidad de la IP para asegurarse de que la IP de la línea uno esté adelante, luego agregue 2, luego redirija a la línea 3> >~3+p
Agregue 3, luego redirija a la línea 4> >~4+X@7~8+~@$^^{;
Agregue 4, luego establezca el segundo valor de lstack en 15, luego XOR lstack top y 2nd valores, reduzca la velocidad de IP (para asegurarse de que la IP en la línea 5 está adelante, si existe la línea 5) y envíe el resultado, luego finalice el programa.> >~5+@7~8+~@${;
Agregue 5, luego haga lo mismo que en la línea 4, excepto la ralentización.Básicamente, el programa solo calcula una suma xo 15
El adicional
>
en las líneas 3 a 5 solo garantiza que si falta una de las líneas 2 a 4, la IP aún se redirige correctamente y no abandona el programa.Puedes clonar mi intérprete de cera de abejas, escrito en Julia, desde mi repositorio de GitHub
El archivo Léame de GitHub está más actualizado y mejor estructurado que la página de esolangs.
fuente
MuPAD, 57 caracteres
fuente
LISP común:
NB: Tener paréntesis finales en su propia línea se considera un mal estilo, pero dado que otros idiomas tienen
end
y}
supongo que está permitido.fuente
Bash, 131 caracteres
Todo es sencillo hasta la línea 5. Luego, debe detectar si la línea final se ha ido. Esto aprovecha los parámetros de función permitidos al llamarse recursivamente, una vez, para probar su propio valor de éxito cuando se le dice que falle en la línea 5, y si se elimina la línea 5, la línea 4 regresa en su
5
lugar.(Nota: se reduce a un mínimo de 131 caracteres si se elimina todo menos la función, eliminando espacios en blanco y cambiando / bin / bash a / bin / sh)
fuente
Javascript
fuente