Le renard le plus rapide de l'Est

15

Dans l'esprit de Hello world! sans répétition

Écrivez un programme qui imprime la chaîne "le renard brun rapide saute par-dessus le chien paresseux" avec une nouvelle ligne en option. L'ensemble du programme ne doit répéter aucun caractère.

Notez que la chaîne à imprimer ne caractères répéter, de sorte que vous devrez contourner cette limitation en quelque sorte.

Notez que la condition gagnante est le , c'est dire -à- la réponse la plus votée l' emporte.

Mise à jour: Pour rendre cela un peu plus facile, la répétition est autorisée mais vous devez essayer de la minimiser. Les programmes avec moins (ou pas) de répétition ont la priorité sur les programmes avec une certaine répétition.

Manishearth
la source
Je crains que cela soit probablement trop difficile, sinon carrément impossible. Hello world!sans répétitions était suffisamment difficile pour que les gens aient dû recourir à des langues très niches ou ne pouvaient tout simplement pas résoudre complètement la tâche, et celle-ci est considérablement plus difficile en plus.
FireFly
3
Eh bien, c'est sûr impossible en C. Vous ne pouvez pas appeler de fonctions ni utiliser de macros.
Oberon
Je recommande: imprimez la chaîne donnée avec le moins de caractères répétés possible .
primo
@FireFly n'a pas mis longtemps à avoir des réponses :)
SirDarius
3
@tmartin Non, ce n'est pas le cas. La question liée favorise la répétition tandis que la présente question la pénalise.
gerrit

Réponses:

32

Microsoft Word de 97 à 2003 (et certaines versions de Mac Word) - 10 caractères

Pas de répétitions, mais ne correspond pas tout à fait aux spécifications - 10 caractères:

=rand(2,1)

Production:

The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog.

Correspond aux spécifications, autres que les majuscules et la ponctuation, une répétition - 10 caractères:

=rand(1,1)

Production:

The quick brown fox jumps over the lazy dog.

Les versions plus récentes de Microsoft Word utilisent les =rand.old(1,1)doublonsd et1 .

Il pourrait y avoir un moyen d'utiliser un champ {=SUM(3,-2)} comme entrée pour rand () mais mon installation a des problèmes avec les champs - à savoir, ils ne fonctionnent pas ...

"Bob" a confirmé que {=SUM(3,-2)}(avec une certaine difficulté) peut être utilisé pour remplacer le premier 1, mais =est répété ...

=rand({=SUM(3,-2)},1)

Si vous obtenez d'abord Word pour mettre à jour SUM, la sortie est:

The quick brown fox jumps over the lazy dog.

la source
Je ne suis pas sûr que la syntaxe donnée soit correcte, mais je n'ai aucun système aussi ancien pour le tester. Pour les versions plus récentes, cela devrait l'être =rand.old(1,1). Je suppose que vous essayez d'utiliser 3-2 pour remplacer le premier 1, mais cela ne semble pas fonctionner pour moi en 2010 avec rand.old ou rand.
Iszi
Je n'ai pas de système ici non plus, je vérifierai quand je rentrerai. Peut-être besoin d'utiliser des accolades { ... }comme délimiteurs, mais je suis sûr que les expressions peuvent être utilisées dans n'importe quelle fonction. Sinon, je vais réviser!
2
Je peux confirmer les {=SUM(3,-2)}travaux dans Word 2007. Mais la méthode est un peu compliquée. Tout d'abord, vous devez insérer un code de champ (Ctrl + F9). Ensuite, faites un clic droit => champ d'édition => formule => avancé => tapez la formule. Parce que le taper directement ne fonctionne pas pour une raison quelconque. Maintenant, cliquez dans le champ et évaluez avec Shift + F9. Et ajoutez le=rand.old()
Bob
Est-il nécessaire d'utiliser =SUM, ou pourrait simplement utiliser directement des opérateurs arithmétiques, as 3-2?
supercat
@supercat - Nous avons essayé cela, et pour une raison quelconque, Word n'accepte pas les expressions comme paramètres de =rand(), par exemple, ce =rand(3-2,1)serait parfait. En fait, je n'ai pas essayé =rand({=3-2},1), mais cela devrait fonctionner de la même manière, avec duplication de =.
17

Sclipting - 36 caractères

덆둥긇굵늖꽫긆깲닷덮긂롦닲롸껂걪덖륰댲걯덦넬댢건늆넠닆굺뎒걤닶댬首坼

(attend une entrée vide)

Explication:

Push the string "the quick brown ,fo,x, jumps ove,r the lazy dog,"
덆둥긇굵늖꽫긆깲닷덮긂롦닲롸껂걪덖륰댲걯덦넬댢건늆넠닆굺뎒걤닶댬
Retrieve last character from the string (",")
首
Regular expression string-split
坼

Le résultat est la liste ["the quick brown ", "fo", "x", " jumps ove", "r the lazy dog", ""], qui est automatiquement concaténée en une seule chaîne pour la sortie.

Timwi
la source
1
Je compte 105 octets, sans parler de plusieurs répétitions. Le caractère 235 , par exemple, est utilisé 20 fois.
primo
11
"Ne doit répéter aucun caractère ", pas "ne doit répéter aucun octet".
Plutor
3
Je ne suis pas surpris Timwi, votre propre langue est parfaite pour les défis "sans caractères répétés".
Pierre Arlaud du
13

