Wydrukuj alfabet bez użycia każdej samogłoski

72

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

shamp00
źródło
4
@ w0lf: Nie, mówi „do 5 programów” i „długość wszystkich programów”, co czytam jako „może być tylko jeden program, a jego długość liczy się w tym przypadku”.
schnaader
9
@PeterTaylor: Nie sądzisz, że unikanie używania samogłosek w składni to wyjątkowe wyzwanie? Jako programista JS jest to szczególnie interesujące :)
mellamokb
2
Czy nowe znaki wyjściowe są dopuszczalne (tj. Jeden na znak)? Jeśli tak jest, mogę skrócić część mojego kodu ...
Gaffi,
2
Czy dozwolone jest wyświetlanie wielkich liter?
Erik the Outgolfer,
2
Jestem OP. Wielkie litery są niedozwolone.
shamp00

Odpowiedzi:

48

Golfscript - 8 znaków

123,97>+
gnibbler
źródło
8
cholera, naprawdę nie mogę pobić golfa pod względem zwięzłości ...
Patrick Oscity,
18
To powiedziawszy, czytelność śmierdzi jak szalona.
Andrew Gray,
5
Nie jest tak źle;) wygeneruj listę 123 liczb, usuń te, które nie są większe niż 97, zmuś ją (tablicę liczb) do ciągu.
McKay
3
Użyj 91,65>+zamiast tego.
Erik the Outgolfer
31

Brainfuck, 38 znaków

++++++[->++++<]>[->+>++++<<]>++[->+.<]

Oczywiście nie ma samogłosek (ani żadnych innych liter) w składni pieprzenia mózgu .

Ilmari Karonen
źródło
2
Ważny punkt! ;)
WallyWest,
3
30 bajtów:++[[<+++>->++++<]>]<<<<++[->+.<]
primo
23

PHP, 31 bajtów

No a, e, i, o, u:

<?=~žœ›š™˜—–•”“’‘ŽŒ‹Š‰ˆ‡†…;

Ciąg binarny po tyldie ma następującą reprezentację szesnastkową:

\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

Ponieważ istnieje tablica wyników dla języka, równie dobrze mogę ją przesłać:

Ruby (v1.8) 18 bajtów

$><<[*97.chr..'z']
primo
źródło
Nie jestem pewien, czy rozumiem, jak to działa. Czy mogę dostać wyjaśnienie?
Pan Llama,
Po zastosowaniu do łańcucha operator ~ odwraca wszystkie bity. Tutaj odwróciłem abc ... xyz. Ponieważ w łańcuchu binarnym nie ma znaków symboli (ani białych znaków), cudzysłowy również nie są konieczne.
primo
1
Możesz podać kodowanie tego, co tam masz.
Joey,
1
iso-8859-1. Trzy „niedrukowalne” znaki zostały usunięte, gdy zostały opublikowane, dlatego dołączyłem heks.
primo
2
Ładna i prawdopodobnie najkrótsza możliwa wersja PHP. Polecenie do wygenerowania pliku: 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.
axiac
16

Rubin ( 24 22)

Edycja: nawiasy można pominąć, 2 znaki mniej:

$><<'%c'*26%[*97..122]

24 znaki w Ruby:

$><<('%c'*26)%[*97..122]

Jak to działa

$>jest pseudonimem dla $stdoutlub STDOUT. Możesz do niego pisać za pomocą <<operatora. Termin '%c'*26powtarza ciąg '%c'26 razy. %Operator definiuje na String jako aliasu sprintf, więc str % valjest równoważne formie pisemnej sprintf(str,val). Znak formatu %csł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á!

