Votre tâche est de créer un programme qui fait ce qui suit:
- Vous devriez prendre le numéro. (Positif, négatif, la fraction est une entrée possible)
- S'il est négatif, vous inversez le quine. et nier ce nombre (devenir positif)
- Ensuite, vous répétez <partie entière du numéro d'entrée> fois et imprimez d'abord <étage (partie fractionnaire du numéro d'entrée * longueur)> à partir de votre programme source. S'il est entier, alors la partie fractionnaire est nulle.
-10% de bonus si votre programme n'est pas palindrome.
Exemple
Si votre programme est "ABCDEFG", alors
1.
5
ABCDEFGABCDEFGABCDEFGABCDEFGABCDEFG
Explication
ABCDEFG cinq fois
2.
-2
GFEDCBAGFEDCBA
Explication
GFEDCBA (inversé ABCDEFG) 2 fois
3.
7.5
ABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABC
Explication
ABCDEFG 7 fois suivi de ABC (3 premières (étage (0,5 * 7) = étage (3,5) = 3) lettre sur ABCDEFG)
4.
-0.3
GF
Explication
GFEDCBA (inversé ABCDEFG) 0 fois suivi de GF (2 premières (étage (0.3 * 7) = étage (2.1) = 2) lettre sur GFEDCBA (inversé ABCDEFG))
5.
0
<empty>
Explication:
<empty> signifie ici que votre programme ne sort pas. C'est ABCDEFG zéro fois qui est défini comme une chaîne vide.
-
et.
manuellement (représentant la fraction des entiers positifs). Ou vous pouvez tourner votre attention vers le prochain défi. ;) (Toutes les langues ne peuvent pas participer à tous les défis, mais tant que le défi n'exclut pas délibérément des langues individuelles arbitraires, c'est très bien. Pensez à tous les défis du traitement audio / image ou du système de fichiers.)Réponses:
CJam,
2826 octets * 0,9 = 23,4Merci à Sp3000 pour avoir économisé 2 octets.
Testez-le ici.
Explication
la source
Vitsy, 34 * 0,9 = 30,6 octets
Merci à @ Sp3000 d'avoir signalé une faille dans mon code!
Courtiser. Mon professeur de physique m'a rappelé que j'avais des fonctions de puissance pour m'aider. Allez comprendre.
la source
Perl, 104 octets - 10% = 93,6
102 octets + 2 octets pour
-i
- 10% pour ne pas être un palindrome. L'entrée est passée comme argument à-i
(par exemple-0.3
ci-dessus).Comment ça fonctionne
Cette solution est basée sur le quine suivant:
Cela fonctionne comme suit. Tout d'abord, définissez
$_
la chaîne:Ensuite, appelez
eval
, qui fonctionne$_
par défaut. Cela appelleprint
avec un argument, un littéral de chaîne:Comme cette chaîne est entre guillemets, les variables sont interpolées. Après interpolation
$_
, la valeur de la chaîne est:Une fois imprimé, il affiche:
qui est le code source du programme lui-même.
La bonne chose à propos de cette quine est que vous pouvez incorporer du code arbitraire dans la chaîne pour être
eval
'd.Voici une ventilation de la solution complète:
la source
Mathematica, 139-10% = 125,1 octets
Notez l'espace de fin. Les espaces, la notation standard, etc. sont le résultat du
ToString[#0, InputForm]
.la source
Haskell, 158 * 0,9 = 142,2 octets
Une fonction quine.
la source
Python 2, 193 octets - 10% = 173,7
Erreurs sur
0
, mais, en ignorant STDERR, vous obtenez toujours une sortie vide.la source