Napisz program lub funkcję, która wyświetli ten dokładny tekst, bez rozróżniania wielkości liter:
A, B, C, D, E, F, G,
H, I, J, K, L, M, N, O, P,
Q, R, S,
T, U, V,
W, X, Y, Z.
(Na podstawie piosenki alfabetu którą wiele amerykańskich dzieci uczy się zapamiętywać alfabet, choć edytowaną dla większej kompresji).
Dane wyjściowe muszą wyglądać dokładnie tak samo jak powyżej (ponownie, bez rozróżniania wielkości liter), ale mogą zawierać końcowe spacje w każdej linii i / lub końcowe nowe linie. Zauważ okres na końcu.
To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach.
code-golf
string
kolmogorov-complexity
ETHprodukcje
źródło
źródło
/(?=[HQTW])/
H, I, J, K, LMNO, P
?Odpowiedzi:
Vim,
42, 40 klawiszy / bajtówDzięki Lynn i jej niesamowitej odpowiedzi vima na wskazówkę, jak zdobyć alfabet z pomocy.
Dzięki RomanGräf za zapisanie dwóch bajtów!
Wyjaśnienie:
Następnie przesuwamy koniec linii za pomocą
$
, zmieniamy znak za pomocąch
i wstawiamy kropkę.źródło
05AB1E , 16 bajtów
Kod
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online!
źródło
Narzędzia Bash + GNU, 36
Ideone.
źródło
echo {A..Y}, Z.|sed 's/[HQTW]/\n&/g'
?JavaScript (ES6),
6665 bajtówPokonując @Neil było niemożliwe ... to dlaczego to zrobiłem. :-)
Grał w golfa 1 bajt dzięki lewie @LevelRiverSt . Używanie
String.fromCharCode
jest o 7 bajtów dłuższe:Jak to działa
To rekurencyjnie generuje każdy znak alfabetu od
a
doy
, używając.toString()
. Przecinek jest dodawany po każdej literze, plus nowa linia, jeśli9568512>>i-9&1
jest 1, lub spacja w przeciwnym razie. Kiedy rekurencja przekroczy 34, tzn. Doz
, funkcja po prostu powraca"z."
.źródło
Python 2.7,
67 6663 bajtówDennis uratował bajt.
źródło
exec
zamiastfor
powinno oszczędzać bajt.Galaretka ,
1918 bajtówDzięki @Adnan za grę w golfa przy 1 bajcie!
Wypróbuj online!
Jak to działa
źródło
JavaScript (ES6),
8074 bajtówPrawdopodobnie można to skrócić za pomocą atob / btoa, jeśli potrafisz dowiedzieć się, jak używać kodowania ISO-8859-1. Edycja: Zapisano 6 bajtów dzięki @RickHitchcock.
źródło
.join`, `
? Umieść backslashes przed backticks. (Tak, przecena komentarza jest inna, westchnienie ...)Pyke,
231917 bajtówWypróbuj tutaj!
źródło
R,
8371 bajtówWypróbuj online!
Tworzy macierz 3 wierszy (jeden z literami, jeden z przecinkami, a drugi ze spacją lub znakiem nowej linii).
Edycja : Dzięki Billywob!
źródło
cat(a,sep="")
zapisuje kilka bajtów:a=rbind(LETTERS,","," ");a[3,7+3*c(0,3:5)]="\n";cat(a[,-26],"Z.",sep="")
[-26]
onLETTERS
bezpośrednio zapisuje kolejny bajt.CJam, 26 bajtów
Tłumacz online
źródło
Brainfuck, 117 bajtów
Pierwsze cztery linie mają spację końcową, a program przyjmuje 8-bitowe komórki. Wypróbuj online!
(Obsługa ostatniej linii jest trudna ...)
źródło
Perl, 37 bajtów
Kredyty dla @Dom Hastings za to rozwiązanie (3 bajty krótsze niż moje, patrz poniżej).
Uruchom z flagą
-E
(lub-M5.010
):Moja poprzednia wersja, 3 bajty dłużej (łącznie 40 bajtów):
źródło
say+(map"$_, ".$/x/[GPSV]/,A..Y),"Z."
JavaScript (ES6),
6664 bajtówRegex dopasowuje znaki, ale nie zwraca karetki, więc używając regex replace, mogę dodać znak „,” do każdego znaku.
Edycja: Usunięto 2 postacie dzięki ETHProductions
źródło
$1
na$&
.Cheddar, 70 bajtów
Wygląda na to, że nie jest krótszy niż ten. Stworzyłem inne wersje tego, które wykorzystują dość interesujące metody, ale to jest najkrótsze
Wypróbuj online!
Wyjaśnienie
@"
Operator jest wykorzystywany do generowania znaków wynosiła. Generuje ciąg znaków, zaczynając od lewego kodu znaków do prawego kodu znaków.Na przykład
65
to kod char dlaA
i90
dlaZ
. Wykonanie65 @" 90
spowoduje wygenerowanie litery A do Z lub alfabetu.źródło
DO,
11210281 bajtówDzięki cleblanc i LevelRiverSt!
źródło
i,c,d;main(){for(c=65;c<91;++c){if(c-"GPSVZ"[i])d=32;else d=10,++i;printf("%c%c%c",c,c-90?44:46,d);}}
i,c;main(){for(c=64;++c<91;)printf("%c%c%c",c,44+c/90*2,c=="GPSVZ"[i]?++i,10:32);}
. Zauważ, że możesz trzymać absolutnie wszystko pomiędzy?:
operatorem trójskładnikowym, nawet kilka wyrażeń oddzielonych przecinkami (to jest do ostatniego.)Brainfuck, 157 bajtów
Wypróbuj online
źródło
Rubin,
5654 bajtówPierwsza linia kończy się dosłownie nową linią.
Edycja: zapisano dwa bajty, zastępując
'A'..'Y'
je?A..?Y
.źródło
Vim, 32 bajty
26o<C-V><C-V>64,<Esc>r.V{g<C-A>8Jj9Jj3Jj.j4JcH<C-R>"
Na końcu pozostawia pustą linię, co było dozwolone, ale to dziwne, że jest tak niezdarny. Co gorsza, kończę w trybie wstawiania. Widziałem, jak robią to inni ludzie, więc myślę, że to dozwolone? Czuje się brudny.
26o<C-V><C-V>64,<Esc>
: Pierwsza<C-V>
sprawia, że druga wstawia dosłownie. Te<C-V>64
pozostawiane w buforze zostaną zamienione na punkty kodowe ASCII, a następnie na litery. Przecinki już są.r.
: Nigdy więcej nie będzie na końcu, więc.
teraz.V{g<C-A>
: Używa przyrostu wizualnego, aby zamienić wszystkie64
s na punkty kodu ASCII wielkich liter.8Jj9Jj3Jj.j4J
: Dowolna linia łączy się. Pierwszy z nich to8J
zamiast7J
ponieważ mamy do czynienia z pustym wierszu. Powtórzone3J
s kwalifikują się do powtórzenia kropki.cH<C-R>"
: Ludzie zwykle myślą oi<C-R>
wklejaniu w trybie wstawiania, ale bardziej przypomina to makro w trybie wstawiania. Rzeczy podobne<C-V>65
będą działać, jakby zostały wpisane i zinterpretowane jako przecinek dziesiętny. To pozostawia dodatkową (dozwoloną) linię na końcu i pozostaje w trybie wstawiania.źródło
PowerShell v3 +,
607867 bajtówDOBRZE. Tym razem przeczytałem, zrozumiałem i postępowałem zgodnie ze specyfikacją. Obietnica. :RE
Przejmuje tablicę
65..90
i zapętla każdy element|%{...}
. W każdej iteracji tworzymy nowy ciąg przy użyciu konkatenacji, indeksowania i mnożenia.Najpierw bierzemy bieżący numer i
char
rzucamy nim, aby był literą ASCII. Jest to połączone z innym char, opartym na indeksowaniu do łańcucha,'.,'
niezależnie od tego, czy jesteśmy przy,90
czy nie (tj. Aby uwzględnić,Z.
podczas gdy cała reszta to przecinki). Jest to łańcuch połączony z" "
separacją spacji liter i mnożenie łańcucha w"`n"
oparciu o wartość logiczną dla tego, czy bieżący element jest-in
określoną tablicą (tj. Czy musimy konkatenować znak nowego wiersza). Powstały ciąg zostaje pozostawiony w potoku.Ciągi te są enkapsulowane w pareny i
-join
łączone razem w nowy ciąg, który jest następnie pozostawiany w potoku i domyślnieWrite-Output
na końcu drukuje wynik. Ponieważ mamy`n
ten ciąg, jest on automatycznie konwertowany na znaki nowej linii podczas drukowania.Wymaga v3 + dla
-in
operatora. Ma końcowe miejsce w każdej linii, co jest OK zgodnie ze specyfikacją wyzwania.Przykład
źródło
PHP, 62 bajty
tylko dla porównania 87 bajtów
źródło
\n
."# (?=[HQTW])#"
i skrócić zastąpienie do tych"\n"
samych bajtów i uczynić to jaśniejszym. Aby użyć przestarzałej funkcji, można pomylić początkujących. Fizyczna przerwa może źle interpretować na innych systemach niż Unix. Możesz opublikować go jako własną sugestię.MATL,
3829 bajtów9 bajtów zapisanych dzięki @Luis!
Wypróbuj online!
Wyjaśnienie
źródło
R, 146 bajtów
Wyjaśnienie:
LETTERS
jest predefiniowany dla wielkich liter.Ta
f
funkcja służy do łączenia wektora x,
z dodatkowymy
(wykorzystywanym do znaków nowej linii).Kot jest używany, ponieważ drukuje się
\n
jako nowy wiersz.f
jest wywoływany na literach w celu utworzenia wierszy, a następnie w wierszach ponownie w celu utworzenia całego wyniku.Prawdopodobnie gra w golfa - nie lubię wielu połączeń f ...
źródło
CJam, 31 bajtów
Wyjaśnienie:
Wypróbuj online
źródło
Julia, 71 bajtów
Wymaga 0,5 lub wyższej do nadawania
.()
źródło
print
definicji / funkcji? Z drugiej strony, brak zapisywaniajoin
w zmiennej oszczędza bajt.join
. Przeliczyłem się. Uruchomienie programu zwraca ciąg znaków. Czy program zwracający ciąg nie jest prawidłowym wyjściem? (Czy to tylko funkcje, które mogą zwracać rzeczy, które liczą się jako dane wyjściowe. Jeśli tak,f()=
to jest krótszy niżprint()
)f()=
czy()->
jest w porządku - myślę, że chodzi o to, że funkcje są przypisywane i mogą być uruchamiane wiele razy, a w przeciwieństwie do tego byłby to fragment kodu.Cheddar, 57 bajtów
Wypróbuj online! Czy to nie jest piękne? To ładny prostokąt.
Dwie substytucje wyrażeń regularnych.
(65@"90)
jest wielkimi literami,.sub(/[GPSV]/g,"$0\n")
zamieniaGPSV
się na siebie i"\n"
,.sub(/[^Z\n]/g,"$0, ")
zastępuje wszystkie nie-nowy wiersz iZ
znaki na siebie", "
i"."
dodaje znak końcowy.
.źródło
Japt, 24 bajty
Przetestuj online!
Jak to działa
źródło
Java,
116109105104Nie golfowany:
źródło
||
do|
(-3); zmianac==90
nac>89
(-1); zmiana'.'
na46
(-1); i przejście'\n'
na10
(-2)."GPSV".contains(""+c)
zamiastc==71|c==80|c==83|c==86
.q, 46 bajtów
źródło
Siatkówka, 43 bajty
Wiodąca nowa linia jest znacząca. Wypróbuj online!
Po raz pierwszy używam Retiny, więc wszelkie wskazówki dotyczące golfa są doceniane ...
źródło
Pyth, 25 bajtów
Program, który drukuje wynik do STDOUT.
Wypróbuj online
Jak to działa
źródło