Perl 6 (76 caractères, pas de double)

Le script (sera modifié par le logiciel de la carte, mais il y a En Space jusqu'à Thin Space et NL et LF et tab)

say EVAL    lc q{<the Quiţk Brown fïX jUmpS ůvťɲ Tɨå ìšzY dOg>~&(127.CHR
x
43)}
  • Il utilise EVAL (merci encore de le mettre en majuscule) et <foo bar> cite des mots qui prennent en charge tous les caractères d'espace spéciaux comme séparateurs de mots.
  • say rejoint la liste des chaînes en utilisant l'espace, fonctionne bien ici :)
  • Ensuite, j'utilise ~&127 et bit pour mélanger à ascii simple. Complication supplémentaire: 'Ŭ'.lcdevient 'ŭ'ce qui devient un sau lieu du rnécessaire. Ajouter 128 fois supplémentaires aide :)

Une version avec barre oblique inversée au lieu de caractères Unicode pour montrer qu'ils sont tous différents

say\x[3000]EVAL\x[9]lc q{<the\x[2003]Qui\x[163]k\x[2004]Brown\x[2005]f\x[EF]X\x[2006]jUmpS\x[2007]\x[16F]v\x[165]\x[272]\x[2008]T\x[268]\x[E5]\x[2009]\x[EC]\x[161]zY\x[200A]dOg>~&(127.CHR\x[0A]x\x[0D]43)}

Si vous voulez vérifier qu'ils sont tous uniques, utilisez ce script (j'avais l'habitude Qb"string"d'avoir des citations de base avec seulement des échappements antislash)

.say for 
Qb"say\x[3000]EVAL\x[9]lc q{<the\x[2003]Qui\x[163]k\x[2004]Brown\x[2005]f\x[EF]X\x[2006]jUmpS\x[2007]\x[16F]v\x[165]\x[272]\x[2008]T\x[268]\x[E5]\x[2009]\x[EC]\x[161]zY\x[200A]dOg>~&(127.CHR\x[0A]x\x[0D]43)}"
.comb.Bag.grep(*.value > 1).map: {.key.ord.base(16) ~ " $_"  }

Ou exécutez-le directement en utilisant

EVAL Qb"say\x[3000]EVAL\x[9]lc q{<the\x[2003]Qui\x[163]k\x[2004]Brown\x[2005]f\x[EF]X\x[2006]jUmpS\x[2007]\x[16F]v\x[165]\x[272]\x[2008]T\x[268]\x[E5]\x[2009]\x[EC]\x[161]zY\x[200A]dOg>~&(127.CHR\x[0A]x\x[0D]43)}"
Ayiko
la source
10

PHP - 67 octets

<?echo$g^¶¥€¼½ˆ•.${~˜}=ÂÍåœÌýü¡¦Åþ¾’‹Ï†£‘ƲáºëÓâæݗߙ󖎸·³ø‰ï®ÜØÔ;

Copiez-collez, enregistrez en Latin-1 (Ansi).

Il s'agit d'un chiffrement xor à 7 octets, utilisant la chaîne ¶¥€¼½ˆ•pour le sel.

Un caractère répété: $.

primo
la source
Vous pouvez raccourcir 3 caractères <?=
supplémentaires
Ah, désolé, je viens de remarquer que vous utilisez déjà =
Kristoffer Sall-Storgaard
@KristofferSHansen Je pense qu'il devrait être possible d'utiliser eval('Return$g=binary;')sous une certaine forme cryptique (peut-être l'inversion de bits) pour éviter la $répétition, puis le =serait également libéré.
primo
La balise d'ouverture ne doit pas être incluse dans le nombre d'octets.
TecBrat
@TecBrat La finale ;peut être remplacée par une balise de fermeture: cela ne doit-il pas être compté non plus? Bref, je ne suis pas d'accord. Si votre code ne s'exécute pas tel quel, ce n'est pas un programme complet.
primo
0

Haskell, 71 caractères

map(\c->chr$mod(ord c)128)"tŨeఠquiţkĠbŲɯwnȠfѯxРjѵŭŰsܠůvťѲठѴѨѥਠlšzyଠɤկg"

Encore une autre solution modulo 7 bits.

Caractères répétés:

c 3
d 2
m 2
o 2
r 2
( 2
) 2
" 2

Golf pour la première fois avec Haskell; toute personne plus expérimentée dans la langue, n'hésitez pas à vous améliorer. Je voulais rendre la fonction anonyme sans point pour éviter d'avoir à mentionner deux fois une variable, mais je ne sais pas si ce serait un avantage net.

Fraxtil
la source
0

JS, 35

btoa("¶ªº'$nº0ú1驲ޮØ^¬òv")

(ouais ... la double citation est répétée. et la sortie est mauvaise. Ce n'est pas encore une réponse sérieuse.)

xem
la source
-2

Script de lot: 7 octets

echo %1

Si le script est nommé hello.bat, saisissez-le sur la ligne de commande:

hello.bat "The quick brown fox jumps over the lazy dog"
frederick
la source
C'est, c'est tellement ... insensible à la casse! (Je veux dire, il n'imprime pas exactement ce que la question demande.)
M. Lister
6
En tapant cela sur la ligne de commande, vous répétez des caractères.
gerrit