Honnêtement, je ne peux pas croire que ce défi n'existe pas déjà.
Le défi
Écrivez une fonction.
Les spécificités
Votre programme doit définir une sorte de fonction appelable. Cela inclut tout ce que l'on appelle communément une fonction, une fonction lambda ou un sous-programme. Tous ces types de callables seront appelés une "fonction" dans ce post.
La saisie de la fonction est facultative et non requise.
Une valeur de retour de la fonction est également facultative et non requise, mais le contrôle doit retourner au programme appelant.
La fonction doit être affectée à une sorte de variable afin qu'il soit possible d'y accéder ultérieurement. Cela comprend l'affectation indirecte (dans la plupart des langues courantes où la déclaration d'une fonction nommée ajoute automatiquement le nom dans la portée actuelle) et l'affectation directe (affectation directe d'une fonction anonyme à une variable).
La fonction n'a pas besoin d'être nommée.
La fonction doit être créée par vous - vous ne pouvez pas simplement assigner une fonction par défaut de la langue à une variable.
Aucune des échappatoires standard , s'il vous plaît.
C'est le code-golf , donc le score le plus bas en octets l'emporte.
Réponses:
Code machine x86 / x64, 1 octet
Assemblée:
Essayez-le en ligne! (nasm)
¯ \ _ (ツ) _ / ¯
la source
Gelée , 0 octet
Essayez-le en ligne!
Un lien monadique qui renvoie son argument. Comme il s'agit de la première fonction à apparaître dans le script, elle peut être appelée à l'aide de
1Ŀ
.Merci à @lirtosiast d'avoir souligné qu'un lien / fonction de 0 octet fonctionnerait dans Jelly.
C'est à dire
Essayez-le en ligne!
la source
<pre><code>...</code></pre>
pour conserver les espaces de début / fin / les nouvelles lignes dans les blocs de code. J'ai modifié votre réponse en conséquence. :)Javascript, 6 octets
Comprend une affectation variable. Pas grand chose à voir ici.
la source
o=_=>o
d=_=>b
b
n'est pas défini dans ce cas.Python 3 , 9 octets
Essayez-le en ligne!
la source
ZX Spectrum BASIC, 6 octets
Hexa:
CE 66 28 29 3D A7
.CE
est un mot clé de 1 octet pourDEF FN
(y compris l'espace de fin), tandis queA7
est un mot clé de 1 octet pourPI
. Appelez en utilisantFN f()
. Exemple de programme:Production:
la source
Haskell , 3 octets
Ce code définit une fonction polymorphe appelée
o
qui prend un paramètre de type et un paramètre d'instance de classe de types. Lorsque cette fonction est appelée, elle prend l'instance de classe de types donnée, obtient sonfromInteger
membre, appelle ce membre avec laInteger
valeur 9 et renvoie le résultat.Certes, ce que je viens de décrire n'est que le comportement de la fonction Haskell
9
, et mon code définit simplement une fonction appeléeo
qui est équivalente à9
.Maintenant, la seule question est, est la
9
suivante: fonction est-elle «créée par vous» ou est-elle «une fonction par défaut de la langue»?Je pense qu'il est "créé par vous". La raison pour laquelle je dis cela est que si vous lisez les spécifications de Haskell, vous (je suppose) ne trouverez nulle part une
9
fonction. Au lieu de cela, la spécification indique que vous pouvez créer un littéral numérique en enchaînant un ou plusieurs chiffres. Par conséquent, en écrivant une chaîne de chiffres, j'ai écrit une fonction - même s'il se trouve que je n'ai utilisé qu'un seul chiffre.la source
R , 9 octets
Essayez-le en ligne!
Je pense que cela est conforme aux règles. La fonction
t
ne prend ni entrée ni sortie0
. Cela fonctionne parce qu'il existe déjà une fonction appeléet
(la fonction de transposition) et qu'elle redéfinit le corps de la fonction; cela ne fonctionnerait pas avec saybody(a)=0
(aucun objet appeléa
) oubody(F)=0
(F
est une logique, pas une fonction). Je pense qu'il est conforme car il est toujours créé par moi: je ne réutilise pas ce que fait la fonction prédéfinie, simplement son nom.Je ne pense pas avoir déjà vu cela utilisé par les golfeurs R, mais il peut y avoir des situations où cela nous permet d'économiser quelques octets sur des défis où nous avons besoin d'une fonction d'aide.
Une solution plus standard aurait été:
R , 13 octets
Essayez-le en ligne!
Fonction qui ne prend ni entrée ni sortie
0
. Ceci est 1 octet plus court que la fonction qui ne prend aucune entrée et ne sort rien, ce qui seraitSi nous essayons de définir une fonction sans corps (
f=function()
), R l'interprète comme une commande incomplète (cela pourrait ne pas être vrai dans les anciennes versions de R).Comme l'a souligné OganM, nous réduisons cela à 11 octets avec
R , 11 octets
Essayez-le en ligne!
qui est techniquement conforme à l'exigence de défi que la fonction soit affectée à une sorte de variable, car elle est (éphémère) assignée à
.Last.value
.la source
function()0
devrait fonctionner pour votre deuxième réponse puisque la fonction n'a pas besoin d'être nommée. Truc sympabody<-
, j'ai essayé d'utiliserbody
et autres pour faire certains des défis étranges pour jouer avec la languefunction()0
conforme aux règles de ce défi. Je serais heureux de donner une prime à une réponse qui utilise l'body()="
astuce avec succès.function()0
serait affecté à.Last.value()
ce qui le pousseraitpryr::f(x)
si nous permettons au pryre.Perl 6 , 5 octets
Essayez-le en ligne!
Crée un lambda Whats qui renvoie le booléen et non son paramètre, et l'affecte à la variable
$!
.la source
C (gcc) , 5 octets
Définit une fonction
f
qui ne prend aucun argument et renvoie techniquement une valeur entière non définie.Essayez-le en ligne!
la source
Espace , 7 octets
Crée un sous-programme qui renvoie le contrôle à l'appelant.
Expliqué dans le contexte:
Essayez-le en ligne!
la source
[Langue Wolfram (Mathematica)], 1 octet
Celui-ci est légèrement discutable:
Définit
f
, qui peut être "appelé" par exemple parf[]
, qui "renvoie" l'expressionf[]
la source
f
ne fait rien (à part se souvenir de "j'ai vuf
") et peut être laissée de côté. Vous pouvezf[]
néanmoins appeler , toujours en revenant sans évaluationf[]
. Cependant, dans tous les cas, vous jouez principalement des tours avec le modèle-remplaçant et n'instruisez pas d'évaluer une fonction.Global`f
, tandis que la version vide ne fait pas cela (vous pourriez dire que celaNull
est assigné à%1
, maisNull
est une "fonction" intégrée). Mais comme je l'ai noté dans la réponse, la validité de la solution à un octet n'est pas non plus tout à fait claire ...Forth (gforth) , 5 octets
Il s'agit d'une fonction nommée
f
qui ne fait rien.Essayez-le en ligne
Dans le code TIO, j'ai ajouté un pied de page de
see f
, qui imprime la définition de la fonction.la source
Lua , 8 octets
Essayez-le en ligne!
Définit une fonction (globale)
f
.Cela utilise Lua
load
fonction pour compiler une chaîne donnée qui se trouve être vide dans notre cas (le code vide est un code valide) dans une fonction qui fait exactement ce que nous avons écrit dans son corps: rien.Pour ceux qui se demandent, la solution standard serait
mais c'est plus long (15 octets).
la source
POSIX sh, 6 octets
L'utilisation d'accolades frisées nécessite un caractère de plus.
la source
Java, 10 octets
cela devrait correspondre aux règles du défi
la source
f=a->a;
c'est aussi valable. :)Perl 5 , 7 octets
Essayez-le en ligne!
la source
Kotlin , 8 octets
Une fonction vide stockée dans une variable f.
Appelez-le en utilisant
f()
ouf.invoke()
.la source
shortC , 1 octet
Essayez-le en ligne!
Transpile dans ce C:
la source
C (gcc) ,
1413 octetsEssayez-le en ligne!
Ceci définit une fonction
f
renvoyantint
et acceptant un nombre (et un type) de paramètres non spécifié, dont le code machine est contenu dans le littéral de chaîne. Le caractère unicodeÃ
(stocké en mémoire comme0xc3 0x00 0x00 0x00
sur une petite machine endian) correspond à l'ret
instruction x86 qui revient de la fonction. Les architectures non x86 peuvent nécessiter différents opcode (s) pour retourner.gcc
peut nécessiter le-zexecstack
drapeau pour éviter une faute de segmentation.la source
Haskell , 5 octets
Essayez-le en ligne!
la source
Tcl ,
6511 octetsEssayez-le en ligne!
Inclusion de l'affectation à la variable f dans le cadre du bytecount pour respecter les règles. Avec ce changement, la définition plus conventionnelle ci-dessous est liée à celle ci-dessus pour le bytecount:
la source
XSLT, 134 octets
Un modèle est la chose la plus proche de ce langage à une fonction. On peut certainement l'appeler; il ne prend aucun argument et "renvoie" la chaîne vide.
la source
F # (.NET Core) , 9 octets
Essayez-le en ligne!
la source
Ruby , 6 octets
Proc appelé
f
qui n'accepte aucun argument et retournenil
.Essayez-le en ligne!
la source
Python 3 , 10 octets
Essayez-le en ligne!
la source
def f():0
pour enregistrer un octet?Pascal 23 octets
la source
AppleScript, 10
Expliqué, compilé et incluant l'invocation:
la source
Japt , 2 octets
Appelé comme
$U ($
._
peut être remplacé par@
,Ï
ouÈ
.Essayez-le
la source
SmileBASIC (> = 3), 9 octets
La fonction est appelée par
A
.la source
DEF A*END
dans SB4Wolfram Language (Mathematica) , 2 octets
Essayez-le en ligne!
Malheureusement,
&
cela ne fonctionne tout simplement pas (une fonction anonyme qui ne fait rien).la source
f=#&
%1
il n'y a donc pas besoin d'une affectation explicite à une variable commef
.