La tâche est simple: imprimez en The quick brown fox jumps over the lazy dog
utilisant le moins de caractères distincts possible dans votre code source.
print "The quick brown fox jumps over the lazy dog"
a un score de 29 caractères, car les 26 lettres minuscules apparaissent au moins une fois, ainsi qu'un T majuscule, des espaces et des guillemets. Je suis sûr que vous pouvez devenir plus créatif que ça!
Brainfuck, Whitespace et les langages similaires (à ma discrétion) sont interdits. Les sauts de ligne comptent pour un caractère. Le code peut être aussi long que nécessaire. J'accepterai une solution le 21 avril à 23 h 59 HNE. En cas d'égalité, la réponse la plus courte sera acceptée.
code-challenge
Fraxtil
la source
la source
least-characters
un critère officiel et un tag, commecode-golf
Réponses:
dc: 4 caractères distincts (
384375363361360350 caractères au total)Une réponse courte (mais loin d'être la plus courte possible, j'y travaille toujours) en utilisant seulement 4 caractères distincts et
384375363361360350 caractères au total, j'espère que vous la trouverez entièrement explicite:La réponse précédente qui est légèrement plus verbeuse (elle contient 13916 1):
Ah, tu dois juste aimer la calculatrice de bureau ole 'fidèle!
la source
Code machine Intel 64 bits pour Linux en binaire: 2 caractères distincts
Je refuse de le réécrire en unaire.
la source
Lua, 8 personnages distincts
Tous les caractères de nouvelle ligne doivent être supprimés de ce code pour obtenir une seule ligne de longueur 1998.
Lua 5.2 requis
Comment un programme Lua arbitraire pourrait être écrit en utilisant seulement 8 caractères
load"\05
Ayant des caractères
05\
, il est possible d'écrire un littéral de chaîne pour toute chaîne composée de caractères0257\
. En effet,"\\"
signifie barre oblique inverse,"2" == "\50"
et"7" == "\55"
("\ddd"
en Lua signifie char avec un code décimalddd
).Ayant des caractères
0257\
, il est possible d'écrire un littéral de chaîne pour toute chaîne composée de caractères024579\
(comme"4" == "\52"
et"9" == "\57"
)À l'étape suivante, les caractères
01245679\
deviendront disponibles.Une étape supplémentaire est requise pour obtenir tous les chiffres décimaux.
Lua a une fonction
load
qui traite une chaîne comme du code Lua et la convertit en fonction.Par exemple, des
load("print\"Hello\"")()
impressionsHello
.Il pourrait être écrit sans parenthèses:
load"print\"Hello\""""
(les deux dernières guillemets signifient une chaîne vide qui est passée comme paramètre facultatif à la fonction).Tout programme Lua peut être converti en alphabet réduit en 5 étapes maximum.
Exemple: Si notre programme se compose d'un seul chiffre
9
, alors seulement deux étapes sont requises:étape 0:
9
étape 1:
load"\57"""
étape 2:
load"load\"\\5\55\"\"\""""
la source
Python, 9
En utilisant cette idée . (Les sauts de ligne sont là pour la lisibilité et peuvent être supprimés.)
Cela crée la chaîne
'print"The quick brown fox jumps over the lazy dog"'
et l'exécute.la source
exec
, disons que vous l'exécutez sur le shell python et revendiquez 7 caractères.dc - 5 caractères distincts (2, i, 1,0, P)
la source
Tcl 10 caractères différents.
Les caractères utilisés:
,
0
,1
,2
,3
,4
,5
,6
,7
,\
C'est juste chaque partie de la commande encodée en séquence \ ooo. Pour Tcl, peu importe si vous faites des choses aussi drôles dans le nom de la commande ou dans ses arguments, en fait,
$object configure
c'est très courant dans Tcl / Tk.Avec cette technique,
eval
vous pourriez même écrire chaque programme en Tcl avec 10 octets différents :)Programme de test:
la source
\uXXXX
18 octets différents.GolfScript (4 caractères distincts, 441 caractères au total)
Caractères utilisés:
]1(+
Explication: dans GolfScript, l'ajout d'une chaîne à un tableau d'entiers convertit le tableau en une chaîne avec les entiers comme points de code, puis concatène les deux chaînes. Si rien n'est fourni sur stdin, la pile commence par une chaîne vide. Nous pouvons donc construire un tableau d'entiers avec les bons points de code, puis concaténer cette chaîne vide.
Nous aurons besoin
+
de la concaténation,]
au minimum pour créer le tableau (et[
pour empêcher que la chaîne vide ne soit incluse dans celui-ci ou pour une manière de l'extraire ensuite), et une manière de séparer les entiers. J'utilise donc l'opérateur de décrémentation(
pour séparer les entiers, ce qui nécessite des ajouts supplémentaires pour compenser dans certains cas, mais donne un moyen rapide d'obtenir par exemple 110; et cet opérateur est également l'opérateur pour extraire le premier élément d'un tableau, il sert donc à récupérer la chaîne vide pour la concaténation.la source
Ruby: 7 personnages distincts
(Merci à randomra pour son commentaire .)
Exemple d'exécution:
Compte:
la source
Java: 18 caractères distincts
Un programme Java peut être écrit en notation UNC ... Mais il reste verbeux!
la source
J, 6 caractères distincts
6 char distinct version (
u:10 +
) en utilisant une idée flornquake utilisé. La méthode consiste à ajouter des vecteurs de0
1
11
et111
ensemble pour additionner au84 104 101 32 113 117 ...
vecteur souhaité :Edit :
1+:1
est0
donc peut-être qu'il y a une solution à 5 caractères ici ... (Aussi,+:
le double pourrait être utilisé pour raccourcir la solution.)Version à 13 caractères distincts:
Amélioration de l'utilisateur anonyme (DirkL): solution plus courte mais toujours en utilisant 6 caractères (
u:23 |
) est possible. Utilisation|
comme opérateur de résidus pour les décimales, par exemple223 | 2333333 = 84
.la source
Befunge-98, 3 personnages distincts
Utilisation de cet interpréteur Befunge-98. Au début, j'ai rejoint la compétition à 4 personnages avec un
@
à la fin pour terminer. Ce programme génère à plusieurs reprisesThe quick brown fox jumps over the lazy dog\r
, où la fin\r
supprime la phrase précédente. Par conséquent, la phrase est écrite une fois.Befunge-98, 4 caractères distincts (1047 caractères au total)
La version moins cheaty. Celui-ci se termine normalement.
la source
JavaScript (dans la console Chrome) 17
J'ai eu la même idée que tremblement de terre mais il m'a aussi battu. J'ai donc opté pour la laideur pour ce faire!
la source
constructor+[]
est différent de ce que je reçois. Différentes versions chromées je suppose. Je vous ai dit que c'était mocheC, 15 caractères distincts
Une certaine inspiration de la réponse de Fors (que j'ai battue par un personnage) et le commentaire d'Ecatmur à cette réponse.
Les espaces et les retours à la ligne ne sont fournis qu'à des fins de clarté et ne sont pas comptés.
Comment ça marche?
1. Chaque groupe de 3 caractères est représenté par un nombre. Un pointeur vers ce nombre, traité comme un pointeur de caractère, est un pointeur vers une chaîne de ces 3 caractères, plus un caractère nul final. Suppose un petit endian.
2. La fonction
a
permet d'obtenir l'adresse d'un nombre littéral, sans définir de variable.la source
{}
dans l'une des lignes, ce qui le rendait sensible àa
la valeur de retour de.vba (
168 caractères distincts)(en utilisant les idées de matatwork et AutomatedChaos)
notez que si vous voulez mettre cela, vous devrez couper la ligne en 2, car c'est trop long pour l'éditeur VBA
la source
Chr()
? Il semble fonctionner très bien sans:?Chr(&0124);Chr(&0150);Chr(&0145);…
.?chr(1+)
ce sera quelque chose comme?chr(11+11+11+11+11+11+11+1+1+1+1+1+1+1)+chr(11+11+11+11+11+11+11+11+11+1+1+1+1+1)+ .... etc.
?Chr(&0124)Chr(&0150)Chr(&0145)…
.C: 16 caractères distincts
la source
if(putchar(...)+putchar(...)){}
supprime;
mais ajoutef
(mais repose sur l'ordre d'évaluation non spécifié).if(putchar(...)){}if(putchar(...)){}
etc.if(putchar(...))if(putchar(...)){}
ouif(putchar(putchar(...)+...){}
, mais toujours cette approche ne sauve pas un personnage.Postscript (19 caractères distincts)
Utilise les chiffres hexadécimaux 0-9, af, délimiteurs de chaîne hexadécimale <> et = pour imprimer.
(13 caractères distincts)
Les nombres radix binaires obtiennent les données en 4 caractères (0,1,2, #), mais il faut une chaîne vide () et quelques lettres (put, dup (-up), print (-pt)) pour insérer le nombre binaire là-dedans.
la source
APL 8
La commande suivante convertit une chaîne de caractères en son équivalent binaire:
Si nous affectons le binaire résultant au vecteur s pour éviter d'avoir à afficher tous les zéros et les uns, nous pouvons imprimer le résultat en inversant le processus en appliquant:
Ainsi, les 8 caractères uniques sont 8,2, ⎕, d, r, espace et le 0 et 1 dans le vecteur binaire s.
la source
k
12 personnages distincts
Les personnages sont
10h$2/:'(b;)
la source
PHP. 10 caractères distincts.
e, c, h, o, r, (, 1, +, ), ;
(Les sauts de ligne peuvent être supprimés.)la source
echo(chr(1+1+1+...));
, alors vous revenez à 10 caractères.Bash:
1816 caractères distinctsExemple d'exécution:
Compte:
la source
cat
n'est qu'une solution à 3 caractères. Le hic, c'est que vous devez y"The quick brown fox jumps over the lazy dog"
entrer.K, 9
1 @ 0 h $ (+;)
la source
Perl, 10 caractères
Fondamentalement, une arnaque de la solution Python de flornquake.
L'utilisation de la substitution avec
ee
est un moyen moins coûteux d'obtenireval
. Malheureusement, Perl utilise.
pour la concaténation, ce qui ajoute un caractère.J'espérais éliminer les parenthèses (qui sont facultatives pour les fonctions en Perl), en utilisant une syntaxe comme celle-ci:
(Oui,
s
est un délimiteur d'expressions rationnelles valide). Cependant, je n'ai pas pu faire fonctionner cela car la priorité de.
est trop élevée, essayant de concaténer avant d'appeler la fonction.la source
Erlang 8 personnages distincts
Caractères utilisés:
012#<>:.
la source
C (23 caractères distincts)
Remarque: Je n'ai pas inclus de sauts de ligne dans le nombre de caractères distincts, mais ceux-ci peuvent facilement être supprimés si nécessaire, au détriment de la lisibilité.
la source