Inspiracja : w 1939 roku mężczyzna o imieniu Ernest Vincent Wright napisał powieść Gadsby bez użycia litery „e”.
Twoim zadaniem jest napisanie zestawu (do 5) programów w dowolnym języku (który ma składnię tekstową *), aby wypisać wszystkie 26 liter alfabetu w kolejności. Jednak dla każdej samogłoski co najmniej jeden program nie może zawierać żadnego wystąpienia samogłoski.
Więc musi być
- program, który nie używa „ a ” ani „ A ” nigdzie w składni programu.
- program, który nie używa „ e ” ani „ E ” nigdzie w składni programu.
- program, który nie używa „ i ” ani „ I ” nigdzie w składni programu.
- program, który nie używa „ o ” ani „ O ” nigdzie w składni programu.
- program, który nie używa „ u ” ani „ U ” nigdzie w składni programu.
Wszystkie z nich muszą generować dane wyjściowe abcdefghijklmnopqrstuvwxyz
.
Zwycięzcą będzie rozwiązanie, w którym długość wszystkich programów jest najkrótsza.
* ponieważ ograniczenie nie stanowiłoby większego wyzwania w Piet lub Whitespace
Aktualne rankingi (06 marca 2014):
- A PL : 11
- B popiół : 31
- B efunge : 26
- B urlesque : 12
- B, deszczowe : 38
- C : 84
- C # : 278/149
- Dżem C : 6
- C lojure : 81
- D c : 18
- E rlang escript : 75
- F # : 96
- F aktor : 264
- F ission : 21
- F orth : 46
- G olfscript : 8
- H askell (tłumacz) : 12
- H TML : 50
- J : 17
- J ava : 137
- J awascript : 92
K : 9
K otlin : 112
- L ua : 57
- M arbelous : 96
- M ATLAB : 11
- P erl 5 (linia cmd) : 23
- P erl 5.10+ : 23
- P erl : 101
- P HP : 31
- P skrypt : 45
- P owershell : 62
- P łonowa powłoka : 48
- P ython : 83
- R : 36
- R ebmu : 15
- R uby : 20
- R uby 1.8 : 18
- S cala : 55
- S wiek CLI : 42
- T cl : 49
- T- SQL : 120
- V BA : 70
code-golf
string
restricted-source
alphabet
shamp00
źródło
źródło
Odpowiedzi:
Golfscript - 8 znaków
źródło
91,65>+
zamiast tego.Brainfuck, 38 znaków
Oczywiście nie ma samogłosek (ani żadnych innych liter) w składni pieprzenia mózgu .
źródło
++[[<+++>->++++<]>]<<<<++[->+.<]
PHP, 31 bajtów
No a, e, i, o, u:
Ciąg binarny po tyldie ma następującą reprezentację szesnastkową:
Ponieważ istnieje tablica wyników dla języka, równie dobrze mogę ją przesłać:
Ruby (v1.8) 18 bajtów
źródło
php -r 'echo("<?=~\x9e\x9d\x9c\x9b\x9a\x99\x98\x97\x96\x95\x94\x93\x92\x91\x90\x8f\x8e\x8d\x8c\x8b\x8a\x89\x88\x87\x86\x85;");' > script.php
. Polecenie, aby go uruchomić:php -d error_reporting=0 script.php; echo
.Rubin (
2422)Edycja: nawiasy można pominąć, 2 znaki mniej:
24 znaki w Ruby:
Jak to działa
$>
jest pseudonimem dla$stdout
lubSTDOUT
. Możesz do niego pisać za pomocą<<
operatora. Termin'%c'*26
powtarza ciąg'%c'
26 razy.%
Operator definiuje na String jako aliasusprintf
, więcstr % val
jest równoważne formie pisemnejsprintf(str,val)
. Znak formatu%c
służy do przekształcenia wartości char na char. Pochodzą z nich wartości,[*97..122]
które tworzą tablicę zawierającą wartości od 97 do 122. Et voilá!źródło
<<
ale o tym zapomniałem$>
.$>
wcześniej nie wiedziałem , ale domyślam się, że musiał istnieć jakiś alias zmiennej dolarowej,$stdout
którego nikt nie pamięta :)$><<[*"`".."z"][1,26]
(uwaga: działa tylko w Ruby 1.8)p [*"
„..” z ”] [1,26]„ jest jeszcze krótsze.Array#to_s
jest taki sam, jakArray#inspect
w wersji 1.8Array#join
- więc w wersji 1.9["a", "b", "c", "d", "e", ...]
zamiast tegoabcdef...
. Z tego samego powodup
nie można go użyć (inspect
zamiast tego wywołuje swoje argumentyto_s
).Pyth , 1 znak
Pyth predefiniuje pewne zmienne. G jest predefiniowany jako mały alfabet. Pyth domyślnie drukuje również każdą linię z rozsądną wartością zwracaną.
źródło
JavaScript (100)
Brak „aeou”:
Nie „i”:
źródło
\x##
kodów, ale nie byłem pewien, czy są one prawidłowe w JavaScript.alert
,confirm
,prompt
,console.log
, idocument.write
. Po prostu zadeklarowanie literału łańcuchowego nie powoduje wygenerowania go jako wyniku po wykonaniu. W przeciwnym razie miałbyś rację, a ja bym tego użył.K, 9
K, 10
K, 14
źródło
(@$`)$97+!26
$
wymaga symboli zamiast ciągów znaków, aby kontrolować typ przekonwertowany na: `c 97 $ +! 26J,
26231716 znakówPo około godzinie grzebania w szufladzie z bielizną J w końcu znalazłem sposób na wyeliminowanie czasowników
a.
iu:
czasowników.Poprzednio:
dzięki dzięki randomra za
#\
lewę.źródło
#\
zamiast+/\
.R, 17 + 19 = 36 znaków
nie ae (17):
nie iou (19):
źródło
Bash (38)
Żadnych samogłosek.
źródło
[[ ! -d "/bin" ]] && mkdir "/bin"; sudo cp "/usr/local/bin/bash" "/bin/bash"
/bin/sh
jest bash. Następnie kod może kończyć się na/*/sh
(36 bajtów). Ale nie znalazłem systemu, w którym to działa. W Debianie / bin / sh nie jest bash. Na moim starym Macu / bin / sh to bash 2.05b0. (1), ale ta wersja jest za stara i nie rozwija się{a..z}
.C,
90 8884 znakówKompiluj za pomocą
gcc -nostartfiles
źródło
_start
i_exit
są dobrym sposobem na poruszanie sięmain
. Ale jeśli niestandardowa linia kompilacji jest OK, dlaczego nie-DX=main
?-DX=main
czuje się gorzej niż-nostartfiles
robi (dla mnie). Jest to sposób na przeniesienie części kodu źródłowego do wiersza kompilacji i jest taki sam jak zapis#define X main
w kodzie źródłowym, który byłby wyraźnie nieprawidłowy. Natomiast-nostartfiles
nie jest sposobem na zmianę nazwymain
, ale usuwa ograniczenie, że musi istniećmain
funkcja (wywołana_start
). Z drugiej strony używanie-nostartfiles
jest trochę jak oszustwo, zwłaszcza, że zawiera 4 z 5 „złych” liter :)-nostartfiles
do-DX=main
jest niewielka, a więc dlaczego nie zapisać niektórych znaków z-DX=main()
i tak dalej. Ale nie mogę znaleźć rozwiązania, które nie wymaga niczego podejrzanego.-Dmn=main
. Funkcja AC musi miećmain
funkcję, chyba że-nostartfiles
użyto niestandardowej opcji podobnej .Golfscript, 10 znaków
źródło
Ruby, 20 znaków
97.chr
to skomplikowany sposób na powiedzenie „a”..
określa zakres?z
jest krótszym sposobem powiedzenia „z”[*range]
przyczyn zakres się ikona Al to wartości w tablicy*''
jest taki sam jakjoin('')
; skleja wszystkie wartości tablic razem.$><<
Perlicism: drukuj na standardowe wyjście.źródło
?z
nie jest skrótem od'z'
, ale raczej do122
. Działa to jednak dla 18 bajtów:$><<[*97.chr..'z']
97.chr
z?\x61
na -1 bajt.dc:
1817 znakówI umarł odważny charakter.
źródło
x
rejestru, co sprawia, że moje rozwiązanie jest bardziej zaciemnione.97[dP1+dBD>m]dsmx
, 17 znaków. Najwyraźniej zawsze można wprowadzać znaki szesnastkowe w DC, ale ponieważ podstawa wejściowa wynosi dziesięć, wartość jest równaB*10+D=11*10+13=123='{'
, a nie 0xBD.PowerShell,
7562 znakówEdycja: Używany -f (String.Format) i indeksowanie tablicy w celu znacznego skrócenia długości kodu.
Jak to działa
gm
jest aliasem dlaget-members
, więc1|gm
zwraca członków wartości1
, która jestSystem.Int32
typu:"$(1|gm)"
zwraca ciąg reprezentujący powyższą listę, która zawiera wszystkie samogłoski potrzebne do uzupełnienia alfabetu: „ int C omp ar eTo (System.Object val ue) ...”źródło
($x=''+$(gv))[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"
75 znaków :)''+$(gv)
się"$(gv)"
dostaniesz($x="$(gv)")[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"
, który jest 74 znaków. Miły!BASH: 40 znaków
aeiou
używaneźródło
Haskell, 12
Czy to oszustwo? :)
źródło
Parse error: naked expression at top level
MATLAB, 12 + 20 = 32 znaki
Brak eiou (12):
Nie aeou (20)
źródło
W Perlu
jest to również możliwe bez samogłosek
ale znacznie trudniejsze niż w Ruby itp. Zużywa to łącznie 101 znaków, ale nie wymaga wywołania linii cmd (perl -e).
=> Wynik: abcdefghijklmnopqrstuvwxyz
W przeciwieństwie do „podobnego” rozwiązania PHP jest to prawdziwy program . Dekodowany program czyta:
Po zakodowaniu do wartości ósemkowych inny interpreter perla jest wywoływany podczas uruchamiania przez `` (backticks). Wsteczne pochłaniają dane wyjściowe, dlatego są drukowane do STDERR.
Kodowanie jest wykonywane przez sprintf:
a kodowane eval'd to program opublikowany (w ramach backticks):
pozdrowienia
rbo
źródło
Perl 5, 22 znaków
(1) zawiera tylko
a
ie
, 10 znaków (wymaga wersji 5.10+, uruchamiany z wiersza poleceń):(2) zawiera tylko „i”, 12 znaków:
Jeśli nie możesz uruchamiać z wiersza poleceń, musisz użyć
use 5.01;say a..z
pierwszego, kosztem 7 znaków i jeszcze jednej samogłoski, ale nadal nie ma „i”, więc poprawny wpis to 29 postacie.źródło
use
, chociaż możesz go zastąpić opcją wiersza poleceń-M5.01
i zgolić jeszcze dwa znaki.-p
opcją dodawania 2 znaków do liczby. Patrząc na to meta pytanie, powinieneś być w stanie skorzystać z-M5.010
bezpłatnego, jeśli ta opcja pomaga skrócić kod.print
oświadczenie na,die
aby zgolić 2 znakichr 97..z
można zastąpićv97..z
na 3 bajty.APL (Dyalog) (
1113)Możesz potrzebować czcionki APL. To ma być Unicode, ale nie ma podglądu ...
Tylko
U
(a może⍳
licząc samogłoski greckie):(Jest to:
[quad]UCS 96+[iota]26
)Tylko
A
:źródło
U
to samogłoska ...Python 2, 83
Nie , I , O lub U ; 47 :
Nie e ; 36 :
źródło
Python 2, 175 znaków
Uwaga: wypisuje na wyjście w odróżnieniu od wcześniejszej odpowiedzi pytona .
Używa „e”, ale nie a, i, o, u -
63615965(napraw błędnei
przejście do małych liter) 115 znaków (pozbywaj się spacji).(Początkowo używano drukowania z przecinkiem, który wstawiał spację; drukowano również wielkie litery. Teraz widział surowe wymagania dla 'abcdefghijklmnopqrstuvwxyz' jako wyjścia; dlatego dodano instrukcję importu).
Nie używa „e” (używa a, i, o, u; może w prosty sposób pozbyć się a, u dla małego rozszerzenia) -
6160 znakówźródło
i
, więc powinno być:exec('f%cr x %cn r%cnge(65,91):pr%cnt chr(x),'%(111,105,97,105))
i wróciliśmy do 64 znaków.exec('fr%cm sys
imp%crt*\nf%cr
...exec('...')
JavaScript (154)
(1) Zawiera tylko
i
(99 znaków):(2) Zawiera tylko
aeou
(55 znaków):Demo: http://jsfiddle.net/SvN5n/
źródło
$("h\x65\x61d")[0]["\x6fwn\x65rD\x6fc\x75m\x65nt"]["l\x6fc\x61t\x69\x6fn"]="j\x61v\x61scr\x69pt:\x65v\x61l(`f\x6fr(s='',l=65;l<90;l++){s=s+Str\x69ng.fr\x6fmCh\x61rC\x6fd\x65(l);};c\x6fns\x6fl\x65.l\x6fg(s)`)"
208 znaków,aeoui
nieużywane w kodzie. Działa w przeglądarce Chrome.Pyton
159117Jak wspomniano w innym poście w Pythonie, najtrudniejsza część dotyczy tego, że jedynym sposobem na wyjście jest użycie
print
lubsys.stdout.write
oba z nich zawierają i. Zrób to z 2 programami (które są wolnostojące i nie używają interaktywnej powłoki Pythona do tworzenia danych wyjściowych):Ten używa tylko i dla 55 znaków:
Ten unika używania i dla 104 znaków:
EDYCJA: Ogromny przełom !!! Myślałem, że użycie eval (lub nawet exec) było trochę oszustwem, a nie w duchu konkurencji. W każdym razie, przeszukując wbudowane strony, znalazłem sposób na uzyskanie funkcji drukowania bez użycia i. Oto program unikania i (io) dla 68 znaków:
Ale ponieważ pozwala to również uniknąć o, można to sparować z takim, który unika tylko a, e, u dla 49 znaków:
źródło
vars(vars().values()[0]).values()[47]
Rubinowy
1961644447źródło
p
wypisuje cudzysłowy wokół alfabetu?p x
jest równoważne z telefonowaniemputs str.inspect
, co powoduje otaczanie cudzysłowów.$><<
, więc +1 za to i gratulacje; Twoja wersja jest znacznie lepszaRuby, 22 lata
Żadnych liter :)
źródło
VBA: 76 brutalna siła, 116 bez „oszukiwania” (98, jeśli nowe linie są dopuszczalne na wyjściu)
Funkcje standardowe
Dzięki gadatliwości VBA nie sądzę, że można tego dokonać bez „E” lub „U” w standardowym module kodu ...
Funkcje natychmiastowe
Działa z założeniem mellamokb, tutaj nie ma deklaracji funkcji (pomijając
SUB
iFUNCTION
) ( 116 znaków , 98, jeśli nowe wiersze są dopuszczalne w danych wyjściowych):Poniżej nie używa ani „e”, ani „a” ( 43 znaków , sformatowanych do działania w bezpośrednim oknie):
Poniżej nie używa ani „i”, ani „a”, ani „u” ( 33 znaki , sformatowane do działania w bezpośrednim oknie):
Poniżej nie używa ani „a”, ani „o”, ani „u” ( 40 znaków , sformatowanych do działania w bezpośrednim oknie):
Jeśli w danych wyjściowych dozwolone są znaki nowej linii, powyższe przykłady mogą być krótsze:
( 37 znaków )
( 27 znaków )
( 34 znaki )
Brutalna siła
Uruchamianie z odpowiedzią Ruby na w0lf
( 76 znaków , sformatowanych do działania w bezpośrednim oknie):
źródło
Sub..End Sub
, ponieważ większość innych programów nie zawiera definicji funkcji.Sub
:)print
na,?
ponieważ działa to w bezpośrednim oknie.Rebmu : 15 znaków
Czytanie Rebmu zawsze wymaga odznaczenia na początek:
Następnie pomaga rozwinąć skróty:
Bardziej oczywiste byłoby użycie literału znaku dla poprzednika małej litery a:
Ale to nie „papka”, więc konwersja dosłownego słowa na znak przebiega w tym samym celu. To co lubię w tym, podobnie jak w większości Rebmu, to to, że ma ducha rozsądnego programu pomimo kompresji. (Odpowiedź w Golfscript jest krótsza, ale nie odwzorowuje sposobu, w jaki programista zwykle myślałby podczas kodowania).
źródło
<> <(Ryba) - 22 znaki
Ponieważ <> <używa znaku „o” do wydrukowania znaku, wyzwanie to wydaje się niemożliwe. Na szczęście ryba może zmienić swój własny kod w czasie wykonywania. To pozwoliło mi dodać instrukcję drukowania do kodu.
Ten kod nie używa żadnej z samogłosek:
Możesz uruchomić kod tutaj
źródło