Patrick Oscity
źródło
Bardzo dobrze. Szukałem sposobu użycia, <<ale o tym zapomniałem $>.
Mark Reed,
1
Nawet o tym $>wcześniej nie wiedziałem , ale domyślam się, że musiał istnieć jakiś alias zmiennej dolarowej, $stdoutktórego nikt nie pamięta :)
Patrick Oscity,
21 znaków: $><<[*"`".."z"][1,26](uwaga: działa tylko w Ruby 1.8)
Ventero
@Ventero działa nie tylko w Ruby 1.8, ale także w Ruby 1.9.2. Ale użycie p [*"„..” z ”] [1,26]„ jest jeszcze krótsze.
Hauleth
@Hauleth: Nie, uruchomienie go w wersji 1.9 nie generuje poprawnego wyniku, ponieważ w wersji 1.9 Array#to_sjest taki sam, jak Array#inspectw wersji 1.8 Array#join- więc w wersji 1.9 ["a", "b", "c", "d", "e", ...]zamiast tego abcdef.... Z tego samego powodu pnie można go użyć ( inspectzamiast tego wywołuje swoje argumenty to_s).
Ventero,
16

Pyth , 1 znak

G

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ą.

isaacg
źródło
3
Ninja'd mnie o 3 lata ...
Stan Strum
15

JavaScript (100)

Brak „aeou”:

this['\x61l\x65rt']('\x61bcd\x65fghijklmn\x6fpqrst\x75vwxyz')

Nie „i”:

alert('abcdefgh\x69jklmnopqrstuvwxyz')
zzzzBov
źródło
+1 Niezłe ulepszenie mojej odpowiedzi :) Myślałem o użyciu \x##kodów, ale nie byłem pewien, czy są one prawidłowe w JavaScript.
mellamokb
dlaczego w ogóle alerty? na terminalu js obiekty są automatycznie echa. („\ x61bcd \ x65fghijklmn \ x6fpqrst \ x75vwxyz”) @ 42 znaki.
antony.trupe
3
@ antony.trupe, dla kodu golfa, IO jest zwykle wykonywane przez wbudowane w język mechanizmy IO (lub zwykłe wtyczki). Dla JS to zazwyczaj alert, confirm, prompt, console.log, i document.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ł.
zzzzBov
generuje dane wyjściowe (zgodnie z definicją i tak używam) w konsoli Google Chrome, ale przyznaję, że problem; na początek jest to arbitralne ograniczenie.
antony.trupe
@ antony.trupe, w języku takim jak PHP można uniknąć literału, ponieważ w ten sposób wykonuje on operacje wejścia / wyjścia.
zzzzBov
15

K, 9

_26#.Q.b6

K, 10

"c"$97+!26

K, 14

