Twoim celem jest utworzenie piosenki alfabetu jako tekstu w następującej formie (w kolejności):
A is for <word starting with A>
B is for <word starting with B>
C is for <word starting with C>
...
Z is for <word starting with Z>
Przykładowe dane wyjściowe:
A is for Apple
B is for Banana
C is for Carrot
D is for Door
E is for Elephant
F is for Frog
G is for Goat
H is for Hat
I is for Icicle
J is for Jelly
K is for Kangaroo
L is for Lovely
M is for Mom
N is for Never
O is for Open
P is for Paste
Q is for Queen
R is for Rice
S is for Star
T is for Test
U is for Underneath
V is for Very
W is for Water
X is for X-ray
Y is for Yellow
Z is for Zipper
Zasady:
Każda „litera” utworu ma swoją własną linię, więc jest 26 linii i możliwy ciągły wiersz.
W danych wyjściowych rozróżniana jest wielkość liter:
- Litera na początku każdej linii musi być wielka.
is for
jest małymi literami.- Wybrane słowo nie musi być pisane dużymi literami, ale może być. Wszystkie linie powinny być spójne.
Wybrane słowo dla każdej linii należy do Ciebie, ale musi być poprawnym słowem angielskim z co najmniej 3 literami i nie może być łącznikiem (jak
and
lubbut
), wykrzyknikiem / wykrzyknikiem (jakhey
lubyay
), skrótem (jakXLS
) lub nazwa (jakJon
).Chociaż wątpię, aby ktokolwiek uznałby go za krótszy, uznałbym za dopuszczalne użycie frazy zamiast jednego słowa. Więc jeśli z jakiegoś powodu
S is for Something smells fishy...
jest krótszy, idź do niego.Wpisz wynik swojego programu w swojej odpowiedzi lub przynajmniej listę użytych słów (jeśli istnieje link do uruchomienia kodu online, nie musimy widzieć całego wyniku).
Najkrótszy kod wygrywa
To wyzwanie zostało zainspirowane tym filmem .
źródło
Odpowiedzi:
SOGL 0.8.1 ,
6032 bajtówWyjaśnienie:
To właściwie odpowiedź Jonathana Allana , ale przeniesiona na ten język.
Stara wersja: (SOGL 0.8.2)
wynik:
To nie jest najkrótszy język, jaki potrafi ten język, ale powinien być najlepszy ze słowami zakodowanymi na stałe.
źródło
Bash (+ coreutils),
81,87,82, 78 bajtówUżywa strony man dla X , jako źródła słów.
Grał w golfa
EDYCJE
|&
aby zapisać 5 bajtów;Test
źródło
|&
, dzięki czemu można go grepować.Python 2 ,
8877 bajtów-11 bajtów dzięki xnor (unikaj zipu, przechodząc przez łańcuch i licząc
c
od 65)Wypróbuj online!
(Port mojej odpowiedzi Jelly, gdy miał 56 bajtów.)
źródło
x
równolegle .Unt
? Nigdzie nie mogę go znaleźćUnt
to słowo, aleUt
możesz zastąpićn
literał literą,\0
aby uczynić to poprawnym i dodać tylko jeden bajt. Edytuj reguły nieważne mówią, że muszą mieć 3 litery ... hmmmGrzmotnąć,
78, 69 bajtówAardvarki, Babushkas i Kamikazes!
Grał w golfa
EDYCJE
Test
Wykorzystuje / usr / share / dict / words :
źródło
PowerShell ,
15014111775 bajtówWypróbuj online!
Pętle od
65
do90
(tj. ASCIIA
doZ
). W każdej iteracji zamieniamy liczbę całkowitą na odpowiedniąchar
(tj. ASCII65
dlaA
), zachowując ją do$i
późniejszego użycia, łącząc łańcuch z tymis for $i
, a następnie zaznaczając środek odpowiedniego słowa. Dokonuje się tego poprzez indeksowanie w długi ciąg (zapożyczony z odpowiedzi Jonathana Allana ). Kończy literą,t
tworząc trzyliterowe słowo.Powstałe ciągi są pozostawione w potoku, a domniemane
Write-Output
na końcu drukuje je z nowymi liniami pomiędzy nimi.Zaoszczędził sporo bajtów dzięki liście słów Rod
Borrowed z odpowiedzi Jonathana Allana
źródło
[char]$
przykładzieGalaretka , 39 bajtów
TryItOnline!
Oparty na 56-bajtowej wersji (dwa poniżej), ale zmienił słowa, aby usunąć wszystkie środkowe litery,
"u"
aby mógł indeksować do słowa słownika"anisole"
*, co zapewnia wygodę posiadania potrzebnych liter o indeksach mniejszych niż sześć:1:a, 2:n 3:i, 4:s, 5:o (6:l), 0:e
(zwróć uwagę na"e"
po prawej jest na indeksie zerowym [także 7 i -7 oraz dowolna inna liczba zgodna z 0 mod 7]). Jest także wcześnie w słowniku, więc ma tylko dwa, a nie o wiele bardziej powszechny trzy bajtowy indeks wyszukiwania ("anisogamete"
działałby również dla 2).* Oldschoolowa nazwa aromatycznego eteru metoksybenzenu, często używanego w perfumach.
W jaki sposób?
Poprzedni, 46
Wszystkie słowa mają drugą literę „s” lub „a” i ostatnią literę „p” lub „t” przy użyciu podstawowego wyszukiwania czwartego w iloczynie kartezjańskim „sa” i „pt”. Z wyjątkiem słowa „U”, które kod zmienia na „Użyj” (używając stosunkowo nieporęcznego
F”e272¦
na końcu) - gdybym mógł znaleźć taką listę słów, która nie ma takiego wyjątku, patrzylibyśmy na 39 bajtów .Lista słów:
Spróbuj tego
Poprzednie 56 bajtów
Lista słów:
Jest sformatowany, spróbuj
Poprzednio 83 bajty
... zagrajmy „Odszukaj, która litera nie ma zwierzęcia!” tam
jest jeden i tylko jeden - uważaj na czerwonego śledzia(kłamstwo czerwony śledź był ksenon, który jest elementem, oczywiście nie zwierzę) , dwa pięć list słów tutaj, że nie są to zwierzęta (ksenonowe będąc jednym) :(oczywiście jest to poprawnie sformatowane, spróbuj - po prostu pomyślałem, że zaoszczędzę miejsce)
źródło
Xenon
nie jest zwierzęciem. Byłem pewien, że żartujeszH is for Herring
, ale chyba nie.Uut
?Retina ,
8987 bajtówZaoszczędzono 2 bajty dzięki Martinowi Enderowi
Wypróbuj online!
Wybrałem słowo dla każdej litery, która kończy się na
t
(niektóre są dość niejasne).Wyjaśnienie
Zastąp nieistniejące (puste) wejście powyższym tekstem.
Zamień każdą wielką literę na
(newline)(itself) is for (itself)
. Powoduje to, że powyższy tekst jest podzielony na osobne linie, takie jak... i tak dalej
Ponieważ jednak nowa linia została umieszczona przed każdą stolicą, istnieje nowa linia wiodąca, którą należy usunąć. Jest usuwany na tym etapie.
Umieść
t
na końcu każdej linii, ponieważ każde słowo użyte w piosence kończy się nat
.źródło
$&
lub$0
zamiast$1
. W rzeczywistości może to również zaoszczędzić bajty na moim podzielonym etapie.$&
dokładnie robi? Nie widziałem tego na wiki GitHub.$0
(i jest tylko częścią smaku .NET, a także większości innych smaków).Siatkówka ,
9288 bajtówZaoszczędzono 4 bajty, pożyczając pomysł od Business Cat .
Liczba bajtów zakłada kodowanie ISO 8859-1.
Wypróbuj online!
Na podstawie listy słów AdmBorkBork , ale zmieniłem kilka słów na te, które kończą się na
ad
aby zaoszczędzić więcej bajtów na wspólnym sufiksie.Wyjaśnienie
Zamień puste (nieistniejące) wejście w ten ciąg. Zawiera wszystkie litery, a także resztę słów, które się nie kończą
ad
.Wstaw linijkę przed każdą wielką literą, a następnie zamień na
X is for X
.Dopasuj litery, które są teraz same i dołącz,
ad
aby uzupełnić skrócone słowa.Odrzuć pustą linię, która została utworzona przez wstawienie wcześniej linii
A
.źródło
PHP,
122124127120115101 bajtówPodąża za „standardową”
<letter><filler>t
strukturą.Próbowałem wymyślić słowa, których nikt wcześniej nie używał.
Jeśli zobaczysz słowo, które chcesz, żebym zastąpił, powiedz mi.
Nowa linia jest reprezentowana jako,
\n
ale liczona jako 1 bajt.Wynik:
Dziwne słowa:
źródło
vprintf
i zzend_version
pewnością nie są angielskimi słowami. Bardzo niewiele z tych istot to w rzeczywistości słowa.zit
dziwnym słowem, myślę, że każdy powinien już wiedzieć, co to znaczy.Pyke,
555148 bajtówWypróbuj tutaj!
Link ma długość 3 i nie kwalifikuje się, ponieważ słowa zawierają łączniki.
Wyjścia:
Możesz to przetestować poza Pyke przy użyciu tego samego algorytmu. Wymaga Dictionary.json .
źródło
Timeout running code. BAD EVAL
Zaktualizuj link „Wypróbuj online”.Z is for zoofilia
Zastanowiłbym się poważnie, zanim moje dzieci to zaśpiewają.Japt ,
5250 bajtówWspółpracował z @ETHproductions
Zawiera wiele niedrukowalnych materiałów. Przetestuj online!
Lista słów to:
Japt korzysta z biblioteki kompresji ciągów shoco , która redukuje typowe przebiegi małych liter o bajty. Oto pełna lista wszystkich dwuliterowych przebiegów skondensowanych w jeden bajt:
Pomysł polega więc na utworzeniu słowa z jedną z tych par dla każdej litery alfabetu.
Jedną interesującą rzeczą do odnotowania jest to, że chociaż Japt może pośrednio dekompresować ciąg zawinięty w backticks, tak naprawdę jest to bajt już tutaj, ponieważ trzeba będzie złapać dwa znaki w zdekompresowanym ciągu zamiast jednego.
źródło
05AB1E ,
454239383736 bajtówWypróbuj online!
Wyjaśnienie
Au
wypycha wielkie litery alfabetu.'Æå
wypycha słowoscenario
.•à¡P°€kš¦zᮕ
wypycha liczbę base-1036774474076746444766322426
.Sè
używa tych cyfr do indeksowaniascenario
.)ø
zamyka te ciągi razem na liście[An, Bi, Co, ..., Zi]
Użyte słowa:
['Ant', 'Bit', 'Cot', 'Dot', 'Eat', 'Fat', 'Got', 'Hat', 'Ist', 'Jot', 'Kit', 'Lot', 'Mat', 'Nit', 'Oat', 'Pat', 'Qat', 'Rot', 'Sit', 'Tit', 'Unt', 'Vet', 'Wet', 'Xat', 'Yet', 'Zit']
Wersja 33-bajtowa z użyciem słów, których nie jestem pewien
Słowa:
['Ant', 'Bat', 'Cat', 'Dat', 'Eat', 'Fat', 'Gat', 'Hat', 'Ist', 'Jat', 'Kat', 'Lat', 'Mat', 'Nat', 'Oat', 'Pat', 'Qat', 'Rat', 'Sat', 'Tat', 'Ust', 'Vat', 'Wat', 'Xat', 'Yat', 'Zat']
źródło
Ruby,
93 84 69 63 5862 bajtówWynik:
Wszystkie trzyliterowe słowa kończące się na „t”, większość z nich na „at”.
Używając kontrowersyjnych słów (iat, dat, amp. Ump) - 55 bajtów:
Wciąż próbuję znaleźć wzór, myślę, że można użyć tylko 2 różnych zakończeń i wszystko uprościć.
Dzięki @Value Ink i @Business cat za pomoc.
źródło
/#{l}../
kit
.///, 163 bajty
Wypróbuj online
Hm, nauczyłem się dzisiaj ...
źródło
05AB1E ,
7268 bajtówKod:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online!
Wyjaśnienie
Poniższy kod:
wypycha tę tablicę:
I jest przetwarzany przy użyciu następującego kodu:
źródło
”–³”=Apple
aint(–³,214)=23891
jednak wciąż nie widać korelację tutaj.Clojure,
159232 bajtyCóż, teraz jest to z pewnością niekonkurencyjne rozwiązanie, ponieważ o wiele łatwiej byłoby na stałe zakodować użyte słowa. Umieszczenie go tam tylko po to, aby uzyskać poprawną odpowiedź (i nie używać listy słów innych osób).
Zasadniczo nadal pobiera wszystkie funkcje zdefiniowane w
clojure.core
przestrzeni nazw, ale potem oceniadoc <function name>
i umieszcza je w ciągu. Następnie łączy go w jeden wielki ciąg (ze słowemxyst
) i stamtąd znajduje odpowiednie słowa. Należy uruchomić w Clojure REPL.Wynik:
Stare rozwiązanie:
źródło
or
, nieorb
dla 1 bajtu.JavaScript (ES6), 82 bajty
Anonimowa funkcja zwracająca ciąg znaków. Zawiera niedrukowalne; oto wersja, która nie:
Wykorzystuje to technikę @ JonathanAllen, używając tylko trzyliterowych słów, które kończą się na
t
. Ciąg dekompresuje się doAnBiCoDoEaFaGOHuIsJoKiLoMaNiOuPaQaRoSiTiUnVeWeXaYeZi
.Próbowałem połączyć łańcuchowe dwuliterowe pary w ten sposób:
X
Dotarłem już do końca, ale utknąłemY
; o ile wiem, jedynym możliwym do uzyskania trzyliterowymX
słowem jestXis
i nie ma trzyliterowego słowa zaczynającego się odYs
.Dla przypomnienia, pełny ciąg to
ceeeweeereueaebiueeiziais
...źródło
uzi
itiz
...sei
,ski
albosri
, co pozostawia namree
,roe
,rue
,rye
, który pozostawia Państwu ... tylko trzy literyq
-słów mogę znaleźć toqat
,qis
iqua
. Czy istnieje strona Wikisłownika zawierająca więcej trzyliterowych słów?p
słowo, które się kończyu
).piu
, więc to wcale nie jest problem: P Dzięki!piu
wydaje się dość graniczne - Wikisłownik nie ma go jako angielskiego, a Dictionary.com ma go jakopiù
(nie wiem, jak rozważamy akcenty dla tego wyzwania). Ale tak,ys_
stanowiłby problem.Mathematica, 97 bajtów
Wygląda na Mathematica
WordList
trzeciego słowa rozpoczynającego się od każdej litery; pozwala to uniknąć liter i wykrzykników. Ma nową linię.źródło
Groovy,
7673 bajtów(edytowany z 76 do 73 bajtów, dziękuję kotu)
Zainspirowany rozwiązaniem rubinowym:
używamy
any
zamiast każdego, ponieważ jest on krótszy, a wszystkie instrukcje println zwracają wartość false. Dla specjalnych przypadków w ciągu używamy String.find, który w groovy zwraca dopasowanie lub null. W przypadku wartości null używamy operatora elvis,?:
abyat
zamiast tego zwracać słowo kończące się na .Wydruki:
Groovy, rekurencja, 74 bajty
drukuje tekst z pierwszej odpowiedzi, a następnie zgłasza wyjątek PatternFormatException. Zamykanie nazywamy rekurencyjnie, zaczynając od „A” i zwiększając,
++char
aż postać po tymZ
zgłosi błąd.Groovy, oszukując, 77 bajtów
Z ryzykiem zlinczowania:
tzn. przeczytaj dane na tej stronie i wydrukuj definicję poprawnej odpowiedzi na początku. W mojej obronie ... drukuje żądaną odpowiedź ... teraz nikt nie edytuje strony ...
Groovy, używając „razy”, 81 bajtów
Opierając się na pythonowej odpowiedzi, składającej się z trzech liter:
drukuje:
Groovy, rekurencyjnie na głównej (...), 83 bajtach
Zakładając, że nowe znaki liczymy jako jeden znak.
drukuje tekst z pierwszej odpowiedzi, a następnie zgłasza wyjątek PatternSyntaxException.
Groovy, używając eachWithIndex, 88 bajtów
Groovy, przy użyciu transpozycji, 102 bajty
źródło
kit
.05AB1E , 77 bajtów
Wypróbuj online!
Używa skompresowanego następującego ciągu:
ASSBINCATDOTEATFATGOTHATILLJOTKITLOTMETNOTOATPATQUEROTSETTITUSEVATWETXISYIPZAP
Przekształcony w Base-214:
Użyto listy 3-literowych scrabble słów: http://wordfinder.yourdictionary.com/letter-words/3
Dane wyjściowe są następujące:
Miał wersję 70-bajtową, ale słowa dwuliterowe nie są dozwolone.
Wyjaśniono:
źródło
qui
nie jest słowem angielskim. Wyszukiwanie tego ujawnia tylko łacińskie słowo.Que
że wiedziałem, że istnieje 3-literowe prawne słowo scrabble, błędnie je napisałem.}»
można zastąpić,
.SmileBASIC,
1311138281 bajtówTeraz używam słów, które w
t
źródło
Lithp ,
136125117 bajtów(Podziel dla czytelności)
Wypróbuj online!
To właściwie port odpowiedzi Pythona
each
indeksu(scope #)
Wynik:
źródło
Partia, 250 bajtów
Ponieważ nigdy nie zamierzałem uzyskać przyzwoitego wyniku, wybrałem najkrótsze humorystyczne słowa, jakie udało mi się znaleźć:
źródło
ułożone , 72 bajty
Są dwa na 72 bajty!
Wypróbuj online! Używając tego niesamowitego wzoru. (Zanim zapytasz,
++
będzie to pojedynczy token, więc+ +
jest używany zamiast tego).Zarówno praca przez powtarzanie od
65
celu90
i coraz prawidłową sekwencję znaków. Uwagi:#:
jest pseudonimem dlachr
#
jest pseudonimem dlaget
{!...}
jest taki sam jak{ n : ... }
(lambda zn
jako parametr)Dla 73 bajtów:
źródło
Mathematica 93 bajty
plony
źródło
Groovy, 72 bajty
Wynik
źródło
Python 3,
145137135 bajtówPoświęciłem kilka bajtów, aby pseudolosowo wygenerować dane wyjściowe przy każdym uruchomieniu. Chodzi o to, aby wyszukać małe litery o długości co najmniej 3 znaków,
/usr/share/dict/words
a następnie wybrać jeden z tej listy za pomocąid([x])%99
.Edycje
title()
ponieważ słowa nie muszą być pisane dużymi literami."\n(%c.{3,})"
(+ 3 bajty), aby umożliwić usunięcie,re.M
(- 5 bajtów).Przykładowe dane wyjściowe:
źródło
Qohele
, chociaż wyszukiwanie ujawnia, że jest to książka lub tom świętego tekstu.GNU sed, 81 + 1 (flaga r) = 82 bajty
Jest to realizacja sed listy słów Jonathan Allana odpowiedź .
Słowa, z wyjątkiem wspólnej litery końcowej
t
, są podawane w formie konkatenowanej w linii 1, a następnie drukowane w żądanym formacie w linii 2. Obecna jest nowa linia końcowa.Uruchom :
źródło
Java 7,
124121 bajtówNa podstawie @JonathanAllen odpowiedź „s , ponieważ Java ma ochotę wbudowanego słownika. ;) Próbowałem znaleźć kolejną literę końcową dla całego alfabetu (jak
s
lubn
luby
) lub środkową literę (jaka
lube
), ale w większości brakowało tylko jednego lub dwóch słów, więc skończyłem również z użyciemt
. Słowa są wybierane ręcznie z wordhippo.com .Nie golfowany:
Wypróbuj tutaj.
Wynik:
źródło
+a+++
. Lubię pisać te: PPHP,
91878676 bajtówna podstawie listy słów Jonathana Allana :
starsze wersje, 86 bajtów:
lub
Uruchom z
-nr
.wynik
Dziwne słowa, patrz odpowiedź Ismaela
źródło