Imprimez chaque personnage que votre programme n'a pas

221

Votre tâche consiste à créer un programme (en utilisant uniquement des caractères ASCII imprimables et / ou des onglets et des nouvelles lignes) qui imprime exactement les caractères de l'espace imprimable ASCII ( 0x20à 0x7e) qui n'apparaissent pas dans le code source de votre programme (dans n'importe quel ordre). plusieurs fois que vous voulez).

Le code le plus court pour le faire dans n'importe quelle langue gagne.

Joe Z.
la source
19
Ils sont, mais ils ne sont pas dans la plage 0x20de 0x7e, qui sont définis comme les "caractères ASCII imprimables". Techniquement, les onglets et les nouvelles lignes sont en réalité des caractères de contrôle.
Joe Z.
3
Sommes-nous autorisés à imprimer des nouvelles lignes (ou tout autre caractère ASCII non imprimable)?
Flornquake
1
Les onglets et les nouvelles lignes ne s'affichent pas de manière à occuper une position d'impression. Ils déplacent la position. Voir la fonction ANSI C "isprint".
Kaz
1
Comment cette question a-t-elle été relancée? Il a recommencé à avoir des votes positifs.
Joe Z.
3
@ Timwi: Si vous voulez faire cela, vous devez aussi afficher tous les caractères de l'espace des caractères CJK (à l'exception de ceux figurant dans votre code). C'est trop compliqué à gérer, je l'ai donc limité à ASCII.
Joe Z.

Réponses:

275

Polyglotte, 95

#undef X;A!"$%&'()*+-[,.]/0123456789:<=>?@BCDEFGHIJKLMNOPQRSTUVWYZ\^_`abcghijklmopqrstvwxyz{|}~

Ne fait rien.

Johannes Kuhn
la source
19
Non, mais c'est une polygot. Je ne veux pas détruire ça.
Johannes Kuhn
95
J'ai introduit cela dans le compilateur GNU Fortran et il s'est séparé.
marinus
12
En C, #undef X;whatever junk you wantfonctionne.
ugoren
6
Fonctionne également en Python (car il utilise #des commentaires comme Ruby et Perl)
Bouton de porte
87
"Le code le plus court pour le faire, quelle que soit la langue, gagne." En l'absence d'un code qui fonctionne dans n'importe quelle langue, cette entrée devrait être gagnante, car c'est le code qui fonctionne dans le plus grand nombre de langues. ;-D
msb
142

PHP 5.2, 4

<?<<

Enregistrer sous un fichier appelé NYUIOMK()'DEAQRWVX[Z]\^@CBGFJqwv{z}|~`bgfkj203547698;=>!#"%$&+*-.phpquelque part dans /home. short_open_tagdoit être Ondans votre php.ini.

La sortie est:

PHP Parse error:  syntax error, unexpected T_SL in /home/wherever/NYUIOMK()'DEAQRWVX[Z]\^@CBGFJqwv{z}|~`bgfkj203547698;=>!#"%$&+*-.php on line 1
Ry-
la source
42
Haha, bon pliage des règles.
Johannes Kuhn
6
Bien, mais malheureusement, je peux en repérer un :dans la sortie.
Howard
12
-1; meta.codegolf.stackexchange.com/a/1072/11066
Le gars avec le chapeau
78
J'apprécie, @TheGuywithTheHat, mais j'ai répondu à cela il y a environ un an, par opposition à hier.
Ry-
9
@TheGuywithTheHat C'était l'une des réponses lorsque l'échappatoire était drôle, nouvelle et menait à votre méta-post lié. Maintenant ce n'est plus.
Johannes Kuhn
48

JavaScript - 88

alert("BCDFGHIJKMNPQUVXYZ".toLowerCase())// !#$%&'*+,-0123456789:;<=>?@[\]^_`{|}~AERTOWS

estampes "bcdfghijkmnpquvxyz"

xem
la source
13
Wow, j'aime bien l'idée de toLowerCase, c'est génial!
Pierre Arlaud
2
Vous pouvez enregistrer trois caractères avec un peu de math: "!#$%&*+,-13:<=>?@[\]^_`{|}~AERTOWS";alert('BCDFGHIJKMNPQUVXYZ'.toLowerCase()+95*72)car 95*72= 6840et déplacer les caractères perdus vers une chaîne vous permet d'utiliser les guillemets au lieu de les perdre. En plus de cela, cacher des personnages dans un commentaire est dérisoire.
Parapluie
28

Espace blanc, 61 57 caractères

Ce n'est pas le plus court mais il a probablement la logique la plus simple (c'est vraiment une boucle).

