Mandoline quine

25

Écrivez une quine ... à partir de laquelle tous les autres caractères peuvent être supprimés, ce sera toujours une quine valide. Vous pouvez spécifier si vous souhaitez commencer à supprimer les caractères au premier ou au deuxième caractère.

Critères de notation (additionnez les bonus / pourcentages pénalisés pour le pourcentage total):

  • Les réponses doivent comporter au moins 4 caractères
  • Le programme doit contenir au moins un caractère alphabétique dans sa source, donc par exemple, 12345!@#$%^&*()est disqualifié
  • + 750% si la langue utilisée n'est pas Turing-complete (je vous regarde, HTML!)
  • -15% si la solution ne lit pas sa source de n'importe où dans n'importe quelle forme
  • -20% si vous ne pouvez également conserver que tous les 5 caractères et toujours former une quine

Le score est mesuré par le nombre de caractères du premier programme.

Exemple (pas de vrais programmes):

Si 123456789abcdefet 13579bdfsont les deux quines, le score est de 15. De plus, si 159dest également une quine, le score final est de 12.

C'est le code-golf, donc le score le plus bas gagne.

Jwosty
la source
2
@ hosch250 Le programme d'origine ne serait pas une quine car il n'imprimerait pas ces espaces. Il en va de même pour les commentaires inutiles.
Jwosty
1
Oui, je n'ai jamais programmé de quine auparavant, et je n'ai aucune idée de comment le faire sans lire le code source en C ++. Je les ai déjà vus en C ++ auparavant!
Hosch250
1
Vous dites: "-20% si vous pouvez également supprimer tous les 4 caractères tout en formant un quine". Mais techniquement, ce n'est pas ce qui se passe dans votre exemple. Tu veux dire que tu peux le faire une deuxième fois?
mmumboss
4
Les bonus sont-ils additifs ou multiplicatifs? Autrement dit, si mon programme comporte 10 caractères et se qualifie pour le bonus de -15% et le bonus de -20%, son score sera-t-il de 10 * (1 - 0,15 - 0,2) = 6,5 ou 10 * (1 - 0,15) * (1 - 0,2) = 6,8? J'ai supposé ce dernier, mais une clarification explicite serait bien.
Ilmari Karonen
1
Ne serait-ce pas une quoline mandoline, pas une guillotine? Les guillotines font une coupe propre, généralement fatale, et la tête roule. Les mandolines font avec les nombreuses tranches régulièrement espacées. :)
Jonathan Van Matre

Réponses:

24

PHP, 4 caractères - 15% - 20% = 2,72 2,6 points

ABCD

Oui, PHP est un langage complet de Turing. Personne n'a dit que je devais utiliser ses fonctionnalités de programmation réelles. ;-)

Modifier: le score a été modifié en fonction de la clarification que les bonus sont additifs et non multiplicatifs.

Ilmari Karonen
la source
Cela fonctionne dans ASP, éventuellement.
Ismael Miguel
2
@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ j'abandonne. : P
Jwosty
17
En fait, l'utilisation des fonctionnalités de programmation réelles de PHP est déconseillée.
Rhymoid
1
Ce n'est pas un quine approprié. Encore une bonne réponse, cependant
MilkyWay90
14

TI BASIC 4 - 35% = 2,6

Je les comprends peut-être mal, mais je pense que je suis également éligible aux bonus -15% et -20%, ce qui signifie que j'ai le score le plus bas possible.

Je peux écrire le programme:

123i

qui affichera 123ioù i est bien sûr l'unité imaginaire. Lorsque vous supprimez le 1er et le 3e caractère, il ne reste 2ique les sorties2i

mmumboss
la source
Pas tout à fait ... '12i' produira '12i' et '2' produira '2' pour un score minimum de 1,95.
intx13
En fait, «2i» obtient 1,3, et si le programme vide est considéré comme une quine, «i» obtient 0,65.
intx13
4
@ intx13: "Les réponses doivent contenir au moins 4 caractères. "
Ilmari Karonen
Ah, ça m'a manqué!
intx13
Battez-moi;)
Timtech
13

Python - 95

Grand défi. Je pensais que c'était assez intelligent et en fait une solution légitime!

00;"#";print(open(__file__).read())
0#;XpXrXiXnXtX(XoXpXeXnX(X_X_XfXiXlXeX_X_X)X.XrXeXaXdX(X)X)
qwr
la source
1
Agréable! Notez que cela ne fonctionne techniquement pas tel quel puisque vous finissez par supprimer la nouvelle ligne lorsque vous effectuez la quine alternative. nécessite un peu de peaufinage IOW
Claudiu
3
@Claudiu Eh bien, je suppose que cela dépend si OP considère la nouvelle ligne comme un personnage. Si c'est le cas, vous pouvez simplement ajouter une nouvelle ligne entre chaque ligne. 96 caractères
qwr
Bien sûr, une nouvelle ligne est un personnage ...
mbomb007
11

