;“ẉbẊWS»,⁸K;;”t
“¤ṁp}œḊṄæ®’b6ị“ʠȷ»ØAç"Y
TryItOnline!
Based on the 56 byte version (two below), but changed words to remove all middle letter "u"
s so it can index into the dictionary word "anisole"
*, which has the convenience of having the letters we need all at indexes less than six: 1:a, 2:n 3:i, 4:s, 5:o (6:l), 0:e
(note the "e"
on the right is at index zero [also 7 and -7 and any other number congruent to 0 mod 7]). It's also early in the dictionary so has only a two rather than the much more common three byte lookup index ("anisogamete"
would also work for 2).
* The old-school name for the aromatic ether methoxybenzene, often used in perfumes.
A is for Ant
B is for Bit
C is for Cot
D is for Dot
E is for Eat
F is for Fat
G is for Got
H is for Hat
I is for Ist
J is for Jot
K is for Kit
L is for Lot
M is for Mat
N is for Nit
O is for Oat
P is for Pat
Q is for Qat
R is for Rot
S is for Sit
T is for Tit
U is for Unt
V is for Vet
W is for Wet
X is for Xat
Y is for Yet
Z is for Zit
###How?
“¤ṁp}œḊṄæ®’b6ị“ʠȷ»ØAç"Y - Main link: no arguments
“¤ṁp}œḊṄæ®’ - base 250 compressed number -> 75711304811637630759
b6 - convert to base 6 list
-> [ 2 , 3 , 5 , 5 , 1 , 1 , 5 , 1 , 4 , 5 , 3 , 5 , 1 , 3 , 1 , 1 , 1 , 5 , 3 , 3 , 2 , 0 , 0 , 1 , 0 , 3]
“ʠȷ» - word from Jelly's dictionary, "anisole"
ị - index into that
-> [ "n" , "i" , "o" , "o" , "a" , "a" , "o" , "a" , "s" , "o" , "i" , "o" , "a" , "i" , "a" , "a" , "a" , "o" , "i" , "i" , "n" , "e" , "e" , "a" , "e" , "i"]
ØA - get the uppercase alphabet
-> [ "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"]
ç" - zip with last Link (1) as a dyad (i.e. get [f("A", "n"), f("B", "i"), ...]
-> ["A is for Ant","B is for Bit","C is for Cot","D is for Dot","E is for Eat","F is for Fat","G is for Got","H is for Hat","I is for Ist","J is for Jot","K is for Kit","L is for Lot","M is for Mat","N is for Nit","O is for Oat","P is for Pat","Q is for Qat","R is for Rot","S is for Sit","T is for Tit","U is for Unt","V is for Vet","W is for Wet","X is for Xat","Y is for Yet","Z is for Zit"]
Y - join with line feeds
- implicit print
;“ẉbẊWS»,⁸K;;”t - Link 1, make a song line: character X; character Y
“ẉbẊWS» - compressed string = " is for"
; - X (e.g. "A") concatenate that -> "A is for"
, - pair that with
⁸ - the left argument (X) ---------> ["A is for","A"]
K - join with spaces --------------> "A is for A"
; - concatenate with Y (e.g. "n") -> "A is for An"
”t - literal character = "t"
; - concatenate -------------------> "A is for Ant"
Previous, 46
“¤ṪŻIð^ƥ’b4ị⁾sap⁾pt¤ØAż,@K¥€“ẉbẊWS»ØAżYF”e272¦
Words all have second letter "s" or "a" and last letter "p" or "t" using a base four lookup in a Cartesian product of "sa" and "pt". Except the "U" word, which the code changes to "Use" (using the relatively bulky F”e272¦
on the end) - if I could find a word list like this that does not have such an exception we'd be looking at 39 bytes.
Word list:
Asp, Bat, Cat, Dap, Eat, Fat, Gap, Hat, Ist, Jat, Kat, Lap, Mat, Nap, Oat, Pat, Qat, Rat, Sat, Tap, Use, Vat, Wat, Xat, Yap, Zap
try this one
###Previous 56 bytes
”tṁØA⁺,j“niooaauusoioaiuaaoiineeaei”œs3Z,@K¥€“ẉbẊWS»ØAżY
Word list:
Ant, Bit, Cot, Dot, Eat, Fat, Gut, Hut, Ist, Jot, Kit, Lot, Mat, Nit, Out, Pat, Qat, Rot, Sit, Tit, Unt, Vet, Wet, Xat, Yet, Zit
It is formatted, give it a go
###Previous, 83 bytes
“ẉbẊWS»WṁØA⁺żż“¦ịfe$ɲVPġþ¹Øt@ƑƊŀqṁŒƑOɦ⁴ḍẊḤṁr}Ƭ¢b⁻?q&øIụNẎ9eƲi⁸'��B.;%V,¦İ⁷ẓk½»s5¤K€Y
...let's play "Spot which letter does not have an animal!" there is one, and only one - watch out for the red herring (a lie, the red herring was xenon, which is an element, obviously not an animal), are two five letter words here that are not animals (xenon being one):
Aphid, Bison, Camel, Dingo, Eagle, Finch, Gecko, Heron, Indri, Jabot, Koala, Lemur, Mouse, Nyala, Otter, Panda, Quail, Raven, Sloth, Tapir, Urial, Viper, Whale, Xenon, Yapok, Zebra
(of course this is formatted correctly, try it - I just thought I'd save space)