Sinceramente, não acredito que esse desafio ainda não exista.
O desafio
Escreva uma função.
Os detalhes
Seu programa deve definir algum tipo de função que pode ser chamada. Isso inclui qualquer coisa comumente conhecida como função, função lambda ou sub-rotina. Todos esses tipos de chamadas são mencionados como uma "função" nesta postagem.
A entrada para a função é opcional e não é necessária.
Um valor de retorno da função também é opcional e não é necessário, mas o controle deve retornar ao programa de chamada.
A função deve ser atribuída a algum tipo de variável para que seja possível acessá-la posteriormente. Isso inclui a atribuição indireta (nos idiomas mais comuns em que a declaração de uma função nomeada adiciona automaticamente o nome ao escopo atual) e a atribuição direta (a atribuição direta de uma função anônima a uma variável).
A função não precisa ser nomeada.
A função deve ser criada por você - você não pode apenas atribuir uma função padrão do idioma a uma variável.
Nenhuma das brechas padrão , por favor.
Isso é código-golfe , então a pontuação mais baixa em bytes vence.
Respostas:
código de máquina x86 / x64, 1 byte
Montagem:
Experimente online! (nasm)
¯ \ _ (ツ) _ / ¯
fonte
Geléia , 0 bytes
Experimente online!
Um link monádico que retorna seu argumento. Como é a primeira função a aparecer no script, ela pode ser chamada usando
1Ŀ
.Obrigado a @lirtosiast por apontar que um link / função de 0 byte funcionaria no Jelly.
Ou seja,
Experimente online!
fonte
<pre><code>...</code></pre>
para preservar espaços à esquerda / à direita / novas linhas em blocos de código. Editei sua resposta de acordo. :)Javascript, 6 bytes
Inclui atribuição de variável. Não há muito para ver aqui.
fonte
o=_=>o
d=_=>b
b
não está definido neste caso.Python 3 , 9 bytes
Experimente online!
fonte
ZX Spectrum BASIC, 6 bytes
Hex Dump:
CE 66 28 29 3D A7
.CE
é uma palavra-chave de 1 byte paraDEF FN
(incluindo o espaço à direita), enquantoA7
é uma palavra-chave de 1 byte paraPI
. Ligue usandoFN f()
. Exemplo de programa:Resultado:
fonte
Haskell , 3 bytes
Esse código define uma função polimórfica chamada
o
que aceita um parâmetro de tipo e um parâmetro de instância de classe de tipo. Quando essa função é chamada, ela pega a instância de classe de tipo especificada, obtém seufromInteger
membro, chama esse membro com oInteger
valor para 9 e retorna o resultado.É verdade que o que acabei de descrever é apenas o comportamento da função Haskell
9
, e meu código apenas define uma função chamadao
que é equivalente a9
.Agora, a única questão é: a
9
função é "criada por você" ou é "uma função padrão do idioma"?Eu acho que é "criado por você". Minha razão para dizer isso é que, se você ler a especificação para Haskell, (presumo) não encontrará menção de uma
9
função em nenhum lugar. Em vez disso, a especificação afirma que você pode criar um literal numérico unindo um ou mais dígitos. Portanto, escrevendo uma sequência de dígitos, escrevi uma função - mesmo que por acaso tenha usado apenas um dígito.fonte
R , 9 bytes
Experimente online!
Eu acho que isso está em conformidade com as regras. A função
t
não aceita entradas e saídas0
. Isso funciona porque já existe uma função chamadat
(a função de transposição) e redefine o corpo da função; não funcionaria com o saybody(a)=0
(nenhum objeto chamadoa
) oubody(F)=0
(F
é uma lógica, não uma função). Eu acho que cumpre porque ainda é criado por mim: não estou reutilizando o que a função predefinida faz, simplesmente o seu nome.Acho que nunca vi isso ser usado pelos jogadores de golfe R, mas pode haver situações em que isso nos permita economizar alguns bytes em desafios nos quais precisamos de uma função auxiliar.
Uma solução mais padrão teria sido:
R , 13 bytes
Experimente online!
Função que não requer entrada e saída
0
. Este é 1 byte menor que a função que não recebe entrada e não produz nada, o que seriaSe tentarmos definir uma função sem corpo (
f=function()
), R interpreta isso como um comando incompleto (isso pode não ser verdade nas versões mais antigas do R).Conforme apontado por OganM, reduzimos isso para 11 bytes com
R , 11 bytes
Experimente online!
que tecnicamente atende ao requisito de desafio de que a função seja atribuída a algum tipo de variável, uma vez que é (efêmera) atribuída a
.Last.value
.fonte
function()0
deve funcionar para sua segunda resposta, já que a função não precisa ser nomeada. Truque onbody<-
, eu tentei usarbody
e similares para fazer alguns dos desafios estranhos para mexer com a línguafunction()0
esteja em conformidade com as regras deste desafio. Eu ficaria feliz em dar uma recompensa a uma resposta que usa obody()="
truque com sucesso.function()0
seria atribuído a.Last.value()
no entanto, que seria levandopryr::f(x)
se permitirmos pryr.Perl 6 , 5 bytes
Experimente online!
Cria um lambda Qualquer que retorne o booleano não de seu parâmetro e o atribui à variável
$!
.fonte
C (gcc) , 5 bytes
Define uma função
f
que não aceita argumentos e, tecnicamente, retorna um valor inteiro indefinido.Experimente online!
fonte
Espaço em branco , 7 bytes
Cria uma sub-rotina que retorna o controle ao chamador.
Explicado no contexto:
Experimente online!
fonte
[Wolfram Language (Mathematica)], 1 byte
Este é um pouco questionável:
Define
f
, que pode ser "chamado"f[]
, por exemplo , por , que "retorna" a expressãof[]
fonte
f
não faz nada (além de lembrar de "eu vif
") e pode ser deixada de fora.f[]
No entanto, você pode ligar , ainda retornando sem avaliaçãof[]
. No entanto, em qualquer caso, você está praticando truques com o substituto de padrão e não instruindo para avaliar uma função.Global`f
, enquanto a versão vazia não faz isso (você pode argumentar queNull
está atribuída%1
, masNull
é uma "função" incorporada). Mas, como já observei na resposta, se a solução de um byte é válido também não é totalmente claro ...Quarto (gforth) , 5 bytes
Esta é uma função nomeada
f
que não faz nada.Experimente Online
No código TIO, adicionei um rodapé de
see f
, que imprime a definição da função.fonte
Lua , 8 bytes
Experimente online!
Define uma função (global)
f
.Isso usa a
load
função Lua para compilar determinada string que está vazia no nosso caso (código vazio é código válido) em uma função que faz exatamente o que escrevemos em seu corpo: nada.Para quem se pergunta, a solução padrão seria
mas isso é mais longo (15 bytes).
fonte
POSIX sh, 6 bytes
O uso de aparelho encaracolado requer mais um caractere.
fonte
Java, 10 bytes
isso deve corresponder às regras do desafio
fonte
f=a->a;
é válido. :)Perl 5 , 7 bytes
Experimente online!
fonte
Kotlin , 8 bytes
Uma função vazia armazenada em uma variável f.
Ligue usando
f()
ouf.invoke()
.fonte
shortC , 1 byte
Experimente online!
Transpiles para este C:
fonte
C (gcc) ,
1413 bytesExperimente online!
Isso define uma função
f
retornandoint
e aceitando um número não especificado (e tipo) de parâmetros, cujo código de máquina está contido na cadeia literal. O caractere unicodeÃ
(armazenado na memória como0xc3 0x00 0x00 0x00
em uma pequena máquina endian) corresponde àret
instrução x86 que retorna da função. Arquiteturas não x86 podem exigir diferentes códigos opcionais para retornar.gcc
pode exigir que o-zexecstack
sinalizador evite um segfault.fonte
Haskell , 5 bytes
Experimente online!
fonte
Tcl,
6511 bytesTry it online!
Including the assignment to the variable f as part of the bytecount to comply with rules. With this change, the more conventional definition below ties the one above for bytecount:
fonte
XSLT, 134 bytes
A template is the closest thing this language has to a function. It can definitely be called; it takes zero arguments and "returns" the empty string.
fonte
F# (.NET Core), 9 bytes
Try it online!
fonte
Ruby, 6 bytes
Proc called
f
which accepts no argument and returnsnil
.Try it online!
fonte
Python 3, 10 bytes
Try it online!
fonte
def f():0
to save a byte?Pascal 23bytes
fonte
AppleScript, 10
Explained, compiled, and including invocation:
fonte
Japt, 2 bytes
Called as
$U ($
._
can be replaced with@
,Ï
, orÈ
.Try it
fonte
SmileBASIC (>=3), 9 bytes
Function is called by
A
.fonte
DEF A*END
in SB4Wolfram Language (Mathematica), 2 bytes
Try it online!
Unfortunately, just
&
does not work (an anonymous function that does nothing).fonte
f=#&
%1
so there's no need for an explicit assignment to a variable likef
.