Golfscript, 5 points

{hai}

est une fonction qui, lorsqu'elle est exécutée, exécutera la fonction (non existante) hai. Il n'est pas exécuté, cependant, mais plutôt imprimé à la fin du programme - y compris les crochets extérieurs. La suppression de l'autre personnage donne:

{a}

Lame, je sais :-)

John Dvorak
la source
Je pense que vous avez également droit aux deux bonus: votre programme ne lit pas son propre code source et {}est également une quine.
Ilmari Karonen
@IlmariKaronen, il est difficile de dire ce qui compte comme lire son propre code source. Les fonctions non évaluées comptent-elles? L'évaluation des chaînes compte-t-elle? Quant à l'autre bonus - peut-être qu'il est juste mal formulé, mais je lis "supprimer tous les quatre caractères" comme "garder tous les cinq caractères", ce qui me laisserait avec une seule parenthèse (bien que {ab0}qualifiée si elle 0peut être celle qui est conservée)
John Dvorak
Il est en effet mal formulé, mais l'exemple suggère qu'il signifie «conserver un quatrième caractère». Quoi qu'il en soit, comme vous le constatez, se {ab0}qualifie de toute façon.
Ilmari Karonen
Il semble {hi}également fonctionner, sera plus court (4 caractères) et sera également admissible à tous les bonus. (Il semble que le script soit {iévalué {ipour une raison quelconque ...)
Claudiu
8

HQ9 + - 4 * 7,5 * 0,8 = 24 points

Q+++

Encore une quine avec chaque deuxième personnage:

Q+

... et tous les cinq:

Q

Désolé, je n'ai pas pu résister. :)

Smallhacker
la source
7

HTML / Markdown, 4 * 7,5 = 30

HHHH

J'avoue que c'est boiteux, mais cela ne va vraiment à l'encontre d'aucune règle dans la question. Sauf que HTML / Markdown ne peut pas être considéré comme un véritable langage de programmation.

n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
la source
Je suppose que je n'ai pas précisé que les programmes qui ne peuvent pas être divisés plus petits ne sont pas valides. Réviser le défi ...
Jwosty
@Jwosty: alors "HHHH" en HTML gagnerait. La note 5555ne fonctionne pas car elle n'a pas de caractère alphabétique
Claudiu
Vous avez besoin d'un caractère alphabétique.
qwr
@qwr: J'ai oublié ça en regardant GolfScript. Supprimé.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
Hmm ... Je suppose que c'est valable: P
Jwosty
5

! / bin / sh

J'ai tellement aimé la solution de qwr que j'ai fait sans vergogne un port pour le shell POSIX. Veuillez ne pas l'enregistrer dans un nom de fichier contenant des espaces.

: '#';cat $0

#c a t   $ 0

Commencez à supprimer au caractère numéro 1 et comptez les sauts de ligne comme des caractères. Le deuxième quine est bien sûr:

 #;a 0
cat $0

Veuillez voter pour la réponse de qwr au lieu de celle-ci!

joeytwiddle
la source
3

Bash, 23

Newline est un personnage!

Certains commentaires désordonnés fonctionnent, de sorte que lorsque tous les autres caractères à partir du premier sont supprimés, le commentaire devient du code et le code devient un commentaire:

#cRaRtR R$R0R R#
cat $0

Une fois tous les autres caractères ( y compris la nouvelle ligne ) supprimés:

cat $0 #ct$

la source
ce n'est pas une quine s'il lit sa propre source.
daniero
@daniero "-15% si la solution ne lit pas sa source de n'importe où sous quelque forme que ce soit" implique que vous êtes autorisé à lire la source du programme (mais vous n'obtenez pas le bonus)
@daniero oh j'ai regardé sur wikipedia Je suppose que c'est de la triche ... mais c'est du code-golf
Je vote toujours pour les chats!
Antonio Ragagnin
2

Brainf ** k, 37 - 15% = 31,45

Abuser de l' interprète portable Brainfuck

+A[B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]

Commencez à supprimer du deuxième caractère.

Timtech
la source
Quand je lance cela, j'obtiens B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]en sortie, donc il ne manque pas de caractères.
Sylwester
Est-ce Brainfuck, ou un dialecte particulier de Brainfuck qui ne fonctionne que sur un seul interprète?
user253751
@immibis C'est régulier (ces majuscules peuvent être des espaces ou des symboles ou n'importe quoi). Cependant, vous devez utiliser l'interpréteur portable lié à partir de la réponse.
Timtech
1
La première partie va à gauche jusqu'à ce qu'elle trouve le ÿ et l'interpréteur lié arrive à stocker le code 5000 octets avant le début de la bande de données. C'est Brainfuck à peine portable.
user253751
0

HQ9 + T, - 4 * 0,8 = 3,2 points

qqqq

C'est un quine valide (ish) et un quine tous les deuxième et cinquième caractères. Je n'ai pas pu résister. . . .

Gavriel Feria
la source