.:".Q.","c"$97
tartin
źródło
2
i głupi sposób, aby to zrobić bez liter (12 znaków):(@$`)$97+!26
Aaron Davies
1
Sposób K5 jest prawie drugim rozwiązaniem, ale $wymaga symboli zamiast ciągów znaków, aby kontrolować typ przekonwertowany na: `c 97 $ +! 26
JohnE
15

J, 26 23 17 16 znaków

Po około godzinie grzebania w szufladzie z bielizną J w końcu znalazłem sposób na wyeliminowanie czasowników a.i u:czasowników.

2(3!:4)96+#\26$1

Poprzednio:

a.{~96++/\26$1
u:97+i.26

dzięki dzięki randomra za #\lewę.

Gareth
źródło
Fajne rozwiązanie! Udało się skrócić o 1 znak za pomocą #\ zamiast +/\ .
randomra
5
Wyjdź z mojej szuflady z bielizną
Joe
14

R, 17 + 19 = 36 znaków

nie ae (17):

intToUtf8(97:122)

nie iou (19):

cat(letters,sep="")
Paolo
źródło
12

Bash (38)

Żadnych samogłosek.

/*/*/*ntf "/*/?ch? {\x61..z}"|/*/b?sh
marinus
źródło
Ten program nie działa w moim systemie, ponieważ / * / b? Sh nie istnieje. Mam / usr / local / bin / bash, a nie / bin / bash.
kernigh
2
Dobre wykorzystanie globowania powłoki!
Ślimak mechaniczny
@kernigh[[ ! -d "/bin" ]] && mkdir "/bin"; sudo cp "/usr/local/bin/bash" "/bin/bash"
Stan Strum
Byłoby lepiej, jeśli /bin/shjest 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}.
kernigh,
11

C, 90 88 84 znaków

Kompiluj za pomocą gcc -nostartfiles

b;_exit(){for(;b<26;)printf("%c",b+++97);}    // 42 chars, works for a, u
b;_start(){putchar(b+++97)>121?:_start();}    // 42 chars, works for e, i, o
schnaader
źródło
_starti _exitsą dobrym sposobem na poruszanie się main. Ale jeśli niestandardowa linia kompilacji jest OK, dlaczego nie -DX=main?
ugoren
4
Jakoś -DX=mainczuje się gorzej niż -nostartfilesrobi (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 mainw kodzie źródłowym, który byłby wyraźnie nieprawidłowy. Natomiast -nostartfilesnie jest sposobem na zmianę nazwy main, ale usuwa ograniczenie, że musi istnieć mainfunkcja (wywołana _start). Z drugiej strony używanie -nostartfilesjest trochę jak oszustwo, zwłaszcza, że ​​zawiera 4 z 5 „złych” liter :)
schnaader
To śliski stok ... Odległość od -nostartfilesdo -DX=mainjest 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.
ugoren
Nie ma możliwości zdefiniowania głównej funkcji na przykład jako „mn”?
Neil,
@Neil, tylko robiąc coś takiego -Dmn=main. Funkcja AC musi mieć mainfunkcję, chyba że -nostartfilesużyto niestandardowej opcji podobnej .
Matthew Flaschen
9

Golfscript, 10 znaków

26,{97+}%+
hammar
źródło
18
Dlaczego tak gadatliwy?
Peter Taylor
9

Ruby, 20 znaków

$><<[*97.chr..?z]*''
  • 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 jak join('') ; skleja wszystkie wartości tablic razem.
  • $><< Perlicism: drukuj na standardowe wyjście.
steenslag
źródło
Ten kod nie działa. ?znie jest skrótem od 'z', ale raczej do 122. Działa to jednak dla 18 bajtów:$><<[*97.chr..'z']
primo
To nie działa w Ruby 1.9.
steenslag,
1
Pobrałem 1.9.3 ... i masz rację. Dlaczego mieliby coś takiego zmienić? Rozumiem, dlaczego anarchia golf nadal działa 1.8.7. W każdym razie 18-bajtowe rozwiązanie działa dla v1.8.7-
primo
2
(4 lata później ...) Można wymienić 97.chrz ?\x61na -1 bajt.
Jordan
9

dc: 18 17 znaków

97[dP1+dBD>m]dsmx

I umarł odważny charakter.

Fors
źródło
Wątpię. Owijam głowę i nie widzę sposobu, żeby to skrócić. Skończyłem z dokładnie tym samym rozwiązaniem, z wyjątkiem tego, że użyłem xrejestru, co sprawia, że ​​moje rozwiązanie jest bardziej zaciemnione.
Hynek -Pichi- Vychodil
3
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ówna B*10+D=11*10+13=123='{', a nie 0xBD.
Fors
Och, niezły blichtr ;-)
Hynek-Pichi- Vychodil
9

PowerShell, 75 62 znaków

Edycja: Używany -f (String.Format) i indeksowanie tablicy w celu znacznego skrócenia długości kodu.

'{0}bcd{1}fgh{2}jklmn{3}pqrst{4}vwxyz'-f"$(1|gm)"[8,10,0,5,31]

Jak to działa

gmjest aliasem dla get-members, więc 1|gmzwraca członków wartości 1, która jest System.Int32typu:

PS C:\> 1|gm
   TypeName: System.Int32
Name        MemberType Definition
----        ---------- ----------
CompareTo   Method     int CompareTo(System.Object value), int CompareTo(int value)
Equals      Method     bool Equals(System.Object obj), bool Equals(int obj)
GetHashCode Method     int GetHashCode()
...

"$(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) ...”

Danko Durbić
źródło
2
Nie jest to jednak stabilne, jeśli MS dodaje członków do System.Int32 :-)
Joey,
Myślę, że musiałoby to być ($x=''+$(gv))[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"75 znaków :)
Danko Durbić
Argh, racja. Wyłowiłem niewłaściwy przedmiot z mojej historii. Przepraszam.
Joey,
Właściwie, jeśli zastąpi ''+$(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!
Danko Durbić
2
Użyłem opcji -f (String.Format) i indeksowania tablicy, aby znacznie skrócić długość kodu.
Tim Lewis,
8

BASH: 40 znaków

  • Nie aeiou używane
  • Nie użyto symboli wieloznacznych.
`tr c-y '\141-w'<<<'rtkpvh %s c'` {b..z}
Książę John Wesley
źródło
8

Haskell, 12

['\97'..'z']

Czy to oszustwo? :)

RobAu
źródło
Wprawdzie niewiele wiem o Haskellu, ale daje mi ten błąd:Parse error: naked expression at top level
primo,
1
Uruchamiasz
7

MATLAB, 12 + 20 = 32 znaki

Brak eiou (12):

char(97:122)

Nie aeou (20)

fprintf('%s',97:122)
Jonas
źródło
7

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

`\160\145\162\154\40\55\145\40\42\160\162\151\156\164\40\123\124\104\105\122\122\40\141\56\56\172\42`

=> Wynik: abcdefghijklmnopqrstuvwxyz

W przeciwieństwie do „podobnego” rozwiązania PHP jest to prawdziwy program . Dekodowany program czyta:

perl -e "print STDERR a..z"

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:

my $s = q{perl -e "print STDERR a..z"};
my $cmd = eval(
       '"' . join('', map sprintf("\\%o",ord $_), split //, $s) . '"'
       );

a kodowane eval'd to program opublikowany (w ramach backticks):

"\160\145\162\154\40\55\145\40\42\160\162"
"\151\156\164\40\123\124\104\105\122\122"
"\40\141\56\56\172\42"

pozdrowienia

rbo

kalosze
źródło
8
Można to skrócić do 44 znaków, kodując tylko samogłoski :)
marinus
7

Perl 5, 22 znaków

(1) zawiera tylko ai e, 10 znaków (wymaga wersji 5.10+, uruchamiany z wiersza poleceń):

-Esay+a..z

(2) zawiera tylko „i”, 12 znaków:

print v97..z

Jeśli nie możesz uruchamiać z wiersza poleceń, musisz użyć use 5.01;say a..zpierwszego, kosztem 7 znaków i jeszcze jednej samogłoski, ale nadal nie ma „i”, więc poprawny wpis to 29 postacie.

Mark Reed
źródło
Opcja „-E” jest w porządku, ale myślę, że zwykle 2 znaki „-E” są dodawane do całkowitej długości znaków.
Gareth
@gareth - -E zastępuje -e za uruchamianie jednowierszowego. Jeśli uruchamiasz program z pliku, utkniesz w nim use, chociaż możesz go zastąpić opcją wiersza poleceń -M5.01i zgolić jeszcze dwa znaki.
Mark Reed,
Myślałem o regule z -popcją dodawania 2 znaków do liczby. Patrząc na to meta pytanie, powinieneś być w stanie skorzystać z -M5.010bezpłatnego, jeśli ta opcja pomaga skrócić kod.
Gareth
możesz zamienić swoje printoświadczenie na, dieaby zgolić 2 znaki
nowy
chr 97..zmożna zastąpić v97..zna 3 bajty.
primo
7

APL (Dyalog) ( 11 13)

Możesz potrzebować czcionki APL. To ma być Unicode, ale nie ma podglądu ...

Tylko U(a może licząc samogłoski greckie):

⎕UCS 96+⍳26

(Jest to: [quad]UCS 96+[iota]26 )

Tylko A:

⎕A
marinus
źródło
2
Uto samogłoska ...
Tobia,
@Tobia: zajęło to ponad rok, aby ktoś to zobaczył (w tym ja). Sądzę, że iota jest teraz samogłoską, kiedy o tym myślę. Naprawione.
marinus
Symbol funkcjonalny APL iota (U + 2373) nie jest uważany za literę w Unicode i dlatego nie może być samogłoską. Zauważ, że różni się od greckiej małej litery iota (U + 03B9).
ngn
7

Python 2, 83

Nie , I , O lub U ; 47 :

x=97;s='';exec"s+=chr(x);x+=1;"*26+"pr\x69nt s"

Nie e ; 36 :

print"abcd\x65fghijklmnopqrstuvwxyz"
trzęsienie ziemi
źródło
6

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 - 63 61 59 65 (napraw błędne iprzejście do małych liter) 115 znaków (pozbywaj się spacji).

exec('fr%cm sys %cmp%crt*\nf%cr x %cn r%cnge(97,123):std%c%ct.wr%cte(chr(x)),'%(111,105,111,111,105,97,111,117,105))

(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) - 61 60 znaków

import string
print string.__dict__['low%crcas%c'%(101,101)]
dr jimbob
źródło
1
Twoje pierwsze rozwiązanie używa litery 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.
BioGeek
1
exec('fr%cm sys i mp%crt*\nf%cr ...
Gareth
BioGeek & @Gareth - moje umiejętności ręcznego wykrywania samogłosek są do kitu. Dzięki za zwrócenie na to uwagi; ale miałem dodatkowe e napisane jako „% c”, więc ostatecznie się wyrównuje.
dr jimbob
Możesz usunąć nawiasy zexec('...')
mbomb007
5

JavaScript (154)

(1) Zawiera tylko i(99 znaków):

t=this;s=-t+t+t.b;z=s[1]+'bcd'+s[7]+'fghijklmn'+s[4]+'pqrst'+s[21]+'vwxyz';t[s[1]+'l'+s[7]+'rt'](z)

(2) Zawiera tylko aeou(55 znaków):

t=0;s=''+t.b;alert('abcdefgh'+s[5]+'jklmnopqrstuvwxyz')

Demo: http://jsfiddle.net/SvN5n/

mellamokb
ź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, aeouinieużywane w kodzie. Działa w przeglądarce Chrome.
Esc Điệp
5

Pyton 159 117

Jak wspomniano w innym poście w Pythonie, najtrudniejsza część dotyczy tego, że jedynym sposobem na wyjście jest użycie printlub sys.stdout.writeoba 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:

print"%cbcd%cfghijklmn%cpqrst%cvwxyz"%(97,101,111,117)

Ten unika używania i dla 104 znaków:

eval("sys.stdout.wr%cte"%105,{'sys':eval("__%cmport__('sys')"%105)})("%c"*26%tuple(range(97,123))+"\n")

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:

vars(vars().values()[0])['pr%cnt'%105]("%c"*26%tuple(range(97,123)))

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:

print"%cbcd%cfghijklmnopqrst%cvwxyz"%(97,101,117)
Benedykt
źródło
Możesz porzucić kompatybilność i zdobyć postać -vars(vars().values()[0]).values()[47]
ugoren
5

Rubinowy 196 164 44 47

$><<"\x61bcd\x65fgh\x69jklmn\x6Fpqrst\x75vwxyz"
Cristian Lupascu
źródło
Czy to poprawna odpowiedź, ponieważ pwypisuje cudzysłowy wokół alfabetu?
Mark Reed
Zgadzam się p xjest równoważne z telefonowaniem puts str.inspect, co powoduje otaczanie cudzysłowów.
Patrick Oscity,
@padde oboje macie rację; zmienione.
Cristian Lupascu
1
@padde Użyłem twojego $><<, więc +1 za to i gratulacje; Twoja wersja jest znacznie lepsza
Cristian Lupascu,
5

Ruby, 22 lata

$><<[*?`..?{][1,26]*''

Żadnych liter :)

duckinator
źródło
5

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 ...

  • E nd”
  • "M u nction"
  • „S u b”

Funkcje natychmiastowe

Działa z założeniem mellamokb, tutaj nie ma deklaracji funkcji (pomijając SUBi FUNCTION) ( 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):

b=65:Do:z=z+Chr(b):b=b+1:Loop Until b=91:?z

Poniżej nie używa ani „i”, ani „a”, ani „u” ( 33 znaki , sformatowane do działania w bezpośrednim oknie):

For b=65 To 90:z=z+Chr(b):Next:?z

Poniżej nie używa ani „a”, ani „o”, ani „u” ( 40 znaków , sformatowanych do działania w bezpośrednim oknie):

b=65:While b<91:z=z+Chr(b):b=b+1:Wend:?z

Jeśli w danych wyjściowych dozwolone są znaki nowej linii, powyższe przykłady mogą być krótsze:

( 37 znaków )

b=65:Do:?Chr(b):b=b+1:Loop Until b=91

( 27 znaków )

For b=65 To 90:?Chr(b):Next

( 34 znaki )

b=65:While b<91:?Chr(b):b=b+1:Wend

Brutalna siła

Uruchamianie z odpowiedzią Ruby na w0lf

( 76 znaków , sformatowanych do działania w bezpośrednim oknie):

?Chr(65)&"BCD"&Chr(69)&"FGH"&Chr(73)&"JKLMN"&Chr(79)&"PQRST"&Chr(85)&"VWXYZ"
Gaffi
źródło
1
Myślę, że byłoby to słuszne pominąć Sub..End Sub, ponieważ większość innych programów nie zawiera definicji funkcji.
mellamokb
@mellamokb Cóż, to sprawia, że ​​czuję się lepiej. Wymyślę kilka przykładów, aby dodać do tego.
Gaffi
2
Pomyśl o tym jak o „kodzie, który uruchamiasz w bezpośrednim oknie” :)
mellamokb
2
Cóż, jeśli masz wątpliwości, po prostu nazwij go VBScript, który można dołączyć do pliku bez potrzeby używania Sub:)
Joey,
Naprawiono kilka niepotrzebnych spacji, zmieniono printna, ?ponieważ działa to w bezpośrednim oknie.
Gaffi,
5

Rebmu : 15 znaków

Ctc'`L26[pn++C]

Czytanie Rebmu zawsze wymaga odznaczenia na początek:

c: tc '` l 26 [pn ++ c]

Następnie pomaga rozwinąć skróty:

c: to-char-mu '`
loop 26 [
    prin ++ c
]

Bardziej oczywiste byłoby użycie literału znaku dla poprzednika małej litery a:

c: #"`"
loop 26 [
    prin ++ c
]

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

Dr. Rebmu
źródło
5

<> <(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:

'`78'+11pv
:X:'z'=?;>1+

Możesz uruchomić kod tutaj

Thijs ter Haar
źródło