Ici, il est complètement commenté, où S est l'espace, T est la tabulation, L est le saut de ligne:

SSSTSSSSSL     # push 0x20
LSSSL          # label S
SSSTL          # push 1
TSSS           # add
SLS            # duplicate top of stack
SLS            # duplicate again
TLSS           # output ASCII character
SSSTTTTTTSL    # push 0x7E
TSST           # subtract (result - 0x7E)
LTTSL          # branch to label S if top of stack is negative
LLL            # end

Merci à @res pour la correction ci-dessus (copie supplémentaire requise pour l’instruction de branche) et pour des nombres plus petits pousser sur la pile.

DPenner1
la source
1
Cela ne fonctionne pas tel quel, mais peut être corrigé en insérant un SLS (duplicate-top-of-of-stack) immédiatement avant la branche conditionnelle (LTTSL) - il est nécessaire car la commande de branche conditionnelle supprime le sommet de la pile. . Le programme résultant de 64 caractères fonctionne comme annoncé. (Si le programme est stocké dans un fichier avec l'extension .ws, il peut être testé en ligne sur golf.shinh.org/checker.html )
res
1
En outre, la longueur du programme peut être réduit à 57 en utilisant à peu près le même programme mais avec les trois numéros poussé -94, 127, 126 à 32 changées, 1, 126, respectivement SSSTSSSSSL LSSSL SSSTL TSSS SLS SLS TLSS SSSTTTTTTSL TSST LTTSL LLL.
res
Je sais que cela fait plus de 5 ans, mais vous pouvez jouer au golf 5 octets en changeant le libellé S en libellé (vide) ( LSSSLdevient LSSLet LTTSLdevient LTTL) et en supprimant la sortie à la fin (les trois LLL). Essayez-le en ligne brut 52 octets ou ici avec mise en évidence et explication .
Kevin Cruijssen
22

C, 83 74 69 caractères

main(z) {for(;++z<96;"\33iE!vk?}GkRP8z"[z/7]&1<<z%7&&putchar(z+32));}

J'ai vraiment essayé de le réduire à moins de 80 caractères, mais je n'ai tout simplement pas réussi à le faire. J'ai finalement décidé de publier ce que j'ai, en partant du principe que moi-même (ou quelqu'un d'autre) trouverai une solution à 79 caractères dix minutes après sa publication. D'accord, ce n'était pas tout à fait dix minutes, mais cela fonctionnait en principe.

Je voulais vraiment publier une version qui n'avait pas besoin d'un espace gratuit dans le code source, mais qui atterrissait dans une orbite étrange, en se balançant entre une poignée de solutions. Après plusieurs minutes d’essais de pousser l’un d’eux à une solution stable, j’ai abandonné et ajouté de l’espace.

boite à pain
la source
69 personnages, nice
galois il y a
21

Golfscript, 26 24 caractères

"126,32>''+".~\-'.~\-"'-

Prend un script de génération d'intervalle, le duplique, l'exécute, le soustrait de son résultat, puis soustrait le code de soustraction du résultat et l'autre caractère de citation.

John Dvorak
la source
2
Bon sang, c'est malin.
marinus
1
Supprimer ''+, échapper programme avant soustraction, mettre dans un noop .;(n'a pas trouvé un meilleur moyen de couvrir le point), utiliser un bloc de code au lieu d'une chaîne -> {126,33>`-.;}.~qui fait 16 caractères
Howard
Et en utilisant dans n'importe quel ordre, aussi souvent que vous le souhaitez, vous pouvez également supprimer le point-virgule.
Howard
@ Howard, j'ai bien peur de ne pas comprendre votre idée. Vous pouvez l'afficher séparément.
John Dvorak
@PeterTaylor Je pensais avoir imprimé un espace?
John Dvorak
20

Poisson - 80

zbcdjkpqruvwxaABCDEFGHIJKLMNOPQRSTUVWXYZ#!"'$%^&*()@!+-[]{},;:/\<>=?|~0123456789

Lorsque le poisson se trompe, il affiche "quelque chose sent le poisson ...". Puisque z est une mauvaise instruction, il se trompe tout de suite

Cruncher
la source
17

Je sais que ce n'est pas gagner des concours. Je voulais juste l'essayer dans une langue qui n'est pas utilisée normalement, juste pour le plaisir.

Java - 209 195 152 140 caractères

class a{public static void main(String[]a){for(char c=0;;c++)System.out.print("publicas{tvodmn(Srg[])h=0;w+ye.\"\\xO<?:}".indexOf(c)<0?c:"");}}

Avec des sauts de ligne et des tabulations

class a{
    public static void main(String[]a) {
        for(char c=0;;c++)
            System.out.print("publicas{tvodmn(Srg[])h=0;w+ye.\"\\xO<?:} ".indexOf(c)<0?c:"");
    }
}

Attention si vous exécutez: le programme ne se termine pas. Haha

Explication

  1. for(char c=0;;c++): Puisque a charpeut être traité comme un int, j’utilise cela à mon avantage ici pour incrémenter toutes les valeurs possibles de c. J'omets la condition de fin dans la boucle (celle qui irait entre les deux points-virgules) afin d'économiser sur les caractères, car il n'était pas spécifié que le programme devait se terminer. :)
  2. "publicas{tvodmn(Srg[])h=0;w+ye.\"\\xO<?:} ".indexOf(c)<0?c:"": Malheureusement, ce n’est pas une approche très élégante, mais le travail est fait. Répertoriez manuellement tous les caractères présents dans le code source en tant que Stringlittéral, puis vérifiez si le courant s'y char ctrouve indexOf(). Si l’ indexOf()appel revient -1, il n’existe pas et nous devons donc l’imprimer. Le reste utilise simplement l'opérateur ternaire pour économiser sur les caractères et l'espace.
asteri
la source
pouvez-vous expliquer un peu?
joey rohan
1
@joeyrohan Bien sûr, je viens d'ajouter une explication en dessous. :)
asteri
cool;) nice stuff :)
joey rohan
2
Vous pouvez mettre l'ENSEMBLE du tableau imprimable ascii dans un commentaire et créer un programme java qui ne renvoie rien. Il battrait le tien :-)
Pierre Arlaud Le
9
Vous auriez pu me dire que cela va imprimer chaque caractère Unicode avant que je ne l'exécute dans mon terminal.
nyuszika7h
14

Perl, 49 caractères

say grep/[^+-246\[-^aceghmprsy]/,map chr,041..126

C'est un défi intéressant - c'est en quelque sorte l'anti-quine, et j'ai réussi à raccourcir le programme plusieurs fois en augmentant le nombre de caractères qui y figurent.

boite à pain
la source
14

Ruby, 81 78 68 66 62 57

(?!..?~).map{|a|$><<a if/[()ifmap{}|?!.~\/\\\[\]$><]/!~a}

Se vérifie simplement. Les caractères en double ont été supprimés manuellement.

Merci à Josh pour avoir sauvegardé 4 caractères et à minitech pour avoir sauvegardé 5 caractères!

Poignée de porte
la source
Ne pouvez-vous pas mettre le si après le $> << x pour enregistrer l'une des lignes de fin?
Josh
@ Josh Oui. Je vais le faire maintenant.
Poignée de porte
Vous pouvez le prendre à 58:(?!..?~).map{|x|$><<x if/[()ifmap{}|x?!.~\/\\\[\]$><]/!~x}
Ry-
1
Ah, et avec un meilleur choix de nom de variable, 57:(?!..?~).map{|a|$><<a if/[()ifmap{}|?!.~\/\\\[\]$><]/!~a}
Ry-
$><<((32..126).map(&:chr)-IO.read(__FILE__).chars).join55 octets utilisant une approche différente.
twe4ked
14

Befunge (48)

<|::-1,+*88:<+3*87
6<@.**85
9>"()~&"/%$ |!#';=?}

Sorties: {zyxwvutsrqponmlkjihgfedcba` _ ^] [ZYXWVUTSRQPONMLKJIHGFEDCBA240

Luciole
la source
Vache sacrée! Bon travail!
Cruncher
12

Pas très grave, mais je devais essayer:

JSFuck (138152)

(source compilée ici)

Source primaire:

for(x=0x7e;x>0x19;x--){
    console.log(String.fromCharCode(x).replace(/[\[\]!\+\(\)]/ig, ''))
}

Imprime tous les caractères sauf () + []!

Qqwy
la source
2
(x)<=> [x][+[]]augmente la taille du code mais réduit l'alphabet requis.
FireFly
12

Votre tâche consiste à créer un programme (en utilisant uniquement des caractères ASCII imprimables et / ou des tabulations et des nouvelles lignes).

Gosh, vous avez rendu la tâche difficile à APL (est-ce un délit?)
J'ai donc décidé d' ignorer toutes les règles !

APL (Dyalog), 3 10

⎕AV

Imprime le vecteur atomique (qui inclut tous les caractères ASCII imprimables)


Il s'avère que j'ai complètement oublié la partie "sans" ...
Mais c'est une solution facile

⎕AV~'AV'''

~'AV'''signifie exclure ( ~) les caractères A, V et guillemets simples (échappés sous forme de guillemets simples doublés)

En ce qui concerne l’impression non-ASCII, j’ignore toutes les règles.

TwiNight
la source
« print [s] exactement les caractères dans l'espace ASCII ( 0x20à 0x7e) qui ne figurent pas dans le code source de votre programme » je crois que la sortie ne peut pas contenir des caractères en dehors de l'espace ASCII ( « exactement » étant le mot - clé) et votre programme contient «A» et «V», ils ne doivent donc pas être imprimés.
FireFly
1
Vous voudrez au moins ajouter ~à l'ensemble des caractères exclus. ;-) Btw, une solution J similaire seraita.-.'a.-'''
FireFly
2
Vous pouvez ignorer toutes les règles, mais cela vous empêche d'être la réponse acceptée.
Joe Z.
11

GolfScript ( 18 16 caractères)

"),@`^^32>#.~".~

Démo en ligne avec une ligne supplémentaire qui effectue une vérification de l'exactitude et affiche le nombre de caractères erronés.

(J'ai plusieurs alternatives équivalentes. @`^Peuvent être remplacées par \\`; #peuvent être remplacées par `ou ]. La bonne combinaison peut être utilisée avec le tour d'Howard pour égaler son score de 15, car les barres obliques inversées n'ont pas besoin de s'échapper par blocs comme elles le sont dans les littéraux de chaîne: {),\`^32>].~}.~Mais Howard mérite le crédit pour ce tour).

Peter Taylor
la source
1
abus de règle sympa :-) golfscript.apphb.com/?c=ImAnficoLCszMj5cXC0uIi5%2B
John Dvorak Le
2
Heureusement, ascii se termine }~- encore mieux pour les blocs de code, voir ma nouvelle réponse ;-)
Howard
11

Brainfuck, 173

+++++[->++++++<]>>>++[------<+>]<++++>>----[----<+>]>-[-------<+>]>-[---<+>]<------->>-[---<+>]<+++++++++>>--[-----<+>]<+++++>>+[---------<++>]+++++++++++++[<[.+<]>[>]<-]\=,

Assez longtemps, je pourrais réessayer plus tard.

copie
la source
6
écrivez un programme qui ne fait rien et ajoutez le reste od ascii à la source, dans le pire des cas, cela donne 96 caractères.
Jasen
10

J ( 52 40)

Edit: Duh, oublié e.

'''([email protected]#[)~95{32}a'(-.@e.#[)~95{.32}.a.

Ancienne version:

(>@(*/@('(>@*/''&~:).#]32{95}a'&~:)&.>)#])95{.32}.a.

Autre variante (même longueur mais moins sortie):

([#~*/"1@('([#~*/"1@''&:0)95{.32}a'&~:"0))95{.32}.a.
marinus
la source
@JanDvorak: typo whoops
marinus
Mince! J'espérais pouvoir être assez faible en Ruby pour te battre et ensuite tu le laisses tomber jusqu'à 40.: P
Doorknob
Le nouveau a l'air beaucoup plus chic.
John Dvorak
1
@Doorknob: J'en ai un dans APL qui ne contient que 24 caractères mais qui contient des caractères non-ASCII.
marinus
Oui, j'ai utilisé ASCII pour éviter des langages comme APL.
Joe Z.
7

Python 3 - 68 61

x=r"print(*set(map(chr,range(32,127)))-set(x+'=\"'))"
exec(x)

... Merci à @WolframH pour les améliorations.


la source
1
Je pense que vous pouvez mettre exec(x)dans une nouvelle ligne et enregistrez le ;dans x. De plus, en Python 3, vous pouvez utiliser x=r"print(*set(map(chr,range(32,127)))-set(x+'=\"'))"\nexec(x)61 caractères (imprime plusieurs espaces, ce qui est autorisé).
WolframH
@WolframH ingénieux, merci!
7

PowerShell: 96

Doit être enregistré et exécuté en tant que script.

diff([char[]](gc $MyInvocation.InvocationName))([char[]](32..126))-Pa|?{$_.SideIndicator-eq'=>'}

diffest un alias intégré pour Compare-Object.

gcest un alias intégré pour Get-Content.

$MyInvocation.InvocationName obtient le chemin complet du script en cours d'exécution.

32..126est l'équivalent décimal de 0x20..0x7e, et crée ainsi un tableau des codes ASCII décimaux que nous recherchons.

[char[]]prend le contenu de l'objet suivant et le met dans un tableau, le divise et le convertit en caractères ASCII. Nous avons donc maintenant deux tableaux de caractères ASCII: l’un tiré de ce script, l’autre défini par les critères de challenge.

-Padéfinit le Compare-Objectformat "Passthru", de sorte que seuls les éléments qui se trouvent différents entre les entrées sont sortis sur la console - les indicateurs indiquant les éléments dans lesquels les entrées sont toujours stockées dans les données de l'objet, mais ne sont pas affichés.

|?{$_.SideIndicator-eq'=>'}Compare-ObjectLa sortie de pipes to Where-Object, qui la filtre en fonction des éléments exclusifs à la seconde entrée.

Iszi
la source
Sain d'esprit et instructif.
Stéphane Gourichon
7

PHP - 92

<? //A"$%&'()*+[,.]0123456789:=-@ABCDEFGHIJKLMNOPQRSTUVWYZ\^_`abcdefghijklmopqrstuvwxyz{|}~#

Sortie:

rien

Le PO demande à imprimer tous les caractères non utilisés, eh bien, je les utilise tous

Fès Vrasta
la source
Qu'en est- il <?='A"$%&\'()*+[,.]/0123456789:=-@ABCDEFGHIJKLMNOPQRSTUVWYZ\^_`abcdefghijklmopqrstuvwxyz{|}~#'?
Jocap
Je savais qu'il y aurait une soumission qui utilise uniquement tous les caractères.
MilkyWay90
1
Cela n'utilise pas les personnages!;>Xn
Jo King
6

Javascript, 92

(function f(){for(i=32;126>i++;)!~(""+f).indexOf(c=String.fromCharCode(i))&&console.log(c)})()
C5H8NNaO4
la source
Est-ce une solution juste? alert ('! "# $% ^ * + / -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [] ^ _` bcdfghijkmnopqsuvwxyz | | ~) S'installe à 95 caractères et devient muet à l'enfer.: p
Tristin
2
@tristin: P yeah javascript est un peu bavard quand il s'agit de charcode to string. Et n’est-ce pas la sortie de tous les caractères de votre programme? Le texte de votre alerte est également dans votre programme :)
C5H8NNaO4
1
Haha, oups. Tant pis.
Tristin
6

Java - 126 caractères

minimisé:

class hjq{public static void main(String...w){for(char z='"'|0;++z!='a';)if("'()+.0;=OS".indexOf(z)==~0)System.out.print(z);}}

non minimisé:

class hjq {
    public static void main(String... w) { 
        for (char z = '"'|0; ++z != 'a';) {
            if ("'()+.0;=OS".indexOf(z) == ~0) {
                System.out.print(z);
            }
        }
    }
}

Ceci est un problème intéressant, car les jetons individuels pourraient bénéficier de leur forme plus longue car ils réutilisent des caractères. Par exemple, normalement String[]serait plus court, mais String...supprime la nécessité des crochets dans la chaîne conditionnelle.

J'ai trouvé que le truc était d'essayer d'utiliser des caractères au début et à la fin de la plage pour pouvoir les exclure de la sortie simplement en modifiant le début et la fin de votre boucle.

Pour Java, un caractère de clé à exclure est ", car avoir cela dans la chaîne nécessite de l'échapper, ce qui ajoute \à votre programme, ce qui doit aller dans la chaîne, ce qui ajoute \\. En supprimant "de votre chaîne conditionnelle, vous supprimez 4 caractères. Ceci peut être réalisé en veillant à ce que vous utilisez et !et démarrer votre boucle à partir #.

Toutes les lettres minuscules apparaissent à la fin de la plage, avec seulement {, |, }et à ~venir après eux. En raison de la verbosité de Java, la plupart des lettres minuscules sont utilisées uniquement pour le passe-partout. De même, {et }sont triviales pour un programme Java, parce que le passe-partout les requiert.

|peut être utilisé si vous avez une condition ou, mais je ne trouvais pas le moyen de tirer parti d’une condition qui conduirait à un programme plus court qu’un simple emploi en |tant qu’opérateur au niveau du bit. La |0me fait me sentir un peu sale, car il est la seule partie qui est un nop juste pour obtenir le caractère là - dedans.

~0les rendements -1, ce qui est pratique car c’est ce que nous devons vérifier indexOf. En combinant ceci avec l'utilisation !=de la boucle conditionnelle, le <caractère est totalement éliminé , ce qui signifie qu'il n'est pas nécessaire d'entrer dans la chaîne conditionnelle.

ICR
la source
5

sh (47)

tr</dev/urandom -cd \[:print:]|tr -d "`cat $0`"

Utilise l'approche auto-référentielle. Suppose que /dev/urandomtous les octets seront finalement sortis au moins une fois. Ne se termine pas.

Si nous supposons que cela manest installé, nous pourrions utiliser la ascii(7)page de manuel (et avoir ainsi un programme de terminaison) ( 44 caractères, merci @fennec).

man ascii|tr -cd \[:print:]|tr -d "`cat $0`"
Luciole
la source
Pourriez-vous utiliser un autre fichier, éventuellement avec un nom plus court, garantissant essentiellement tous les octets possibles? et pourrait même se terminer? Je pense comme / dev / memory ou quelque chose.
@fennec si nous supposons que manet zshsont installés, man zshallsemble correspondre aux critères. Je pourrais ajouter cela comme une variation.
FireFly
man asciipourrait vous sauver une autre lettre, je pense.
Que trutilisez-vous? GNU trconsidère l'entrée -" cat $0" comme un opérateur de plage, ce qui rompt la sortie.
Toby Speight
BTW, si le asciiprogramme est installé, vous pouvez l’utiliser à la place de man ascii.
Toby Speight
5

BitShift , 1038 octets

BitShift est un langage qui ne supporte que 0et 1comme syntaxe. Je pensais qu'il serait facile d'imprimer tous les autres caractères, mais comme il ne supportait pas vraiment la boucle, il restait encore un énorme 1038 octets.
Cependant, je crois qu’il n’est pas vraiment possible de faire plus petit que cela.

101001100101011011010100110111010100100101011001101111010100100101011001000101011011010100101100110110101001001010110010001010110110101000001101010010010101100100010101101101010000010000011001010110110101000010000101011011010100110111010100100101011111100101011011010100110111010100100101011001101111010100100101011001000101011011010100000000011010100100101011001000101011011010100110010000101011011010100110111010100100101011001101001101010010010101100100010101101101010011001000010101101101010011011101010010010101111011111110010101101101010011011101010010010101100101100101011011010100010001010110110101001000010101101101010011011101010010010101110111110010101101101010011011101010010010101111111100101011011010100110111010100100101011111011110101001001010110010001010110110101001000100000101011011010100110111010100100101011111010011010100100101011001000101011011010100100000101011011010100110111010100100101011001101111010100100101011001000101011011010100010000010101101101010011011101010010010101101001101101010010010101101001101010

Impressions

 !"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Essayez-le ici

Bassdrop Cumberwubwubwub
la source
4

La solution la plus longue ici, mais coder dans Lino est toujours amusant:

L.in.oleum -655 523 caractères

"libraries"/arch/cpu/base;/hmi/conout;/data/bytes;/data/string/t2s;/data/heap;/data/heap/connect/mgrab;"stockfile"a;"directors"displaystatus=engage;"injection"c=524;b<-bytes.bytesizeconvert:c;b<-heap.alloc:b;a<-heap.alloc:c;[filecommand]=readfile;[filename]=stockfile;[fileposition]=0;[fileblocksize]=c;[fileblockpointer]=b;arch.fileread;[string.psource]=b;[string.ptarget]=a;string.t2s;b<-heap.alloc:7fh;c=32;d=b;"f"[d_32]=c;+c;+d;?c<7fh>f;"w"d=[a];+a;?d=0>y;?d<32>w;?d>7eh>w;e=b;e+d;[e]=33;^w;"y"b+32;"v"conout.say:b;bye;

Pas de commentaire, lit simplement le source compilé en binaire. Enregistrez sous a.txtou ne compilerez pas!

Gronostaj
la source
4
Non, le JSFuck est plus long.
Joe Z.
4

Brainfuck, 133 123 114 110 octets

++++++++++++++++[->++++++>++>+++>++++>++<<<<<]>-->>->->+[---<.+.+<.+<.+<.+.+.+>>>>]++[-<.+.+.+<.+>>]<+.<+.<++.

Un peu plus de bricolage avec une ancienne solution (avant que je réalise que le dessous était plus petit - bien que ce fût avant que je ne fasse une optimisation lourde). Cela fonctionne en stockant 4 séries de numéros ascii et en les imprimant avec des boucles délicates, puis en donnant les caractères manquants par la suite (c.-à-d. Ceux se trouvant entre des numéros ascii non valides).

Soumission originale

>>+++++++++++[<+<+>>->++>+++<<]<++>>++++++>>+++++[-<<<++++++>>>]<<<+<<[->>+.<<]>>++.++<[->+.<]>++.+>[-<+.>]<++.+>>[-<<+.>>]

Il fait ce qui suit:

  • Créez 4 registres contenant 11. 13, 28, 33
  • Créez une cinquième avec la valeur 31 pour lancer l'impression
  • Imprimer ascii 32-42 (11)
  • Imprimer ascii 44
  • Imprimer ascii 47-59 (13)
  • Imprimer ascii 61
  • Imprimer ascii 63-90 (28)
  • Imprimer ascii 92
  • Imprimer ascii 94-126 (33)
FIQ
la source
4

Haskell (70)

import Data.List
main=putStrLn$[' '..'~']\\" \\\"$'.=DLS[]aimnoprstu~"

La solution ennuyeuse de doublons-caractères-dans-programme-dans-une-chaîne, soustrait-de-universel-set. Loin d'un vainqueur de code-golf, sa longueur est étonnamment lisible.

(Maintenant avec soustraction de liste au lieu de filter/ notWith.)

Luciole
la source
vous pouvez changer import Data.Listàimport List
fier haskeller
. @ fierhaskeller hein, vraiment? Cela ne semble pas fonctionner lorsque je l'essaie avec runhaskell: "Impossible de trouver le module 'Liste'". J'ai remarqué que je comptais mal le nombre de caractères, alors je l'ai corrigé.
FireFly
1
c'est bizarre, essayez avec ghc ou ghci? Cela fonctionne pour moi
fier haskeller
@ Proudhaskeller Nope, n'arrive pas à le faire fonctionner. Ceci est avec GHC 7.8.3.
FireFly
3

J - 21

(u:32+i.97)-.1!:1<":5

écrivez ceci dans un fichier appelé 5dans le répertoire en cours. Puis chargez le script avec0!:1<'5'

Ou 25 sans l'astuce de fichier:

(-.~".)'(":u:32+i.0-~95)'
jpjacobs
la source
Le code source contient ', qui n'est pas supprimé de la sortie.
FireFly
3

Clojure (142, 106, 103)

(defn -main[](let[c"(fn[l](pr(reduce disj(set(map char(range 32 126)))l)));-\\\"o"]((load-string c)c)))

formaté:

(defn -main []
  (let [c "(fn[l](pr(reduce disj(set(map char(range 32 126)))l)));-\\\"o"]
    ((load-string c) c)))

Pense que cela le fait, peut-être besoin de quelques ajustements. sortie:

#{@ ` ! A B b # C $ D % E & F ' G H I * J + K k , L M . N / O 0 P Q q R S 4 T 5 U V v 7 W w 8 X x 9 Y y : Z z { < | = } > ^ ? _}

exécute la chaîne, qui est un code pouvant être évalué, sur elle-même. String a quelques commentaires à la fin pour obtenir les caractères utilisés en dehors de la chaîne (méthode principale, etc.)

RedDeckWins
la source
3

Python 2, 69

for x in range(38):print chr(x+59)#!"$%&'*,-./012467bdjklmqsuvwyz{|}~

J'utilise la plus longue séquence (que je suis capable de trouver) de caractères continus que je peux imprimer et ajouter les autres comme commentaire après le code.

milles
la source
8
Je ne vais pas voter contre tout ce qui a un commentaire
John Dvorak
Ma réponse devrait montrer le pire moyen possible de résoudre cette tâche. (Utilisez le trou de commentaire).
Johannes Kuhn
9
ok ... sauf pour ce qui est Polyglotte rien , mais un commentaire.
John Dvorak
@JohannesKuhn Cependant, comme c'est le code le plus long qui fonctionne, il ne gagnera pas le concours. : P
Joe Z.
5
@ JoeZ. il gagne largement si vous divisez par le nombre de langues dans
lesquelles