Nous savons tous ce qu'est un quine . Un quine inversé est un programme non vide qui imprime l'inverse de son code source sans lire son code source, et se compose uniquement de caractères ASCII imprimables (espace à travers ~
).
Ici, «inverse du code source» signifie ce qui suit: la sortie de votre programme doit contenir chaque caractère ASCII imprimable (m - c) fois, où c est le nombre de fois que ce caractère apparaît dans votre code, et m est le maximum nombre de fois qu'un caractère est répété dans votre code.
(En d'autres termes: votre code + votre sortie = permutation de m fois tout en ASCII imprimable.)
Par exemple, si votre programme est 12345
, alors m = 1 , et vous devez sortir toute permutation de cette chaîne:
!"#$%&'()*+,-./06789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Si votre programme est AAB
, alors m = 2 , et vous devez sortir toute permutation de:
!!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@BCCDDEEFFGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~
Notez qu'il y a deux A
s manquants et un manquant B
.
Bien qu'un programme qui contient tous les caractères ASCII imprimables et ne produise rien ne soit un quine inverse valide (satisfaisant m = 1 ), une telle réponse ne serait pas très compétitive, étant donné sa longueur.
Vous devez écrire un programme qui est un quine inversé, comme décrit dans le paragraphe ci-dessus. Comme il s'agit de code-golf , le programme le plus court en octets gagnera. Bonne chance!
la source
duplicated for every repeated character in the source code
cela fait toute la différence dans le défi11234512345
?duplicated for every repeated character in the source code
signifie ou si la soumission est valide pour ce critère, parce que le PO n'a pas abordé tout à fait un quelques-unes des questions ici.Réponses:
Brain-Flak ,
221207 octetsComprend +1 pour
-A
Essayez-le en ligne!
la source
[
cinq fois, pas toujours. Notez qu'il2
n'est supprimé qu'une seule fois dans l'exemple. Le défi est cependant un peu déroutant.+1
:)!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
abcdefghijklmnopqrstuvwxyz {|} ~ ` obtiendrait un meilleur score: /CJam , 17 octets
Essayez-le en ligne!
Impressions
Explication
Le but était de modifier le quine standard
de sorte qu'aucun caractère ne soit répété dans le programme. La raison en est que CJam a un opérateur différent défini que nous pouvons utiliser pour supprimer des caractères de la plage ASCII imprimable, mais il ne prend pas en compte le nombre d'occurrences. L'implémentation manuelle serait probablement plus longue, donc je devais m'assurer que chaque personnage n'apparaît qu'une seule fois et nous n'avons pas à nous soucier des occurrences.
la source
Python 3 , 83 octets
Essayez-le en ligne!
Impressions
-0.375 False
.la source
05AB1E ,
956160 octets (pas 58 b / c je n'aime pas celui-là)Essayez-le en ligne!
Ancienne réponse invalidée par des "caractères ASCII uniquement", de nombreuses commandes ne sont pas valides ici.
Il s'imprime
abcdefghijklmnopqrstuvwxyz012345678
une fois car il n'y a pas de caractères en double.Version avec
BCDEFGHIKMNOPQRSTUVWXYZ
supprimé:Travail en cours ... Je pense que ~ 60 octets est aussi bas que possible sans caractères non ASCII dans 05AB1E ..
05AB1E , 58 octets
Essayez-le en ligne!
Imprime la sortie x12 en raison des caractères répétés:
Il ne se termine pas non plus correctement, y travaillant maintenant ...
Les anciennes réponses non valides (en raison de caractères non ASCII) ont été supprimées, voir l'historique des modifications.
la source
Java 8,
10699190 octetsla source
i {
class i{/*!"#$%&'()+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`bdefghjkmnopqrtuvwxyz|~*/}
suffisant? Il contient tous les ASCII imprimables dans son code source et ne produit rien. La partie " dupliquée pour chaque caractère répété dans le code source " s'applique à la sortie, donc même si elles
est dupliquée dansclass
et*
et/
est dupliquée en raison de/* */
, la sortie quatre fois rien n'est toujours rien.interface Z{}//!"#$%&'()*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY[\]^_`bdghjklmopqsuvwxyz|~
Javascript (ES6),
103101 octetsAncienne solution (103 octets en utilisant
alert
)Ancienne solution (non valide) (96 octets)
la source
//
, ce qui signifie que vous devez imprimer les caractères imprimables, un/
supprimé. (Je pense)