In the spirit of Hello world! with NO repetition

Write a program that prints the string "the quick brown fox jumps over the lazy dog" with optional newline. The entire program must not repeat any characters.

Note that the string to be printed does repeat characters, so you will have to get around that limitation somehow.

Note that the winning condition is , i.e. the highest-voted answer wins.

Update: To make this a little easier, repetition is allowed but you must attempt to minimize it. Programs with less (or no) repetition are given precedence over programs with some repetition.

  • \$\begingroup\$ I'm afraid this is probably too hard, if not outright impossible. Hello world! without repetitions was hard enough that people had to resort to very niche languages or outright couldn't solve the task completely at all, and this one is considerably harder on top of that. \$\endgroup\$ – FireFly Jan 23 '14 at 17:29
  • 3
    \$\begingroup\$ Well, it sure is impossible in C. You can't call functions or use macros. \$\endgroup\$ – Oberon Jan 23 '14 at 17:50
  • \$\begingroup\$ I recommend: print the given string with as few repeated characters as possible. \$\endgroup\$ – primo Jan 23 '14 at 18:18
  • \$\begingroup\$ @FireFly didn't take long to have answers :) \$\endgroup\$ – SirDarius Jan 23 '14 at 19:10
  • 3
    \$\begingroup\$ @tmartin No, it isn't. The linked question favours repetition while the present question penalises it. \$\endgroup\$ – gerrit Jan 24 '14 at 12:05

Microsoft Word from 97 to 2003 (and some Mac Word versions) — 10 characters

No repetitions, but doesn't quite match specs - 10 characters:



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

Matches specs, other than capitalization and punctuation, one repetition - 10 characters:



The quick brown fox jumps over the lazy dog.

Newer versions of Microsoft Word use =rand.old(1,1) which duplicates d and 1.

There might be a way to use a field {=SUM(3,-2)} as input to rand() but my installation is having issues with fields -- namely, they're not working...

"Bob" has confirmed that {=SUM(3,-2)} (with some difficulty) can be used to replace the first 1, but = is repeated...


Provided you get Word to update SUM first, the output is:

The quick brown fox jumps over the lazy dog.
  • \$\begingroup\$ I'm not sure the given syntax is right, but I don't have any systems that old to test it on. For newer versions though, it should be =rand.old(1,1). I suppose you're trying to use 3-2 to replace the first 1, but it doesn't appear to be working for me in 2010 with rand.old or rand. \$\endgroup\$ – Iszi Jan 23 '14 at 19:02
  • \$\begingroup\$ I don't have a system here either, will check when I get home. Might need to use braces { ... } as delimiters, but I'm pretty sure expressions can be used in any function. If not, I'll revise! \$\endgroup\$ – user15259 Jan 23 '14 at 19:14
  • 2
    \$\begingroup\$ I can confirm the {=SUM(3,-2)} works in Word 2007. But the method is a bit complicated. First, you must insert a field code (Ctrl + F9). Then, right click => edit field => formula => advanced => type in the formula. Because typing it in directly doesn't work for whatever reason. Now click in the field and evaluate with Shift + F9. And add the =rand.old() \$\endgroup\$ – Bob Jan 24 '14 at 4:45
  • \$\begingroup\$ Is it necessary to use =SUM, or could simply use arithmetic operators directly, as 3-2? \$\endgroup\$ – supercat Jan 24 '14 at 15:44
  • \$\begingroup\$ @supercat - We tried that, and for some reason, Word does not accept expressions as parameters of =rand(), e.g. =rand(3-2,1) would be perfect. I actually didn't try =rand({=3-2},1), but it should work the same way, with duplication of =. \$\endgroup\$ – user15259 Jan 24 '14 at 16:03

Sclipting — 36 characters


(expects empty input)


Push the string "the quick brown ,fo,x, jumps ove,r the lazy dog,"
Retrieve last character from the string (",")
Regular expression string-split

The result is the list ["the quick brown ", "fo", "x", " jumps ove", "r the lazy dog", ""], which is automatically concatenated into a single string for output.

  • 1
    \$\begingroup\$ I count 105 bytes, not to mention several repeats. Char 235, for example, is used 20 times. \$\endgroup\$ – primo Jan 23 '14 at 21:52
  • 11
    \$\begingroup\$ "Must not repeat any characters", not "must not repeat any bytes". \$\endgroup\$ – Plutor Jan 23 '14 at 22:51
  • 3
    \$\begingroup\$ I'm not surprised Timwi, your own language is perfect for "no repeated characters" challenges. \$\endgroup\$ – Pierre Arlaud Jan 24 '14 at 10:40

Perl 6 (76 chars, no doubles)

The script (will be mangled by the board software, but there's En Space up to Thin Space and NL and LF and tab)

say EVAL    lc q{<the Quiţk Brown fïX jUmpS ůvťɲ Tɨå ìšzY dOg>~&(127.CHR
  • It uses EVAL (thanks again for making it uppercase) and <foo bar> quote words which supports all the special space characters as word separators.
  • say joins the list of strings using space, works nicely here :)
  • Next I use ~& and 127 to bit shuffle to plain ascii. Extra complication: 'Ŭ'.lc becomes 'ŭ' so that becomes an s instead of the r I needed. Adding 128 some extra times helps :)

A version with backslash escapes instead of unicode characters to show they're all different

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)}

If you want to verify they're all unique, use this script (I used Qb"string" to have basic quoting with only backslash escapes)

.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) ~ " $_"  }

Or execute it directly using

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)}"

PHP - 67 bytes


Copy-Paste, save as Latin-1 (Ansi).

This is a 7-byte xor-cipher, using the string ¶¥€¼½ˆ• for salt.

One repeated character: $.

  • \$\begingroup\$ You can shorten it another 3 character by using <?= since you are already using short tags \$\endgroup\$ – Kristoffer Sall-Storgaard Jan 24 '14 at 10:40
  • \$\begingroup\$ Ah, sorry, just noticed you already use = \$\endgroup\$ – Kristoffer Sall-Storgaard Jan 24 '14 at 10:41
  • \$\begingroup\$ @KristofferSHansen I think it should be possible to use eval('Return$g=binary;') in some cryptic form (perhaps bit inversion) to avoid the $ repetition, and then the = would be freed up as well. \$\endgroup\$ – primo Jan 24 '14 at 10:48
  • \$\begingroup\$ The opening tag should not be included in the byte count. \$\endgroup\$ – TecBrat Jan 24 '14 at 14:04
  • \$\begingroup\$ @TecBrat The final ; can be replaced by closing tag: should that not be counted either? In short, I disagree. If your code doesn't run as-is, it's not a complete program. \$\endgroup\$ – primo Jan 24 '14 at 14:14

Haskell, 71 characters

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

Yet another 7-bit modulo solution.

Repeated characters:

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

First time golfing with Haskell; anyone more experienced in the language, feel free to improve. I wanted to make the anonymous function point-free to avoid having to mention a variable twice, but I don't know if it'd be a net benefit.


JS, 35


(yeah... the double quote is repeated. and the output is bad. It's not a serious answer yet.)


Batch Script: 7 bytes

echo %1

If the script is named hello.bat, type this in at the command line:

hello.bat "The quick brown fox jumps over the lazy dog"
  • \$\begingroup\$ This is, this is so... case insensitive! (I mean, it doesn't print exactly what the question asks for.) \$\endgroup\$ – Mr Lister Jan 24 '14 at 11:10
  • 6
    \$\begingroup\$ By typing that in at the command line, you are repeating characters. \$\endgroup\$ – gerrit Jan 24 '14 at 11:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.