Program musi wydrukować alfabet cztery razy: najpierw w normalnej kolejności alfabetycznej, drugi w kolejności klawiatury qwerty, trzeci w kolejności klawiatury dvorak, a na końcu w odwrotnej kolejności alfabetycznej. Dane wyjściowe powinny przypominać to:
abcdefghijklmnopqrstuvwxyz
qwertyuiopasdfghjklzxcvbnm
pyfgcrlaoeuidhtnsqjkxbmwvz
zyxwvutsrqponmlkjihgfedcba
W danych wyjściowych nie jest rozróżniana wielkość liter i można dodawać lub pomijać znaki nowej linii lub spacje w dowolnym miejscu.
Haczyk : program musi mieć mniej niż 104 znaki lub, innymi słowy, być mniejszy niż długość alfabetu razy cztery.
Przyjmę odpowiedź z najkrótszym kodem, chyba że zobaczę coś naprawdę sprytnego lub interesującego, na którym jestem pod większym wrażeniem.
EDYCJA: Przyjmę najkrótszą odpowiedź w środę 27.04.2011.
EDIT2: A zwycięzcą jest (jak zwykle) Golfscript w 64 znakach ! Drugie miejsce , za którym są tylko trzy znaki, znajduje się również w Golfscript, z 67 znakami, a następnie Bash na trzecim miejscu z 72 znakami.
Ale chciałem wspomnieć o kilku innych, takich jak ten , który w zależności od twojej definicji używał tylko 52 „znaków”, i ten, w którym napisał go w języku, który stworzył.
Było kilka osób, które złamały niepisaną zasadę i się nie zakwalifikowały, ale wspomnę o nich tylko ze względu na sposób myślenia bez pudełka.
źródło
Odpowiedzi:
Python 2, 97 znaków
Sortowanie QWERTY i powrót z listy do łańcucha znaków jest krótsze niż sam alfabet! *
Inna opcja generowania alfabetu składającego się z mniejszej liczby znaków niż sam alfabet:
Mimo to drukuje listę znaków w języku Python.
Nie ma tu wiele do zrobienia w zakresie kompresji danych; zacięcie liter na 5 bitów pozwala zaoszczędzić tylko 39 znaków, co nie jest zbyt duże, jeśli musisz je odblokować (i nadal musisz reprezentować bajty dosłownie); wygląda na to, że zlib (przykładowo) zapisuje mniej niż 20 bajtów; kodowanie sekwencji jako listy delt do następnej litery nadal zajmuje 5 bitów dla każdej delty, ponieważ największa w tej sekwencji to -22:
* Chociaż tylko nieznacznie.
źródło
q="qwertyuiopasdfghjklzxcvbnm";a=sorted(q);print(*a,q,"pyfgcrlaoeuidhtnsqjkxbmwvz",*a[::-1])
PHP, 100 bajtów
Zgodnie z ISO 8859-1:
Aby odtwarzać niezawodnie,
źródło
Ruby 1.9,
88878480źródło
Bash, 82
źródło
Python,
9796 „znaków”Biorąc swobodnie korzystanie ze słowa „znaki”, oto niektóre python, który używa 16-bitowych znaków Unicode do kodowania 3 normalnych znaków każdy. Program składa się w sumie z 96 znaków, z których 35 to najdziwniejsze znaki Unicode, jakie kiedykolwiek widziałem.
Nie jestem pewien, czy śmieci unicode przyjdą poprawnie, więc oto program w języku Python do generowania powyższego programu w języku Python:
źródło
Bash, 72
EDYCJA: usunięta
tr -d
.Kredyty: Alexander, Roger.
źródło
|tr -d ' '
, zapisać 10 znaków i uczynić tę wersję liderem w momencie pisania :-)Golfscript, 64 znaki
Uwaga: także 64 bajty. W rzeczywistości granie ze zmianami Unicode i podstawowymi wydaje się nieproduktywne, ponieważ
base
jest zbyt długim słowem kluczowym.źródło
Windows PowerShell, 89
Niezbyt dobre, ale co najmniej krótsze niż ciąg wyjściowy:
O wiele krótszy teraz, kiedy zobaczyłem, że na białych znakach jest relaks. I jeszcze trochę krótszy, jeśli zignoruję przypadek, do którego mi wolno.
źródło
)
tam dodatkowe . Powinno być 88.Golfscript,
76, 67 znakówźródło
123,97>+
do generowania początkowego alfabetu.CI - 92 znaki
CI („Compiler / Interpreter”) to prosty język oparty na stosach, który stworzyłem dla wyzwania „Interpreter interpretujący” ( link do odpowiedzi ). Opublikowałem tę odpowiedź około dwie godziny przed opublikowaniem tego wyzwania. To nie jest GolfScript (którego do tej pory nie uczyłem się), ponieważ moim celem było skrócenie tłumacza.
Ten program musi zostać przekazany
ci
tłumaczowi przez standardowe wejście. Interpretator traktuje znaki po zakończeniu)
jako dane wejściowe do programu. Mój język nie obsługuje literałów łańcuchowych, więc stdin zajmuje jego miejsce.źródło
Python 2.7.X - jak na ironię 103 znaki ...
Jak się okazuje, generowanie alfabetu w pythonie wymaga więcej znaków niż jego kodowanie. Podobnie jak importowanie alfabetu. Czasami uwielbiam język skoncentrowany na czytelności.
źródło
+
zamiast tego,
i zaoszczędzić to miejsce.C - 133 znaki
Skrócona wersja Casey:
Białe znaki:
Wyjście transponowane
Oto wersja, która transponuje dane wyjściowe dla zabawy. 134 znaki.
Białe znaki:
Wydruki:
źródło
i
jako globalny i umieszczającstrcpy(...)
w pierwszym bloku pętli for, dostajesz 129. wciąż za dużo.jot
Moje pierwsze doświadczenie z J. Ideą jest po prostu użycie kanonicznej (leksykograficznej) liczby wymaganej permutacji; niestety wymaga to więcej znaków niż kodowanie na stałe. Ale jeśli można znaleźć jakieś wyrażenie arytmetyczne (użycie mocy i tak dalej) dające magiczne liczby, można je skrócić.
źródło
Python, 90 znaków Unicode
uruchom na ideone - http://ideone.com/R2dlI lub codepad - http://codepad.org/lp77NL9w
źródło
JavaScript
139121Nowy:
stary:
źródło
alert((a=(q='qwertyuiopasdfghjklzxcvbnm').split('').sort()).join('')+q+'pyfgcrlaoeuidhtnsqjkxbmwvz'+a.reverse().join(''))
Lua - 111 znaków
Bije C i C ++! :-)
„Sprytna” wersja w Lua
129 znaków
Białe znaki:
źródło
C -
163135 znakówTo nie spełnia wymagań, ponieważ zawiera ponad 104 znaki, ale fajnie było go tworzyć. Może ktoś będzie miał jakieś sugestie.
Kompiluje się w GCC 4.5.1 (inne niesprawdzone). Tak, pomijając #include, typy zwracane i deklaracje zmiennych! Kodowanie byłoby krótszym programem, ale to nie jest żadna zabawa.
Wersja z białymi znakami:
C -
124122 lameOto kiepska wersja zakodowana na stałe, która wciąż nie nadaje się do cięcia.
źródło
puts()
Zamiast tego użyj printf w drugim przypadku - 2 znaki mniej.while
zeputs(a);
w pierwszym przypadku, zrzucając*p=a
; - 138 znaków zamiast 163.puts
. ZmienionoPHP 88 bajtów
źródło
J - 69 znaków
Wyjaśnienie:
(,\:~) y
- Sortujy
w malejącej kolejności (\:~
) i dopisz (,
), abyy
.x (,~|.) y
- Reverse (|.
)y
i dołącz to z przodux
.x F&G y
- Wykonaj(G y) F (G y)
, czyli wykonajF
na podstawie wyników zastosowaniaG
argumentów.Tak więc razem dodajemy alfabet do tyłu zarówno ciąg Dvorak, jak i wsteczny QWERTY, a następnie odwracamy QWERTY / alfabet jeden i umieszczamy go przed Dvorak / alfabet jeden.
źródło
Bash, 64
Jestem spóźniony na przyjęcie, ale mam rozwiązanie 64-znakowe. Program musi zostać zapisany na dysku do pracy
Jak to działa:
{a..z}
i{z..a}
są dość oczywiste, ale po prostu drukuje każdą postać w tym zakresie.$(sed 1d $0|base64)
wypisuje program, ignoruje pierwszy wiersz, a następnie przepuszcza go przez koder base64 (jak to zrobiły niektóre inne przykłady).Powód jest krótszy niż w innych podobnych przykładach ...
... ponieważ
{a..z}
zakresy są krótsze niż kodowanie base64, więc muszę tylko kodować base64 połowę łańcucha. A ponieważ czytam dane binarne z pliku, a nie przechowuję je w ciągu, nie muszę uciekać od żadnego znaku w kodzie.Jak odtworzyć ten skrypt:
Jeśli kod nie kopiuje się / nie wkleja poprawnie z Stack Exchange do edytora tekstowego, uruchom w wierszu poleceń następujące polecenie (niezależnie od powłoki):
Następnie uruchomić:
źródło
05AB1E , 25 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
C ++
To trochę smutne, gdy najkrótszym sposobem na zrobienie czegoś w języku jest zaprogramowanie go na stałe.
źródło
std::cout
jest krótszyusing namespace std
i możesz pominąćvoid
.J (77)
Ogolono 3 znaki za pomocą zmiennej:
Ogolono 2 kolejne znaki, stosując podejście oparte na wartości:
źródło
Haskell (95)
Perl (51)
Nie ma reguły, która mówi, że nie mogę.
źródło
Q (68)
Wyjścia:
Próbowałem znaleźć poprawę w kodowaniu dwóch środkowych, ale nie wpadłem na żaden.
źródło
K - 69 char
Wyjaśnienie:
26#a:
- Przypisz dwa układy klawiatury doa
, a następnie weź pierwsze 26 znaków.b:a@<
- Sortuja
i przypisz to dob
:<
zapewnia permutację dla sortowania rosnącego i@
pozwala nam indeksowaća
w celu sortowania.b,a,|
- Dołącz w rzędzieb
, aa
następnie do tyłu (|
) zb
.źródło
Pyth, 57
Alfabet, ciąg znaków, odwrócony alfabet. G to alfabet. Wydruk jest niejawny.
źródło
Dyalog APL , 60 bajtów
Wydruki:
Które jest dozwolone zgodnie z OP:
źródło
Galaretka, 36 bajtów (niekonkurencyjna)
Wypróbuj online!
Wyjaśnienie:
źródło
05AB1E ,
6059 bajtówWypróbuj online!
AÂ
- wypycha rozwidlony alfabet."qwertyuiopasdfghjklzxcvbnm""pyfgcrlaoeuidhtnsqjkxbmwvz"
- Pcha qwerty i drovak.»
- Stosy wydruków.05AB1E , 57 bajtów (jeśli nie obchodzi Cię losowość \ n)
Wypróbuj online!
źródło
""
go nowym wierszem.