Défi
Dans cette tâche, vous devez écrire un programme qui prendra en entrée un entier N (-1e9 <= N <0 && 0 <N <= + 1e9) , puis calculez T = (abs (N)% M + 1) , si N est positif puis sortez le T-ème caractère depuis le début sinon sortez le T-ème caractère depuis la fin de votre source.
M est la taille de votre source en octets.
Exemple: si votre source est:abcd efg/hi
Contribution:
2
Production:
c
Entrée :
-3
Production:
g
Entrée :
-9249678
Production:
b
Entrée :
-11
Production:
i
Contraintes
- N'utilisez aucune opération FILE
- Vous pouvez utiliser la langue de votre choix
- Essayez d'éviter ou plutôt de ne pas utiliser les soumissions de 1 octet, car cela gâche tout le plaisir.
- La solution la plus courte gagne!
EDIT: L' énoncé du problème a été modifié afin que les solutions puissent être jugées à l'aide de données de test aléatoires (et des mêmes données pour toutes les solutions), veuillez donc mettre à jour votre solution en conséquence, désolé pour le désagrément (le cas échéant).
-2 -> /
-1 -> h
0 -> i
1 -> b
2 -> c
. Mais au moins la cartographie est maintenant unanime.&&
première phrase est censée être un||
?Réponses:
Assemblage x86 (Linux 32 bits, syntaxe AT&T): 548
Pas de nouvelle ligne à la fin du fichier:
Je l'ai compilé avec
gcc -nostartfiles -m32 qc1.S -o qc1
Vérification, nombres positifs:
Vérification, nombres négatifs:
Edit a bien compris le schéma de numérotation étrange. Je pense. Cela n'a pas changé la longueur.
la source
Whaddaya sait, HQ9 + fait son grand retour!
Pas besoin de s'embêter à indexer quand il n'y a qu'un seul personnage à choisir!
la source
echo '-1' | hq9+ qc1
Ruby 1.9, 66 caractères
Pas beaucoup de différence avec un quine normal, en fait.
la source
GolfScript 26 caractères
Les quines étaient plus amusantes avant l'invention des langages dynamiques.
Edit: Pour les pleurnichards, voici un "vrai" GolfScript quine, no `et ~ uniquement utilisé pour l'analyse de l'entrée.
GolfScript handicapé 44 caractères
Remarquez à quel point c'est la même chaîne répétée deux fois, donc la chaîne littérale a juste besoin d'être
'
piratée devant elle et elle est prête à l'emploi.la source
Quines were more fun before the invention of dynamic languages.
:-)Lenguage, 4 octets
Le code source se compose de 4 octets nuls. Quelle que soit l'entrée, la sortie doit donc être un octet nul, ce qui est accompli par une
.
instruction.la source
Smalltalk,
94 90 5952par exemple, dans la classe Object, compilez:
puis envoyez q: <n> à n'importe quel objet; ici un entier:
vérification:
1 q: 0 -> q
1 q: 1 ->:
1 q: 2 -> n
...
1 q: -1 ->)
1 q: -2 ->)
1 q: -3 -> 1
ou mieux:
(0 à: 100) collecter: [: n | 1 q: n] as: String
->
')q:n|s m|s:=thisContext method source.m:=s size.^s at:(n>=0ifTrue:n-1\\m+1ifFalse:m-(0-n\\m))q:n|s m|'
(-1 downTo: -500) collect: [: n | 1 q: n] as: String
->
')m\\n-0(-m:eslaFfi1+m\\1-n:eurTfi0=>n(:ta s^.ezis s=:m.ecruos dohtem txetnoCsiht=:s|m s|n:q))m\\n-0('
explication pour les non-Smalltalkers:
thisContext est le cadre de pile actuel, qui peut être demandé pour sa méthode , qui peut être demandé pour sa source .
la source
Enchantements runiques , 17 octets
Essayez-le en ligne!
Utilise simplement le quine standard pour générer la chaîne de programme, puis utilise l'opérateur modulo basé sur une chaîne 1 pour obtenir le caractère à un index donné (qui supporte nativement les indices négatifs et positifs, comportement influencé par Python).
,
commande "diviser" coupe la chaîne en morceaux (assez inverse logique de la*
duplication desx
temps de chaîne ),+
concatène et-
supprime lesx
caractères de la fin (un inverse assez logique de+
). Ainsi, la%
commande prend le rôle decharAt(x)
: la seule opération de chaîne de base restante (après que les opérations de type pile soient gérées par les mêmes commandes qui traitent la pile; par exemple,l
est la taille de la pile ainsi quel͍
la longueur d'une chaîne).la source
JavaScript (ES6), 28 octets
Un quine modifié.
Une valeur supérieure à 28 est gérée par
%28
, une valeur inférieure à 0 est gérée par.substr()
.la source