Écrivez une fonction qui contient cinq lignes.
Si vous exécutez la fonction telle quelle, elle doit retourner 0.
Si vous supprimez l'une des cinq lignes et exécutez la fonction, elle devrait vous indiquer laquelle des lignes a été supprimée (par exemple, si vous supprimez la dernière ligne, elle devrait renvoyer 5).
La concision, la nouveauté et l'élégance méritent toutes d'être prises en considération. La solution la mieux notée (après un laps de temps raisonnable) l'emporte.
popularity-contest
function
jawns317
la source
la source
Réponses:
Rubis
Éviter les nombres magiques car ce n'est pas du golf de code.
Chaque ligne retire son propre numéro
1^2^3^4^5
. C'est Ruby, donc la dernière ligne définit la valeur de retour.la source
JavaScript (
13477696560 caractères)→ démo en direct ←
appeler cette fonction avec n = 10.
Versions précédentes:
65 caractères
(doit être appelé avec n = 15)
69 caractères
(doit être appelé avec n = 15)
77 caractères
134 caractères
non-golfé
la source
var a
après lereturn
faire? En théorie, il ne devrait pas être atteint.Python
Si les paramètres sont autorisés, cela fonctionnera:
la source
R
La fonction utilise des "constantes" intégrées et attribue une autre valeur à chacune d'entre elles. Si toutes ces variables sont égales à la nouvelle valeur, la fonction renvoie 0. Les valeurs logiques sont transformées en valeurs numériques en raison des opérateurs mathématiques. Les parenthèses autour de la 4ème ligne permettent de retourner visiblement son résultat (s'il s'agit de la dernière commande).
la source
Lua 5.2+
55 caractères dans le corps de la fonction, sauf les sauts de ligne. Je ne pouvais rien trouver de mieux mais ceci:
En espérant obtenir des points supplémentaires pour les commentaires abusifs: P
La raison pour laquelle cela ne fonctionne pas en 5.1 est que les imbriqués
[[]]
ont été supprimés et en 5.1, il donne une erreur de compilation au lieu de l'ignorer comme le fait la 5.2.return 7-2-5
return 1
return 7-5
return 7-2-2
return 7-2-1
return 7-2
la source
Rubis
J'ai essayé de le faire avec des opérations au niveau du bit, puis j'ai réalisé qu'il y avait une solution beaucoup plus simple en utilisant des listes! Ce défi est mieux servi par un langage de programmation qui renvoie automatiquement la dernière valeur qu'il voit, comme Ruby.
la source
Befunge n'a pas de fonctions explicites, mais voici ce que j'appellerais une fonction dans Befunge:
Les première et dernière lignes sont le début et la fin de la fonction. Il fait la chose la plus proche de "retourner", c'est-à-dire qu'il pousse la valeur correcte sur la pile.
la source
Nouvelle réponse
J'ai trouvé une autre solution. C'est tellement mauvais, j'aimais tellement les mathématiques. Cette solution utilise la récursivité et des variables globales (beurk!) Pour savoir si chaque ligne a été exécutée ou non. Je voulais faire quelque chose de différent des autres solutions, donc ce n'est pas très élégant, mais cela fonctionne correctement :)
PHP
J'ai vraiment apprécié ce défi, merci! :)
Ancienne réponse
Je l'ai résolu en utilisant les mathématiques. Si chaque variable est vue comme une inconnue, et que nous faisons une déclaration par ligne, il y a cinq inconnues et cinq lignes de code: cela nous conduit au système 5x5 suivant:
Une fois que j'ai trouvé les valeurs, je les ai codées en dur et ajouté quelques trucs de base.
PHP
Remarque: l'ancienne réponse ne fonctionnera pas si elle reste telle quelle.
la source
cire d'abeille , 86 octets
Essayer mon premier esolang inventé. Après une confusion initiale, j'ai trouvé que la solution était si simple.
Explication:
les programmes de cire d'abeille fonctionnent sur une grille hexagonale 2D. Les programmes sont stockés dans un format rectangulaire.
est stocké sous
Les instructions pour se déplacer dans certaines directions sont les suivantes:
Brève explication
_1 p
Créez une IP, ajoutez 1, puis redirigez l'IP vers la ligne 2_^v>~2+p
Créez une autre IP, juste au cas où la ligne 1 est manquante, ralentissez IP pour vous assurer que l'IP de la ligne 1 est en avance, puis ajoutez 2, puis redirigez vers la ligne 3> >~3+p
Ajoutez 3, puis redirigez vers la ligne 4> >~4+X@7~8+~@$^^{;
Ajoutez 4, puis définissez la 2e valeur lstack sur 15, puis XOR lstack top et 2nd values, ralentissez IP (pour vous assurer que IP dans la ligne 5 est en avance, si la ligne 5 existe) et sortez le résultat, puis terminez le programme.> >~5+@7~8+~@${;
Ajoutez 5, puis faites la même chose qu'à la ligne 4, sauf le ralentissement.Fondamentalement, le programme calcule simplement une somme xor 15
Les
>
lignes supplémentaires 3 à 5 garantissent simplement que si l'une des lignes 2 à 4 est manquante, l'adresse IP est toujours redirigée correctement et ne quitte pas le programme.Vous pouvez cloner mon interprète de cire d'abeille, écrit en Julia, à partir de mon référentiel GitHub
Le readme sur GitHub est plus à jour et mieux structuré que la page esolangs.
la source
MuPAD, 57 caractères
la source
LISP commun:
NB: La fin des parenthèses sur sa propre ligne est considérée comme un mauvais style, mais comme d'autres langues l'ont fait
end
et}
je suppose que c'est autorisé.la source
Bash, 131 caractères
Tout est simple jusqu'à la ligne 5. Ensuite, il doit détecter si la dernière ligne a disparu. Cela tire parti des paramètres de fonction autorisés en s'appelant récursivement, une fois, pour tester sa propre valeur de succès lorsqu'il lui est dit d'échouer sur la ligne 5, et si la ligne 5 est supprimée, la ligne 4 revient à la
5
place.(Remarque: il s'agit d'un minimum de 131 caractères si vous supprimez tout sauf la fonction, en supprimant les espaces blancs et en remplaçant / bin / bash par / bin / sh)
la source
Javascript
la source