Najszybszy lis na wschodzie

15

W duchu Witaj świecie! bez powtórzeń

Napisz program, który wypisze ciąg „szybki brązowy lis przeskakuje nad leniwym psem” z opcjonalnym znakiem nowej linii. Cały program nie może powtarzać żadnych znaków.

Zauważ, że łańcuch zostanie wydrukowany robi powtarzania znaków, więc trzeba będzie obejść to ograniczenie jakoś.

Pamiętaj, że warunkiem wygranej jest , tzn . Wygrana jest odpowiedź o najwyższym głosowaniu .

Aktualizacja: Aby to trochę ułatwić, powtórzenie jest dozwolone, ale musisz spróbować go zminimalizować. Programy z mniejszą liczbą powtórzeń (lub bez) mają pierwszeństwo przed programami z pewną liczbą powtórzeń.

Manishearth
źródło
Obawiam się, że jest to prawdopodobnie zbyt trudne, jeśli nie wręcz niemożliwe. Hello world!bez powtórzeń było na tyle trudne, że ludzie musieli uciekać się do bardzo niszowych języków lub zupełnie nie mogli całkowicie rozwiązać zadania, a ten jest znacznie trudniejszy.
FireFly
3
Cóż, na pewno jest to niemożliwe w C. Nie można wywoływać funkcji ani używać makr.
Oberon
Polecam: wydrukuj podany ciąg przy użyciu jak najmniejszej liczby powtarzających się znaków .
primo
@FireFly nie potrzebowało długo odpowiedzi :)
SirDarius
3
@tmartin Nie, to nie jest. Połączone pytanie sprzyja powtórzeniu, podczas gdy obecne pytanie karze je.
gerrit

Odpowiedzi:

32

Microsoft Word od 97 do 2003 (i niektóre wersje Mac Word) - 10 znaków

Bez powtórzeń, ale nie do końca pasuje do specyfikacji - 10 znaków:

=rand(2,1)

Wynik:

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

Odpowiada specyfikacjom innym niż wielkie litery i interpunkcja, jedno powtórzenie - 10 znaków:

=rand(1,1)

Wynik:

The quick brown fox jumps over the lazy dog.

Nowsze wersje Microsoft Word używają =rand.old(1,1)duplikatów di 1.

Może być sposób na użycie pola {=SUM(3,-2)}jako danych wejściowych dla rand (), ale moja instalacja ma problemy z polami - a mianowicie nie działają ...

„Bob” potwierdził, że {=SUM(3,-2)}(z pewnym trudem) można go zastąpić pierwszym 1, ale =powtarza się ...

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

Pod warunkiem, że SUMnajpierw zaktualizujesz program Word , wynikiem będzie:

The quick brown fox jumps over the lazy dog.

źródło
Nie jestem pewien, czy podana składnia jest poprawna, ale nie mam systemów, w których można by ją przetestować. W przypadku nowszych wersji tak powinno być =rand.old(1,1). Podejrzewam, że próbujesz użyć 3-2, aby zastąpić pierwszą 1, ale wydaje się, że nie działa to dla mnie w 2010 z rand.old lub rand.
Iszi
Nie mam tu też systemu, sprawdzę, kiedy wrócę do domu. Być może trzeba użyć nawiasów klamrowych { ... }jako ograniczników, ale jestem pewien, że wyrażeń można użyć w dowolnej funkcji. Jeśli nie, dokonam korekty!
2
Potwierdzam {=SUM(3,-2)}prace w programie Word 2007. Ale metoda jest nieco skomplikowana. Najpierw musisz wstawić kod pola (Ctrl + F9). Następnie kliknij prawym przyciskiem myszy => pole edycyjne => formuła => zaawansowane => wpisz formułę. Ponieważ wpisywanie go bezpośrednio nie działa z jakiegokolwiek powodu. Teraz kliknij pole i oceń za pomocą Shift + F9. I dodaj=rand.old()
Bob
Czy konieczne jest użycie =SUM, czy może po prostu bezpośrednie użycie operatorów arytmetycznych 3-2?
supercat
@ supercat - Próbowaliśmy tego iz jakiegoś powodu Word nie akceptuje wyrażeń jako parametrów =rand(), np. =rand(3-2,1)byłoby idealne. Właściwie nie próbowałem =rand({=3-2},1), ale powinno to działać w ten sam sposób, z powielaniem =.
17

