Der schnellste Fuchs im Osten

15

Im Geiste der Hallo Welt! ohne Wiederholung

Schreiben Sie ein Programm, das die Zeichenfolge "Der schnelle braune Fuchs springt über den faulen Hund" mit optionalem Zeilenumbruch ausgibt. Das gesamte Programm darf keine Zeichen wiederholen.

Beachten Sie, dass die Zeichenfolge gedruckt werden tut Wiederholung Zeichen, so dass Sie irgendwie diese Beschränkung umgehen müssen.

Beachten Sie, dass die Gewinnbedingung ein , dh die Antwort mit der höchsten Stimmenzahl gewinnt.

Update: Um dies ein wenig zu vereinfachen, ist eine Wiederholung zulässig, Sie müssen jedoch versuchen, diese zu minimieren. Programme mit weniger (oder keiner) Wiederholung haben Vorrang vor Programmen mit einer gewissen Wiederholung.

Manishearth
quelle
Ich fürchte, das ist wahrscheinlich zu schwer, wenn nicht gar unmöglich. Hello world!ohne Wiederholungen war es schon schwer genug, dass man auf sehr Nischensprachen zurückgreifen musste oder die Aufgabe gar nicht vollständig lösen konnte, und dies ist darüber hinaus erheblich schwieriger.
FireFly
3
Nun, es ist in C sicher unmöglich. Sie können keine Funktionen aufrufen oder Makros verwenden.
Oberon
Ich empfehle: Drucken Sie die angegebene Zeichenfolge mit so wenigen wiederholten Zeichen wie möglich .
Primo
@FireFly brauchte nicht lange, um Antworten zu haben :)
SirDarius
3
@tmartin Nein, das ist es nicht. Die verknüpfte Frage begünstigt die Wiederholung, während die vorliegende Frage sie bestraft.
Gerrit

Antworten:

32

Microsoft Word von 97 bis 2003 (und einige Mac Word-Versionen) - 10 Zeichen

Keine Wiederholungen, entspricht aber nicht den Spezifikationen - 10 Zeichen:

=rand(2,1)

Ausgabe:

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

Entspricht den Spezifikationen, außer Groß- und Kleinschreibung und Zeichensetzung, eine Wiederholung - 10 Zeichen:

=rand(1,1)

Ausgabe:

The quick brown fox jumps over the lazy dog.

Neuere Versionen von Microsoft Word verwenden =rand.old(1,1)die Duplikate dund 1.

Es könnte eine Möglichkeit geben, ein Feld {=SUM(3,-2)}als Eingabe für rand () zu verwenden, aber meine Installation hat Probleme mit Feldern - sie funktionieren nämlich nicht ...

"Bob" hat bestätigt, dass {=SUM(3,-2)}(mit einigen Schwierigkeiten) verwendet werden kann, um die erste zu ersetzen 1, wird aber =wiederholt ...

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

Vorausgesetzt, Sie aktualisieren Word SUMzuerst, lautet die Ausgabe:

The quick brown fox jumps over the lazy dog.

quelle
Ich bin nicht sicher, ob die angegebene Syntax richtig ist, aber ich habe keine Systeme, auf denen ich sie testen könnte. Für neuere Versionen sollte dies jedoch der Fall sein =rand.old(1,1). Ich nehme an, Sie versuchen 3-2 zu verwenden, um die erste 1 zu ersetzen, aber es scheint nicht für mich im Jahr 2010 mit rand.old oder rand zu funktionieren.
Iszi
Ich habe hier auch kein System, werde nachsehen, wann ich nach Hause komme. Möglicherweise müssen geschweifte Klammern { ... }als Begrenzer verwendet werden, aber ich bin mir ziemlich sicher, dass Ausdrücke in jeder Funktion verwendet werden können. Wenn nicht, werde ich überarbeiten!
2
Ich kann die {=SUM(3,-2)}Arbeiten in Word 2007 bestätigen . Aber die Methode ist ein bisschen kompliziert. Zuerst müssen Sie einen Feldcode eingeben (Strg + F9). Klicken Sie dann mit der rechten Maustaste => Feld bearbeiten => Formel => Erweitert => geben Sie die Formel ein. Weil es aus irgendeinem Grund nicht funktioniert, es direkt einzugeben. Klicken Sie nun in das Feld und werten Sie mit Shift + F9 aus. Und fügen Sie die=rand.old()
Bob
Ist es notwendig, =SUMarithmetische Operatoren zu verwenden , oder könnten sie einfach direkt verwendet werden 3-2?
Superkatze
@supercat - Wir haben versucht, dies zu tun, und aus irgendeinem Grund akzeptiert Word keine Ausdrücke als Parameter =rand(), z =rand(3-2,1). B. wäre dies perfekt. Ich habe es eigentlich nicht versucht =rand({=3-2},1), aber es sollte genauso funktionieren, mit der Vervielfältigung von =.
17

