Code Golf
Backstory totalement réel : je suis un entrepreneur travaillant sur un site Web www. Sky.Net et l'une de nos tâches pour créer un programme conscient de soi ou quelque chose, je ne sais pas que je n'écoutais pas vraiment le patron. Quoi qu'il en soit, dans un effort pour rendre notre code plus conscient de nous-mêmes, nous avons besoin de l' informatique pour pouvoir savoir quel code est sur chaque numéro de ligne.
Défi
Créez un programme ou une fonction qui prend une entrée n
et renvoie le code dudit programme ou fonction en ligne n
.
Règles
➊ Votre programme ou fonction doit comporter au moins 4 lignes. Chaque ligne doit être unique.
➋ Vous pouvez supposer que l'entrée sera toujours un entier positif supérieur ou égal à 1 et inférieur ou égal au nombre de lignes de votre programme / fonction.
➌ La première ligne de votre programme / fonction est la ligne 1, pas la ligne 0.
➍ Vous ne pouvez pas accéder au fichier sur lequel se trouve votre programme. (Si quelqu'un doit demander "N'est-ce pas une violation technique de la règle n ° 4"; c'est probablement le cas)
➎ Les lignes ne peuvent pas être vides (cela inclut un espace si les espaces ne font rien dans votre langue)
➏ Les lignes ne peuvent pas être // des commentaires (/ * de tout <! - style)
C'est un défi de type quine
C'est du golf de code , donc la soumission avec le moins d'octets gagne!
Réponses:
Vim, 7 octets
Essayez-le en ligne!
Pour autant que je sache, cela est conforme à toutes les règles. Dans vim par défaut, le programme vide imprime toutes les entrées. Puisque
Est un noop, rien ne change le texte d'entrée, et puisque chaque entrée correspond à la sortie souhaitée, cette même approche fonctionne avec n'importe quel nombre de lignes.
la source
Rubis,
717066 octetsEssayez-le en ligne!
Mode "Triche": 7 + 1 = 8 octets
Nécessite le
-p
drapeau pour +1 octet. Littéralement une copie de la réponse V . Imprime le nombre entré; l'ensemble du programme est en fait juste sans opération.la source
-p
-il?$_
, exécute le contenu du programme, puis imprime le contenu de$_
à l'écran (répétition par ligne de STDIN). Étant donné que le programme ne fait rien, il est pratiquement uniquement Unixcat
, mais cela signifie que chaque entrée de 1 à 4 affichera le contenu de la ligne, car chaque ligne est littéralement son numéro de ligne.-p
, mais1\n2\n3\n4
n'est pas un programme Perl valide.Haskell,
6959 octetsBasé sur le quine Haskell standard. La première expression (répartie sur les trois premières lignes) est une fonction sans nom qui sélectionne la nième ligne de la chaîne quinifiée
s
(s++show s
). +2 octets pour rendre l'indexation basée sur 1 (à mon humble avis, une règle inutile).Pour l' essayer en ligne! version je dois nommer la fonction qui ajoute 4 octets.
la source
PowerShell ,
184172 octetsEssayez-le en ligne!
Explication
Commence par créer un tableau
$v
sur la première ligne. Sur cette même ligne, le premier (0
e) élément est défini sur0
et une virgule,
continue sa définition.La ligne suivante définit l'élément suivant (
1
) du tableau sur une chaîne représentant le contenu de la première ligne du script, ce qui$v[1]
renvoie la première ligne.La 3e ligne définit d'abord le 3e élément du tableau (index
2
) sur une chaîne représentant la 2e ligne du script, puis sur la même ligne définit le 4e élément (index3
) à l'aide d'un extrait de quine qui utilise l'opérateur de format (-f
) pour remplacer certaines instances de guillemets simples ([char]39
) et la chaîne de modèle de format, en elle-même, pour reproduire l'intégralité de la 3e ligne.La ligne 4 fait essentiellement la même chose, mais termine également la création du tableau, puis l'indexe à l'aide de l'argument fourni.
la source
Python 2,
1047367 octetsMerci à Jonathan Allan d'avoir économisé 6 octets!
Edit: même nombre d'octets, mais j'aime mieux cette solution
Essayez-le en ligne!
Version Python de la réponse Ruby de Value Ink .
Ancienne réponse (67 octets):
la source
n
: TIOCJam ,
191817 octetsEssayez-le en ligne!
Basé sur le CJam-quine standard. Le
{...}_~
exécute le...
avec le bloc lui-même sur la pile (et dans ce cas, également en1
dessous). Ensuite, nous faisons:la source
PHP, 261 octets
Essayez-le en ligne !!
La chaîne encodée est:
la source
Perl, 52 octets
Ceci est une variation simple de la quine classique
La "charge utile" est
split
sur les sauts de ligne et la ligne correcte est sélectionnée par indexation dans la liste résultante.Perl,
4948 octets (non concurrent)38 octets pour le code (excluant le shebang mais y compris
-d:A
) plus 10 octets pour le nom de fichier, qui doit êtreDevel/A.pm
. LeDevel
répertoire doit être dans@INC
.Techniquement, cela viole la règle n ° 4 car
-d:A
le fichier est analysé deux fois, il s'agit donc d'une solution non concurrente.Il utilise un hook de débogueur pour accéder aux lignes du fichier, que perl stocke dans le
@{"_<$filename"}
tableau au moment de la compilation.la source