Sclipting - 36 znaków

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

(oczekuje pustych danych wejściowych)

Wyjaśnienie:

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

Wynikiem jest lista ["the quick brown ", "fo", "x", " jumps ove", "r the lazy dog", ""], która jest automatycznie łączona w pojedynczy ciąg wyjściowy.

Timwi
źródło
1
Liczę 105 bajtów, nie wspominając o kilku powtórzeniach. Na przykład Char 235 jest używany 20 razy.
primo
11
„Nie wolno powtarzać żadnych znaków ”, nie „nie wolno powtarzać żadnych bajtów”.
Plutor
3
Nie dziwię się, Timwi, twój własny język jest idealny na wyzwania „bez powtarzających się postaci”.
Pierre Arlaud
13

Perl 6 (76 znaków, bez dublowania)

Skrypt (zostanie zmieniony przez oprogramowanie płytki, ale jest En Space do Thin Space oraz NL, LF i tab)

say EVAL    lc q{<the Quiţk Brown fïX jUmpS ůvťɲ Tɨå ìšzY dOg>~&(127.CHR
x
43)}
  • Używa EVAL (jeszcze raz dziękuję za zrobienie wielkich liter) i <foo bar> cytuje słowa, które obsługują wszystkie specjalne znaki spacji jako separatory słów.
  • say dołącza do listy ciągów za pomocą spacji, ładnie tu działa :)
  • Następnie używam ~&i 127 do bitowania losowego na zwykły ascii. Dodatkowa komplikacja: 'Ŭ'.lcstaje się 'ŭ'taka, że ​​staje się szamiast rpotrzebnej. Dodanie 128 dodatkowych czasów pomaga :)

Wersja z ukośnikiem odwrotnym zamiast znaków Unicode pokazuje, że wszystkie są różne

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

Jeśli chcesz sprawdzić, czy wszystkie są unikalne, skorzystaj z tego skryptu (zwykłem Qb"string"cytować tylko znaki specjalne z odwrotnym ukośnikiem)

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

Lub uruchom go bezpośrednio za pomocą

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
źródło
10

PHP - 67 bajtów

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

Kopiuj-wklej, zapisz jako Latin-1 (Ansi).

Jest to 7-bajtowy szyfr xor, wykorzystujący ciąg znaków ¶¥€¼½ˆ• dla soli.

Jeden powtórzony znak: $.

primo
źródło
Możesz skrócić go o kolejne 3 znaki za pomocą, <?=ponieważ już używasz krótkich tagów
Kristoffer Sall-Storgaard
Ach, przepraszam, właśnie zauważyłem, że już używasz =
Kristoffer Sall-Storgaard
@KristofferSHansen Myślę, że powinno być możliwe użycie eval('Return$g=binary;')jakiejś tajemniczej formy (być może bitowej inwersji), aby uniknąć $powtórzeń, a wtedy też =zostaną uwolnione.
primo
Znacznik otwierający nie powinien być uwzględniany w liczbie bajtów.
TecBrat
@TecBrat Finał ;można zastąpić zamykającym tagiem: czy też tego nie należy liczyć? Krótko mówiąc, nie zgadzam się. Jeśli kod nie działa tak, jak jest, nie jest to kompletny program.
primo
0

Haskell, 71 znaków

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

Kolejne 7-bitowe rozwiązanie modulo.

Powtarzające się postacie:

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

Po raz pierwszy gra w golfa z Haskell; każdy, kto ma większe doświadczenie w tym języku, może go poprawić. Chciałem, aby funkcja anonimowa była bezcelowa, aby uniknąć konieczności dwukrotnego wymieniania zmiennej, ale nie wiem, czy byłaby to korzyść netto.

Fraxtil
źródło
0

JS, 35

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

(tak ... podwójny cytat się powtarza. Wynik jest zły. To jeszcze nie jest poważna odpowiedź.)

Xem
źródło
-2

Skrypt wsadowy: 7 bajtów

echo %1

Jeśli skrypt ma nazwę hello.bat, wpisz go w wierszu polecenia:

hello.bat "The quick brown fox jumps over the lazy dog"
Frederick
źródło
To jest tak ... rozróżniana wielkość liter! (Mam na myśli, że nie drukuje dokładnie tego, o co pyta.)
Pan Lister
6
Wpisując to w wierszu poleceń, powtarzasz znaki.
gerrit