Sinceramente, no puedo creer que este desafío aún no exista.
El reto
Escribe una función.
Los detalles
Su programa debe definir algún tipo de función invocable. Esto incluye cualquier cosa comúnmente conocida como función, función lambda o subrutina. Todos estos tipos de llamadas se denominarán "función" en esta publicación.
La entrada a la función es opcional y no es obligatoria.
Un valor de retorno de la función también es opcional y no es obligatorio, pero el control debe volver al programa de llamada.
La función debe asignarse a algún tipo de variable para que se pueda acceder más adelante. Esto incluye la asignación indirecta (en la mayoría de los idiomas comunes donde declarar una función nombrada agrega automáticamente el nombre al alcance actual) y la asignación directa (asignar una función anónima a una variable directamente).
La función no necesita ser nombrada.
La función debe ser creada por usted ; no puede simplemente asignar una función predeterminada del idioma a una variable.
Ninguna de las lagunas estándar , por favor.
Este es el código de golf , por lo que gana la puntuación más baja en bytes.
Respuestas:
Código de máquina x86 / x64, 1 byte
Montaje:
Pruébalo en línea! (nasm)
¯ \ _ (ツ) _ / ¯
fuente
Jalea , 0 bytes
Pruébalo en línea!
Un enlace monádico que devuelve su argumento. Como es la primera función que aparece en el script, se puede llamar usando
1Ŀ
.Gracias a @lirtosiast por señalar que un enlace / función de 0 bytes funcionaría en Jelly.
Es decir
Pruébalo en línea!
fuente
<pre><code>...</code></pre>
para preservar espacios iniciales / finales / nuevas líneas en bloques de código. He editado tu respuesta en consecuencia. :)Javascript, 6 bytes
Incluye asignación variable. No hay mucho que ver aqui.
fuente
o=_=>o
d=_=>b
b
no está definido en este caso.Python 3 , 9 bytes
Pruébalo en línea!
fuente
ZX Spectrum BASIC, 6 bytes
Hex Dump:
CE 66 28 29 3D A7
.CE
es una palabra clave de 1 byte paraDEF FN
(incluido el espacio final), mientras queA7
es una palabra clave de 1 byte paraPI
. Llamar usandoFN f()
. Programa de ejemplo:Salida:
fuente
Haskell , 3 bytes
Este código define una función polimórfica llamada
o
que toma un parámetro de tipo y un parámetro de instancia de clase de tipo. Cuando se llama a esta función, toma la instancia de clase de tipo dada, obtiene sufromInteger
miembro, llama a ese miembro con elInteger
valor de 9 y devuelve el resultado.De acuerdo, lo que acabo de describir es simplemente el comportamiento de la función Haskell
9
, y mi código simplemente define una función llamadao
que es equivalente a9
.Ahora la única pregunta es, ¿es la
9
función "creada por usted" o es "una función predeterminada del idioma"?Creo que es "creado por ti". Mi razón para decir esto es que si lees la especificación de Haskell, (supongo) no encontrarás ninguna
9
función en ninguna parte. En cambio, la especificación establece que puede crear un número literal al unir uno o más dígitos. Por lo tanto, al escribir una cadena de dígitos, he escrito una función, incluso si resulta que solo he usado un dígito.fuente
R , 9 bytes
Pruébalo en línea!
Creo que esto cumple con las reglas. La función
t
no toma entradas y salidas0
. Esto funciona porque ya existe una función llamadat
(la función de transposición) y redefine el cuerpo de la función; no funcionaría con saybody(a)=0
(no se llama ningún objetoa
) obody(F)=0
(F
es una función lógica, no una). Creo que cumple porque todavía lo creo: no estoy reutilizando lo que hace la función predefinida, simplemente su nombre.No creo que haya visto esto usado por los golfistas R, pero puede haber situaciones en las que nos permita ahorrar unos pocos bytes en desafíos donde necesitamos una función auxiliar.
Una solución más estándar habría sido:
R , 13 bytes
Pruébalo en línea!
Función que no requiere entradas ni salidas
0
. Esto es 1 byte más corto que la función que no toma entrada y no emite nada, lo que seríaSi tratamos de definir una función sin cuerpo (
f=function()
), R interpreta esto como un comando incompleto (esto podría no ser cierto en versiones anteriores de R).Como señaló OganM, reducimos esto a 11 bytes con
R , 11 bytes
Pruébalo en línea!
que técnicamente cumple con el requisito de desafío de que la función se asigne a algún tipo de variable, ya que está (efímeramente) asignada
.Last.value
.fuente
function()0
debería funcionar para su segunda respuesta ya que la función no necesita ser nombrada. Buen trucobody<-
, he tratado de usarbody
y hacer algunos de los desafíos extraños para meterse con el idiomafunction()0
cumpla con las reglas de este desafío. Me encantaría dar una recompensa por una respuesta que utiliza elbody()="
truco con éxito.function()0
se asignaría a.Last.value()
pesar de que sería empujarpryr::f(x)
si permitimos pryr.Perl 6 , 5 bytes
Pruébalo en línea!
Crea un lambda Cualquiera que devuelve el valor booleano no de su parámetro y lo asigna a la variable
$!
.fuente
C (gcc) , 5 bytes
Define una función
f
que no toma argumentos y técnicamente devuelve un valor entero indefinido.Pruébalo en línea!
fuente
Espacio en blanco , 7 bytes
Crea una subrutina que devuelve el control a la persona que llama.
Explicado en contexto:
Pruébalo en línea!
fuente
[Wolfram Language (Mathematica)], 1 byte
Este es un poco cuestionable:
Define
f
, que se puede "llamar"f[]
, por ejemplo , por , que "devuelve" la expresiónf[]
fuente
f
no hace nada (aparte de recordar "He vistof
") y puede omitirse. Nof[]
obstante, puede llamar , aún regresando sin evaluarf[]
. Sin embargo, en cualquier caso, en su mayoría estás jugando trucos con el reemplazador de patrones y no estás instruyendo para evaluar una función.Global`f
, mientras que la versión vacía no hace eso (podría argumentar queNull
está asignado%1
, peroNull
es una "función" incorporada). Pero como he señalado en la respuesta, si la solución de un byte es válida tampoco está del todo clara ...Adelante (gforth) , 5 bytes
Esta es una función llamada
f
que no hace nada.Pruébalo en línea
En el código TIO, agregué un pie de página de
see f
, que imprime la definición de la función.fuente
Lua , 8 bytes
Pruébalo en línea!
Define una función (global)
f
.Esto usa la
load
función Lua para compilar una cadena dada que está vacía en nuestro caso (el código vacío es un código válido) en una función que hace exactamente lo que escribimos en su cuerpo: nada.Para los que se preguntan, la solución estándar sería
pero esto es más largo (15 bytes).
fuente
POSIX sh, 6 bytes
El uso de llaves requiere un personaje más.
fuente
Java, 10 bytes
esto debería coincidir con las reglas del desafío
fuente
f=a->a;
es válido. :)Perl 5 , 7 bytes
Pruébalo en línea!
fuente
Kotlin , 8 bytes
Una función vacía almacenada en una variable f.
Llámalo usando
f()
of.invoke()
.fuente
shortC , 1 byte
Pruébalo en línea!
Transpila en este C:
fuente
C (gcc) ,
1413 bytesPruébalo en línea!
Esto define una función que
f
devuelveint
y acepta un número no especificado (y tipo) de parámetros, cuyo código de máquina está contenido dentro del literal de cadena. El carácter unicodeÃ
(almacenado en la memoria como0xc3 0x00 0x00 0x00
en una pequeña máquina endian) corresponde a laret
instrucción x86 que regresa de la función. Las arquitecturas que no son x86 pueden requerir diferentes códigos de operación para regresar.gcc
puede requerir la-zexecstack
bandera para evitar un defecto de seguridad.fuente
Haskell , 5 bytes
Pruébalo en línea!
fuente
Tcl ,
6511 bytesPruébalo en línea!
Incluyendo la asignación a la variable f como parte del bytecount para cumplir con las reglas. Con este cambio, la definición más convencional a continuación vincula la anterior para bytecount:
fuente
XSLT, 134 bytes
Una plantilla es lo más parecido que tiene este lenguaje a una función. Definitivamente se puede llamar; toma cero argumentos y "devuelve" la cadena vacía.
fuente
F # (.NET Core) , 9 bytes
Pruébalo en línea!
fuente
Ruby , 6 bytes
Proc llamado
f
que no acepta argumentos y vuelvenil
.Pruébalo en línea!
fuente
Python 3 , 10 bytes
Pruébalo en línea!
fuente
def f():0
para guardar un byte?Pascal 23bytes
fuente
AppleScript, 10
Explicación, compilación e inclusión de invocación:
fuente
Japt , 2 bytes
Llamado como
$U ($
._
puede ser reemplazado con@
,Ï
oÈ
.Intentalo
fuente
SmileBASIC (> = 3), 9 bytes
La función es llamada por
A
.fuente
DEF A*END
en SB4Wolfram Language (Mathematica) , 2 bytes
Pruébalo en línea!
Desafortunadamente, simplemente
&
no funciona (una función anónima que no hace nada).fuente
f=#&
%1
lo que no hay necesidad de una asignación explícita a una variable comof
.