Sclipting - 36 Zeichen

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

(erwartet leere Eingabe)

Erläuterung:

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

Das Ergebnis ist die Liste ["the quick brown ", "fo", "x", " jumps ove", "r the lazy dog", ""], die zur Ausgabe automatisch zu einer einzigen Zeichenfolge verkettet wird.

Timwi
quelle
1
Ich zähle 105 Bytes, von mehreren Wiederholungen ganz zu schweigen. Char 235 wird beispielsweise 20 Mal verwendet.
Primo
11
"Darf keine Zeichen wiederholen ", nicht "Darf keine Bytes wiederholen".
Plutor
3
Ich bin nicht überrascht, Timwi, deine eigene Sprache ist perfekt für Herausforderungen "ohne wiederholte Charaktere".
Pierre Arlaud
13

Perl 6 (76 Zeichen, kein Doppel)

Das Skript (wird von der Board-Software entstellt, aber es gibt En Space bis zu Thin Space und NL und LF und tab)

say EVAL    lc q{<the Quiţk Brown fïX jUmpS ůvťɲ Tɨå ìšzY dOg>~&(127.CHR
x
43)}
  • Es verwendet EVAL (nochmals vielen Dank für die Großschreibung) und <foo bar>Anführungszeichen, die alle Sonderzeichen als Worttrennzeichen unterstützen.
  • say schließt sich der Liste der Zeichenfolgen mit Leerzeichen an, funktioniert hier sehr gut :)
  • Als nächstes benutze ich ~&und 127, um ein bisschen zu mischen, um Ascii zu machen. Zusätzliche Komplikation: 'Ŭ'.lcwird 'ŭ'so, dass eine sanstelle der von rmir benötigten wird. Das Hinzufügen von 128 zusätzlichen Zeiten hilft :)

Eine Version mit Backslash wird anstelle von Unicode-Zeichen ausgeblendet, um zu zeigen, dass sie alle unterschiedlich sind

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

Wenn Sie überprüfen möchten, ob sie alle eindeutig sind, verwenden Sie dieses Skript. (Früher Qb"string"habe ich einfache Anführungszeichen nur mit umgekehrten Schrägstrichen verwendet.)

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

Oder führen Sie es direkt mit aus

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
quelle
10

PHP - 67 Bytes

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

Kopieren-Einfügen, als Latin-1 (Ansi) speichern.

Dies ist eine 7-Byte-XOR-Chiffre, die die Zeichenfolge ¶¥€¼½ˆ•für Salt verwendet.

Ein wiederholtes Zeichen: $.

primo
quelle
Sie können es um weitere 3 Zeichen verkürzen, indem Sie verwenden, <?=da Sie bereits kurze Tags verwenden
Kristoffer Sall-Storgaard
Ah, sorry, habe gerade bemerkt, dass Sie bereits =
Kristoffer Sall-Storgaard
@KristofferSHansen Ich denke, es sollte möglich sein, eval('Return$g=binary;')in irgendeiner kryptischen Form (vielleicht Bit-Inversion) zu verwenden, um die $Wiederholung zu vermeiden , und dann =würde das auch befreit werden.
Primo
Das öffnende Tag sollte nicht in die Byteanzahl einbezogen werden.
TecBrat
@TecBrat Das Finale ;kann durch Schließen des Tags ersetzt werden: Sollte das auch nicht gezählt werden? Kurz gesagt, ich bin anderer Meinung. Wenn Ihr Code nicht wie besehen ausgeführt wird, ist er kein vollständiges Programm.
Primo
0

Haskell, 71 Zeichen

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

Noch eine 7-Bit-Modulo-Lösung.

Wiederholte Zeichen:

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

Zum ersten Mal Golf spielen mit Haskell; Wer mehr Erfahrung in der Sprache hat, kann sich gerne verbessern. Ich wollte die anonyme Funktion sinnlos machen, um zu vermeiden, dass eine Variable zweimal erwähnt werden muss, aber ich weiß nicht, ob dies ein Nettovorteil wäre.

Fraxtil
quelle
0

JS, 35

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

(Ja ... das doppelte Anführungszeichen wird wiederholt und die Ausgabe ist schlecht. Es ist noch keine ernsthafte Antwort.)

xem
quelle
-2

Stapelskript: 7 Bytes

echo %1

Wenn das Skript hello.bat heißt, geben Sie dies in die Befehlszeile ein:

hello.bat "The quick brown fox jumps over the lazy dog"
Frederick
quelle
Dies ist, das ist so ... case unempfindlich! (Ich meine, es wird nicht genau gedruckt, wonach die Frage fragt.)
Mr Lister
6
Indem Sie dies in die Befehlszeile eingeben, wiederholen Sie Zeichen.
Gerrit