Les caractères ASCII du code décimal 33 à 126 sont:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Notez que dans la plupart des polices, 25 de ces caractères ont des "trous": (un genre supérieur à 0, pourriez-vous dire)
#$%&04689@ABDOPQRabdegopq
Les 68 autres personnages "non masqués" sont:
!"'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}~
Votre tâche consiste à écrire le programme le plus court possible à l’aide des seuls caractères non masqués, générant chacun des caractères troués exactement une fois, dans n’importe quel ordre.
Etant donné que les espaces, tabulations et nouvelles lignes (saut de ligne et / ou retour chariot) sont des espaces vides, elles peuvent apparaître dans votre programme ou dans sa sortie. Ils comptent toujours pour le nombre de caractères. Les autres caractères ASCII ne peuvent pas être utilisés (et certainement pas les caractères non-ASCII).
Remarques
- Vous n'êtes pas obligé d'utiliser tous les caractères non masqués, ni un seul de chacun.
- La sortie ne doit pas contenir de caractères non masqués.
- Le langage Whitespace peut être utilisé.
- La sortie devrait aller à stdout ou peut aller dans un fichier. Il ne devrait y avoir aucune entrée.
Bonus: Juste pour le plaisir, essayez d'imprimer tous les personnages impossibles à l'aide des caractères troués. Je suis sceptique sur le fait que cela peut être fait dans une langue existante.
la source
main
.~
?Réponses:
Pyth ,
4335 caractèresEssayez ici .
Imprime les caractères dans l’ordre, sauf que 9 est au début, séparés par une nouvelle ligne.
La chaîne contient tous les caractères 7 supérieurs à ceux nécessaires, sauf que 9 deviendrait un @, il est donc casé spécial. Algorithme grâce à @Howard.
Explication:
la source
GolfScript,
3736 caractèresEssayez le code ici .
La chaîne contient les caractères interdits xorés avec 25. Heureusement, tous les caractères sont mappés sur ceux qui sont valides.
la source
Brainfuck 119
la source
--
au début ... Reviens-tu à 254 sur le registre initial là-bas?Bonus - dc, 179 caractères
Oh bien, un autre défi de jeu de caractères restreint où
P
est autorisé.Puisque
dc
est apparemment assez obscur pour exiger une explication (étrange pour moi compte tenu des choses étranges ici!), Voici un aperçu:C'est principalement une calculatrice RPN avec une arithmétique à précision arbitraire. Mais pour ce défi, je me sers de la
P
commande, qui interprète un nombre comme une série de caractères en base 256 et les imprime. Exemples:65 P
impressionsA
(code ASCII 65).16706 P
impressionsAB
(16706 = 65 * 256 + 66).En dehors de cela, la seule autre caractéristique intéressante est qu'il reconnaît tous les chiffres hexadécimaux,
0-9A-F
même s'ils ne sont pas contenus dans un nombre hexadécimal. L'entrée décimale étant la valeur par défaut, le jeton d'entrée999
signifie9 hundreds + 9 tens + 9
etABC
signifie le10 hundreds + 11 tens + 12
rendre équivalent à1122
.La possibilité d'utiliser les chiffres
ABD
en décimal compense en partie l'incapacité à utiliser12357
, et le choix de l'ordre et du regroupement fait le reste. (Si je besoin de quelques chiffresx
,y
,z
et ils ne sont pas représentables avec des chiffres autorisés, alors j'essaie représenter lax*256*256+y*256+z
place.)Le programme peut probablement être légèrement raccourci en utilisant des groupes plus importants. Je n'ai pas dépassé 3 octets par numéro.
la source
dc bonus.dc
. La dc est l’une des langues les plus anciennes du marché et fait partie de la vie de tous les jours depuis des décennies. Ce n'est pas bien connu, probablement en raison de sa syntaxe RPN, arcanique et peu lisible. Idéal pour certains défis de golf de code cependant ;-)Bash + coreutils, 56 octets
Comme par hasard, ajouter 7 à la valeur ascii des caractères perforés génère tous les caractères non masqués (à l'exception de "9"). Nous effectuons donc simplement cette transformation à l’inverse, puis une transformation similaire (soustrayez 12 de "E") pour obtenir le "9".
Sortie:
la source
-7
affichage bien visible entre les caractères de ponctuation, et ces 2 faits n'ont rien à voir l'un avec l'autre.Perl - 49 octets
C'est à peu près une version Perl de la solution de Howard. XORing la chaîne avec 25. La sortie est un fichier avec le nom
#$%&04689@ABDOPQRabdegopq
. J'ai eu l'idée d'utilisersymlink
et le nom du fichier comme format de sortie car tout le reste est banni.Voici une autre solution Perl que j'ai proposée. Cela peut probablement être beaucoup amélioré et c'est assez long, alors je pars dans un format lisible pour le moment.
Celui-ci génère de nombreux fichiers, le nom de chacun d'eux étant l'un des caractères. Je ne pouvais pas comprendre comment ajouter des chaînes sans utiliser un caractère interdit.
for
,while
,map
,say
,print
,eval
,s///e
Et un nom de variable ne peut pas être utilisé (variables commencent par@
ou$
en Perl) qui a rendu la tâche difficile.J'espère que les noms de fichiers sont acceptables en tant que format de sortie car je suis à peu près sûr que tous les autres moyens de produire des informations utilisent l'un des caractères interdits.
la source
-p
drapeau et*_=\(
...)
: Essayez-le en ligne!-p
drapeau serait interdit, car ilp
a un trou.MATLAB, 36 octets
SO CLOSE .... Seulement 1 octet de plus que le gagnant actuel (isaacg)! Ce qui, après une inspection plus poussée, a déjà fait ce que je voulais faire aussi. Eh bien, pas de mal à réinventer la roue ...
Je sais que c'est un vieux défi, mais je ne m'en suis rendu compte qu'après m'être intéressé.
Si seulement je pouvais faire comprendre à MATLAB que je veux une chaîne sans autre
''
suggestion ... suggérée, ça vous tente ?la source
Brainfuck
303275Brainfuck, le langage ésotérique ultime et impie (à part Whitespace);)
la source
Ctrl
+K
:)`
C'est un backtick. (Aussi appelé accent grave, bien que " quote thingies " en soit un nouveau pour moi: P)JS - 196 - l' essayer
la source
h=1-1;j=3+3;k='\\x';m=!i+k;c=m[1];f=m[i=2+2];l=k+3;n=k+j;r=k+i;this[f+'v'+c+'l'](c+'l'+f+'rt("\\x23\\x2'+i+k+25+k+2+j+l+h+l+i+l+j+l+2*i+l+3*3+r+h+r+1+r+2+r+i+r+'f\\x5'+h+k+51+k+52+c+n+2+n+i+f+n+7+n+'f\\x7'+h+k+'71")')
- inlinel
, raccourcim
, déclaréi
à la première utilisation, créé quelques vars supplémentaires pour les motifs répétés (vous pouvez éventuellement améliorer cela en modifiant l’ordre des caractères sortis, mais c’est au-delà de ma patience: P).GolfScript, 89 caractères
Génère simplement un tableau de tous les caractères ASCII et en soustrait les caractères non "masqués".
la source
Befunge 98 - 69 octets
Est-ce en 3 parties. Une où les valeurs de caractère non masquées diffèrent de 5 le caractère percé. Ensuite, celles qui diffèrent de 1, et enfin une liste de caractères non divisés qui diffèrent de 3 à partir de ceux percés. L'instruction de fin de programme dans Befunge est "@" (valeur de caractère 64), donc à la fin je charge "?" (valeur de caractère 63), ajoutez 1, puis mettez cela dans le code avec l'instruction 's'.
Je pourrais peut-être jouer au golf plus en consolidant les trois
section, mais probablement pas par beaucoup.
la source
JavaScript
240228Soumission initiale:
z=(!1+"")[1];y=(!!1+"")[3];x={}+"";w=x[1];v=x[2];u=z+"t"+w+v;1[_="c\157nstruct\157r"][_](z+'l'+y+'rt('+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')()
Voilà un bon début, voici comment cela se décompose ...
Et puis j'ai pensé ... "Il doit y avoir un moyen plus simple ..." et il y a ...
Soumission révisée:
z=(!1+"")[1];y=(!!1+"")[3];x={}+"";w=x[1];v=x[2];u=z+"t"+w+v;this[y+"v"+z+"l"](z+'l'+y+'rt('+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')
Voyant que je peux l’utiliser
eval
(en assemblant les éléments, en s’inspirant de @bebe; ce qui est beaucoup plus rapide que d’utiliserconstructor
un élémentconstructor
denumber
...), je l’ai descendue à 228 ... Je sais que ce ne sera peut-être pas le cas de ce Golf Challenge. , mais c’est ma façon de montrer à quel point vous pouvez abuser de JavaScript et obtenir le résultat souhaité ...la source
Main - Insomnie , 50
Il produit:
Bonus - Insomnie, 268
Il produit:
Je pense qu'il devrait être possible de réduire la longueur du programme si la sortie est réorganisée, mais je dois modifier mon programme de recherche pour le faire.
Juste pour montrer le cas une autre langue qui est capable de fonctionner avec un nombre limité de caractères. À propos, il peut écrire à peu près n'importe quelle sortie avec seulement 3 caractères uniques dans la source.
Actuellement, c'est la seule langue qui peut faire à la fois le défi principal et le bonus parmi toutes les réponses existantes.
Interprète de l'insomnie .
la source
Befunge 98 - 46 octets
Befunge-ified version de l'entrée Pyth de isaacg:
la source
Japt , 33 octets
Essayez-le en ligne!
Même algorithme que la soumission Python d’isaacg , il est juste plus court dans Japt.
Comment ça fonctionne
Oui, c'est JS, qui est l' une des langues les plus abusables , juste plus courte (et vous n'avez pas besoin
alert
ouconsole.log
ici).la source