It might be an interesting LLM benchmark: how many can they list without breaking the rules (repetition or non-animals). Although I bet that big bucks would be then thrown at pointlessly optimizing for that benchmark, so...
bronco21016
Might be an interesting problem for understanding how various models perform recollection of prior tokens within the context window. I'm sure they could list animals until their window is full but what I'm not sure of is how much of the window they could fill without repeating.
I got 42. I was very impressed by how it handled more and less specific categories. It also understood rotifers were a microscopic animal, which I half expected not to work. Great project.
themanmaran
68. The unique title texts are really fun. But I strongly disagree that "chipmunks are squirrels".
jmtulloss
This is what I'm saying. Chipmunks are not squirrels. I will do my best on this hill.
bmitc
There are some weird ones. It knew red-bellied woodpecker but not yellow-bellied woodpecker.
pdabbadabba
Similarly, it insisted to me that a pigeon is the same thing as a mourning dove. Not true! But your case is even more egregious.
divbzero
Instead of trying to think of just any animal, I found it easier to add a constraint…
1. Animal that starts with A
2. Animal that starts with B
3. Animal that starts with C
…
(I also appreciated the easter eggs: “Are you Australian?” and “You listed both dingos and dogs, so I gave you the benefit of the doubt, but there's disagreement on whether the dingo is its own species of canid, a subspecies of grey wolf, or simply a breed of dog.”)
2muchcoffeeman
Without considering if it’s a distinct species, a dingo is descended from the same wolf population as dogs.
They are feral dogs. IE wolf -> domesticated dog -> became wild again.
bmitc
I went by groups and families of animals.
Buildstarted
drop bear => Already said Koala. but if you type it before you say koala the answer drops from the top of the page. so many great easter eggs. got 92 in the end
pilaf
I entered plankton, which technically isn't an animal and so it rejected it like any other random word, but then after I lost it offered me a link to the Wikipedia article on plankton. Very thoughtful.
echelon
106, I feel like I should have done much better. (I feel like I cheated by naming a lot of dinosaurs and insects.)
The clown emoji is great. :)
alterom
Another 106 here. I got to the point where I was just blanking out looking at the countdown timer.
cvhc
49 as ESL speaker. Fun little game to practice English words :)
agnishom
I got 48 animals
rogual
140. Good fun. I like how it teaches you things, too. I learned that toads are considered frogs, axolotls are salamanders, and that it's "anemone" not "anenome". If you type in Unicorn it accepts it as "Unicorn spider" with a fun message. Don't forget to think of insects, birds and fish too, all of which it accepts. I love this kind of detailed, handcrafted thing that someone put a lot of time and effort into.
mberning
It accepted tardigrade which I thought was interesting.
pilaf
It pulls its data from Wikidata, which is very thorough, so I'd be more surprised if you managed to enter an animal it didn't know.
update: Start with "human" or "homo sapiens" and the website keeps changing as you add new words.
hillcrestenigma
I like how it triggers an overlay when you try "human", it's a nice touch
troyvit
I said "ape" after and it wouldn't take it because I'd said human already :)
ivanech
this was really delightful. The Easter eggs in particular made it feel like someone was actually on the other side
Cyphase
95. Definitely feel like I should have done better; will try another time with more sleep.
lepolas
This was fun.
I definitely could feel the fatigue slowing me down until the timer got me. I also wasted a bunch of time trying to spell specific animals like the wobbegong.
I like the emoji output as well:
203 animals listed:
𓃬𓆊 𓃜𓃘𓅱𓆉𓅃
ViscountPenguin
Possum => opossum is erroneous. I was planning to list both species, it wasnt a typo.
kalmyk
lots of animals
TZubiri
The background is alternating between cyan and black, which is very distracting. Not sure if that's on purpose.
disillusioned
205 and I very much was scraping the bottom of the barrel at the end. Starting a bit generic and adding specificity helped a lot. The little meta-commentary was great. "you already said dogs. dogs are dogs." when I tried "golden retrievers" after already typing dogs.
jammaloo
267, I was going pretty strong and had about 2 minutes racked up, until I hit a wall, and couldn't think of anything else. Thinking in groups helped the most, e.g. reptiles, flightless birds, african animals, etc.
Extinct animals also work, including the dinosaurs!
themk
One of the few sites with a fun "you have javascript turned off" message.
> This game requires JavaScript. Or, if you've superior taste, take out a pen and paper and start listing animals.
sublinear
I think that's meant to be a gentle insult, but I'm glad it had it's intended effect!
Thanks for actually maintaining this instead of leaving it as a one-off dump!
schnaars
This is awesome. I made it to 100, but I know jack about animals.
cellis
79. I feel like i should have done better but got stuck in a local minima of "farm animals, which obvious farm animals haven't I said??", then tried thinking of names of fish which worked until it didn't.
jojobas
Some animals replace vaguer definitions, but say "snake" is there forever, no cobra or viper for you. Strange.
apt-apt-apt-apt
Lazy daisy:
(async () => {
for (c of 'red black white brown blue green yellow golden grey arctic mountain forest spotted striped'.split(' '))
for (a of 'bear lion tiger wolf fox eagle shark whale snake frog cat dog horse bat rat mouse owl hawk duck crab ant bee spider deer penguin elephant rabbit'.split(' ')) {
guessbox.value = c + ' ' + a;
uncomment(); attempt();
await new Promise(r => setTimeout(r, 75));
}
})();
nerdsniper
(async(s=new Set(Object.values(PARENT)))=>{for(i in ID_TO_TITLE)if(!s.has(i)){guessbox.value=ID_TO_TITLE[i];uncomment();attempt();await new Promise(requestAnimationFrame)}})()
This is a concise, pretty naive way highest possible high-score by just guessing everything in the internal animal database, and avoiding "parents". I'm not sure how many points it would get us because it would take like 3 hours to complete. However, we can do a lot better for the score by analyzing some additional things:
(The following numbers may be off a bit due to overlapping sets or just recording them at different stages of investigation/understanding, but they're darn close)
The game has 379,729 animals in its list (ID_TO_TITLE), mapped from 768,743 input strings (LOWER_TITLE_TO_ID).
52,546 are parents of some other animal, so it's best to skip those: If you guess "bird" first and then guess "eagle", then eagle won't count for points. Unless...well, more on that towards the end!
4,485 rows are considered to be "too specific". For example, there are 462 species under Mordellistena but the game says "nah screw all that, Mordellistena is specific enough".
3,127 are duplicates, they're the same species but have different names from different era. e.g. Megachile harthulura was discovered in 1853 but renamed to Megachile cordata in 1879. The game counts these only once.
3,116 are...weird: I think these are mostly errata caused by the input parser redirecting guesses to different IDs than the raw/full database expects. The parser maps the text to some "correct" ID but leaves a different, perhaps similar ID uncredited. This could happen because the text parser strips out hyphens, e.g. there's an entry for Yellow-tail which should be a duplicate of Yellow-tail moth but "Yellow-tail" gets parsed to "yellowtail" which gets mapped to the fish Japanese Amberjack. Sometimes it's skipping ranks in the taxonomy, like the beetle Neomordellistena parvula maps directly to a Subfamily, which skips the Genus level required to verify the lineage. Sometimes it's things that got reclassified from one genus to another. And sometimes there are rows that are a family which get mapped to a genus, which is also a row (Dilophosauridae -> Dilophosaurus)
28 rows are impossible to reach because they need a curly apostrophe that the parser replaces with a straight apostrophe if you put it in the input box. 23 of the straight version maps to a different animal. For example, "budin's tuco tuco" (curly) maps to Budin's tuco-tuco, but after normalization it becomes "budin's tuco tuco" (straight), which maps to Reddish tuco-tuco. 5 of them have keys with curly apostrophes where the straight version doesn't exist in the database at all.
One entry in the list of animals is 'zorse' (zebra-horse hybrid) but this guess is explicitly rejected because it doesn't have its own wikipedia page (the wikipedia page for that is a redirect to "Zebroid").
That brings us down to a maximum score of 316,457
but then there are 722 entries in the string mapping table which are strings that don't appear in the raw animal table which can map to otherwise blocked animals, like Mongolian wolf. This animal exists and could count to your score, but if you type "Mongolian wolf", it maps to Himalayan wolf and you get credit for that instead of Mongolian wolf. However, it also contains a mapping for "woolly wolf" which gives you credit for Mongolian wolf.
That brings us up to the actual maximum score of 317,179
Then, because of these 10,034 unreachable leaf-nodes (non-parent rows in the animal list), sometimes all the children of a parent is unreachable, so because we never claimed any points for their children, we can go get the points for the parents. This adds 5,561 points.
This brings us up to 322,740.
By doing the 'maximum' 30 guesses per second (limited guesses to the game tick rate of 30fps), it would take an absolute minimum 3 hours to submit every animal. Just a note, the countdown timer counts down from 1 minute, but 6 seconds are added for every correct guess. So by the time you're done the countdown timer would reach 22.6 days, which you'd have to wait to elapse before the game is actually "won".
If we remove some visual effects, we can reduce that by spamming guesses for 12ms, then pause for 4ms to let the browser render which keeps the tab responsive.
But the guesses still slow down over time due to a O(N²) algorithm in the game's code: it checks your current guess against a List (the array structure in JS), which is an O(N) check that runs N times, for an overall O(N²) performance hit. We can patch that function so it checks against a Set instead of a List to keep it O(1).
On an M2 MBP, this gets the high-score in under 30 seconds while keeping the game logic unchanged in function. But the visual effects were nice and it's rather soulless without the author's artistic vision. Turning them back on and giving it the 6ms required to render all of them slows this from 30 seconds to a boring 5 minutes. We can make it run the game logic 98% of the time and then render for 2% of the time, but it's still a bit too slow because the browser has to recalculate the page layout (DOM) every time a guess it submitted via the input box. So we can also skip the actual input box.
That reduces it to a lovely 20 seconds to get the highest possible score!
Then some memoization, some stupid tweaks to keep the UI looking nice, and adding a progress meter, aggressive minimization for HN posting, and we get the final script running in 16.5 seconds.
You'll still have to wait 22.75 days for the countdown timer to run out to win the game. I didn't want to actually change any of the game's logic or game the win condition, so editing that is left as an exercise to the reader! :)
129 here, not bad for the end of the day. I listed a surprising number of dinosaurs, and of course, edible animals, and Lion King stuff.
khazhoux
Warthog! Meerkat!
Jordan-117
205! The running commentary was fun. And I love how permissive it is -- it was fun stumbling into a new category that you wouldn't necessarily expect to qualify. I do wish that there was an option to see a list of the most popular ones you missed (based on traffic to the article or similar).
For a similar brain exercise, try to Name Every City:
I think they need to restrict their definition of city more. I named some tiny villages and it accepted them.
khazhoux
130
Fun game, but also a fascinating brain-probe. We're not used to reversing our internal classifiers.
monopoliessuck
I added Jellyfish and then Portuguese Man-o-war.
It took the man o war, but crossed out Jellyfish and said "added a vaguer term", but a jellyfish and a man-o-war are discrete animals.
The man-o-war is a colonial siphonophore composed of zooids, while a jellyfish is a singular marine organism.
They're both in the phylum Cnidaria, and that would have been a more vague term had I entered it.
4gotunameagain
yeah there are lots of inaccuracies.
I added bobcat, then lynx, and it would not accept lynx because bobcat was there.
Oh, and, 77, just woke up. No coffee.
cainxinth
It raises the question: can a colony of individual animals (zooids in this case) that work cooperatively be called a singular animal itself? I think biologists say yes, but it’s an interesting taxonomic boundary.
NooneAtAll3
that's like saying tomato is a fruit
in biological journal, sure - for practical purposes straight up no
if it looks like a jellyfish, stings like a jellyfish and behaves like a jellyfish - then it doesn't matter what it looks like under a microscope, it is jellyfish
hyperno
110. my strategy is to use pokemon to remember animals. (i can list all 1025 pokemon from memory)
not a great strat, though. (tons repeated animals)
samename
Fun results: outputted as emoji
30 animals listed
𓃱 𓃸
Edit: weird... emojis don't work here? how have I never known this...
kevin_thibedeau
We can at least practice egyptology.
teaearlgraycold
Countdown timer seemed stuck at 1:16 and then was suddenly big red and almost out of time?
66 animals listed
𓃬𓃰
QuadrupleA
Fun :) but mobile text input was the main challenge.
zkmon
Like babies, humanity is fast slipping into cradles and counting the colorful toys attached to the cradle. Food is fed via tubes and work is outsourced to nannies. There is hardly anything left to do, other than clicking approve buttons (the baby nods and smiles).
riffraff
I'm mildly bothered that I can't input "fox" because I already entered "fennec", and the game decided it should be "fennec fox" :)
whtrbt
You would need to say "red fox". I think that feature, managing specificity, is actually quite well implemented.
pmcarlton
307. I think I could have kept going but I was exhausted. Dinosaurs helped a lot!
My favorite easter egg was "sidewinder".
elias1233
I created a similar game but where you can enter any category, for example programming languages, car brands or whatever. Of course uses LLMs https://gissallt.eliasf.se/
grimgrin
Not of course. You could have compiled datasets. Matter of fact I think that would be cooler for something with definitive lists
LLMs could compile it for you, by sourcing X Y and Z
ulnarkressty
> great tit
> Thanks!
Amazing.
lostlogin
African swallow
European swallow.
Game over. You didn’t list lion.
bokkies
Since this accepts all marine, freshwater and sky animals (birds) also this could take a very long time. For a bit more of a challenge in a shorter time list all animals starting with a particular letter. Time yourself a couple minutes to put some pressure on. Challenge your friends and family!
oneeyedpigeon
I got to 60s before the lag became too much. I'm not sure "car" should be an accepted answer!
guytv
where are the high scores?
jstanley
Pretty cool but it won't allow "parrot" after "budgie" because budgie is more specific? A budgie isn't a parrot!
(Wikipedia says it actually is a type of parrot, but I definitely refer to different types of bird when I refer to a "parrot" vs a "budgie")
mcny
It allowed me dingo after dog though.
johtso
This is the trouble with common names, the way to avoid ambiguity is to use the binomial name.
Typing human has some nice visual effects and writes "That's me".
Angostura
I got:
Already said more specific animal: Leopard
I assume you mean “panther” in the general sense of any big cat.
At that point I stopped playing because this seems nonsense
vanderZwan
A mere 69, but I wonder if I would do better in my native language. Also, once I discovered it accepts extinct animals I went all in on dinos and other extinct animals, that's like half of my score.
patrick451
This game thinks buffalo and bison are the same thing and elk and deer are the same thing. Which is absurd, they even require buying different tags when hunting.
refrigerator
Very fun and impressive to do this without LLMs!
My score:
191 animals listed
𓆈𓇼 ⬛鯉𓃱唐𓆉𓃸𓆣𓆉
(update: oh... looks like you can't paste the full emoji string here)
eru
That's weird. I tried Secretariat, which was definitely an animal and definitely has a Wikipedia page, but it wasn't accepted.
moralestapia
Token/type dichotomy irl. I was reading about it yesterday ^^.
harpiaharpyja
Kicking myself because I ran out of time yet forgot to mention any vultures, elephants, or large cats. I guess that's for trying this first thing on a Sunday.
jasona123
Did anyone else have the thought of “should I just list off all the Ubuntu version names that I know and start with that”?
etothepii
This was a lot of fun.
The game mechanic of a count down timer made for much better play.
I was most surprised for bluebottle to be replaced with man o' war. We know the man o' war here in bermud by that name whereas a bluebottle is what I would call house fly.
the_fall
It might be an interesting LLM benchmark: how many can they list without breaking the rules (repetition or non-animals). Although I bet that big bucks would be then thrown at pointlessly optimizing for that benchmark, so...
bronco21016
Might be an interesting problem for understanding how various models perform recollection of prior tokens within the context window. I'm sure they could list animals until their window is full but what I'm not sure of is how much of the window they could fill without repeating.
I got 42. I was very impressed by how it handled more and less specific categories. It also understood rotifers were a microscopic animal, which I half expected not to work. Great project.
themanmaran
68. The unique title texts are really fun. But I strongly disagree that "chipmunks are squirrels".
jmtulloss
This is what I'm saying. Chipmunks are not squirrels. I will do my best on this hill.
bmitc
There are some weird ones. It knew red-bellied woodpecker but not yellow-bellied woodpecker.
pdabbadabba
Similarly, it insisted to me that a pigeon is the same thing as a mourning dove. Not true! But your case is even more egregious.
divbzero
Instead of trying to think of just any animal, I found it easier to add a constraint…
1. Animal that starts with A
2. Animal that starts with B
3. Animal that starts with C
…
(I also appreciated the easter eggs: “Are you Australian?” and “You listed both dingos and dogs, so I gave you the benefit of the doubt, but there's disagreement on whether the dingo is its own species of canid, a subspecies of grey wolf, or simply a breed of dog.”)
2muchcoffeeman
Without considering if it’s a distinct species, a dingo is descended from the same wolf population as dogs.
They are feral dogs. IE wolf -> domesticated dog -> became wild again.
bmitc
I went by groups and families of animals.
Buildstarted
drop bear => Already said Koala. but if you type it before you say koala the answer drops from the top of the page. so many great easter eggs. got 92 in the end
pilaf
I entered plankton, which technically isn't an animal and so it rejected it like any other random word, but then after I lost it offered me a link to the Wikipedia article on plankton. Very thoughtful.
echelon
106, I feel like I should have done much better. (I feel like I cheated by naming a lot of dinosaurs and insects.)
The clown emoji is great. :)
alterom
Another 106 here. I got to the point where I was just blanking out looking at the countdown timer.
cvhc
49 as ESL speaker. Fun little game to practice English words :)
agnishom
I got 48 animals
rogual
140. Good fun. I like how it teaches you things, too. I learned that toads are considered frogs, axolotls are salamanders, and that it's "anemone" not "anenome". If you type in Unicorn it accepts it as "Unicorn spider" with a fun message. Don't forget to think of insects, birds and fish too, all of which it accepts. I love this kind of detailed, handcrafted thing that someone put a lot of time and effort into.
mberning
It accepted tardigrade which I thought was interesting.
pilaf
It pulls its data from Wikidata, which is very thorough, so I'd be more surprised if you managed to enter an animal it didn't know.
update: Start with "human" or "homo sapiens" and the website keeps changing as you add new words.
hillcrestenigma
I like how it triggers an overlay when you try "human", it's a nice touch
troyvit
I said "ape" after and it wouldn't take it because I'd said human already :)
ivanech
this was really delightful. The Easter eggs in particular made it feel like someone was actually on the other side
Cyphase
95. Definitely feel like I should have done better; will try another time with more sleep.
lepolas
This was fun.
I definitely could feel the fatigue slowing me down until the timer got me. I also wasted a bunch of time trying to spell specific animals like the wobbegong.
I like the emoji output as well:
203 animals listed:
𓃬𓆊 𓃜𓃘𓅱𓆉𓅃
ViscountPenguin
Possum => opossum is erroneous. I was planning to list both species, it wasnt a typo.
kalmyk
lots of animals
TZubiri
The background is alternating between cyan and black, which is very distracting. Not sure if that's on purpose.
disillusioned
205 and I very much was scraping the bottom of the barrel at the end. Starting a bit generic and adding specificity helped a lot. The little meta-commentary was great. "you already said dogs. dogs are dogs." when I tried "golden retrievers" after already typing dogs.
jammaloo
267, I was going pretty strong and had about 2 minutes racked up, until I hit a wall, and couldn't think of anything else. Thinking in groups helped the most, e.g. reptiles, flightless birds, african animals, etc.
Extinct animals also work, including the dinosaurs!
themk
One of the few sites with a fun "you have javascript turned off" message.
> This game requires JavaScript. Or, if you've superior taste, take out a pen and paper and start listing animals.
sublinear
I think that's meant to be a gentle insult, but I'm glad it had it's intended effect!
Thanks for actually maintaining this instead of leaving it as a one-off dump!
schnaars
This is awesome. I made it to 100, but I know jack about animals.
cellis
79. I feel like i should have done better but got stuck in a local minima of "farm animals, which obvious farm animals haven't I said??", then tried thinking of names of fish which worked until it didn't.
jojobas
Some animals replace vaguer definitions, but say "snake" is there forever, no cobra or viper for you. Strange.
apt-apt-apt-apt
Lazy daisy:
(async () => {
for (c of 'red black white brown blue green yellow golden grey arctic mountain forest spotted striped'.split(' '))
for (a of 'bear lion tiger wolf fox eagle shark whale snake frog cat dog horse bat rat mouse owl hawk duck crab ant bee spider deer penguin elephant rabbit'.split(' ')) {
guessbox.value = c + ' ' + a;
uncomment(); attempt();
await new Promise(r => setTimeout(r, 75));
}
})();
nerdsniper
(async(s=new Set(Object.values(PARENT)))=>{for(i in ID_TO_TITLE)if(!s.has(i)){guessbox.value=ID_TO_TITLE[i];uncomment();attempt();await new Promise(requestAnimationFrame)}})()
This is a concise, pretty naive way highest possible high-score by just guessing everything in the internal animal database, and avoiding "parents". I'm not sure how many points it would get us because it would take like 3 hours to complete. However, we can do a lot better for the score by analyzing some additional things:
(The following numbers may be off a bit due to overlapping sets or just recording them at different stages of investigation/understanding, but they're darn close)
The game has 379,729 animals in its list (ID_TO_TITLE), mapped from 768,743 input strings (LOWER_TITLE_TO_ID).
52,546 are parents of some other animal, so it's best to skip those: If you guess "bird" first and then guess "eagle", then eagle won't count for points. Unless...well, more on that towards the end!
4,485 rows are considered to be "too specific". For example, there are 462 species under Mordellistena but the game says "nah screw all that, Mordellistena is specific enough".
3,127 are duplicates, they're the same species but have different names from different era. e.g. Megachile harthulura was discovered in 1853 but renamed to Megachile cordata in 1879. The game counts these only once.
3,116 are...weird: I think these are mostly errata caused by the input parser redirecting guesses to different IDs than the raw/full database expects. The parser maps the text to some "correct" ID but leaves a different, perhaps similar ID uncredited. This could happen because the text parser strips out hyphens, e.g. there's an entry for Yellow-tail which should be a duplicate of Yellow-tail moth but "Yellow-tail" gets parsed to "yellowtail" which gets mapped to the fish Japanese Amberjack. Sometimes it's skipping ranks in the taxonomy, like the beetle Neomordellistena parvula maps directly to a Subfamily, which skips the Genus level required to verify the lineage. Sometimes it's things that got reclassified from one genus to another. And sometimes there are rows that are a family which get mapped to a genus, which is also a row (Dilophosauridae -> Dilophosaurus)
28 rows are impossible to reach because they need a curly apostrophe that the parser replaces with a straight apostrophe if you put it in the input box. 23 of the straight version maps to a different animal. For example, "budin's tuco tuco" (curly) maps to Budin's tuco-tuco, but after normalization it becomes "budin's tuco tuco" (straight), which maps to Reddish tuco-tuco. 5 of them have keys with curly apostrophes where the straight version doesn't exist in the database at all.
One entry in the list of animals is 'zorse' (zebra-horse hybrid) but this guess is explicitly rejected because it doesn't have its own wikipedia page (the wikipedia page for that is a redirect to "Zebroid").
That brings us down to a maximum score of 316,457
but then there are 722 entries in the string mapping table which are strings that don't appear in the raw animal table which can map to otherwise blocked animals, like Mongolian wolf. This animal exists and could count to your score, but if you type "Mongolian wolf", it maps to Himalayan wolf and you get credit for that instead of Mongolian wolf. However, it also contains a mapping for "woolly wolf" which gives you credit for Mongolian wolf.
That brings us up to the actual maximum score of 317,179
Then, because of these 10,034 unreachable leaf-nodes (non-parent rows in the animal list), sometimes all the children of a parent is unreachable, so because we never claimed any points for their children, we can go get the points for the parents. This adds 5,561 points.
This brings us up to 322,740.
By doing the 'maximum' 30 guesses per second (limited guesses to the game tick rate of 30fps), it would take an absolute minimum 3 hours to submit every animal. Just a note, the countdown timer counts down from 1 minute, but 6 seconds are added for every correct guess. So by the time you're done the countdown timer would reach 22.6 days, which you'd have to wait to elapse before the game is actually "won".
If we remove some visual effects, we can reduce that by spamming guesses for 12ms, then pause for 4ms to let the browser render which keeps the tab responsive.
But the guesses still slow down over time due to a O(N²) algorithm in the game's code: it checks your current guess against a List (the array structure in JS), which is an O(N) check that runs N times, for an overall O(N²) performance hit. We can patch that function so it checks against a Set instead of a List to keep it O(1).
On an M2 MBP, this gets the high-score in under 30 seconds while keeping the game logic unchanged in function. But the visual effects were nice and it's rather soulless without the author's artistic vision. Turning them back on and giving it the 6ms required to render all of them slows this from 30 seconds to a boring 5 minutes. We can make it run the game logic 98% of the time and then render for 2% of the time, but it's still a bit too slow because the browser has to recalculate the page layout (DOM) every time a guess it submitted via the input box. So we can also skip the actual input box.
That reduces it to a lovely 20 seconds to get the highest possible score!
Then some memoization, some stupid tweaks to keep the UI looking nice, and adding a progress meter, aggressive minimization for HN posting, and we get the final script running in 16.5 seconds.
You'll still have to wait 22.75 days for the countdown timer to run out to win the game. I didn't want to actually change any of the game's logic or game the win condition, so editing that is left as an exercise to the reader! :)
129 here, not bad for the end of the day. I listed a surprising number of dinosaurs, and of course, edible animals, and Lion King stuff.
khazhoux
Warthog! Meerkat!
Jordan-117
205! The running commentary was fun. And I love how permissive it is -- it was fun stumbling into a new category that you wouldn't necessarily expect to qualify. I do wish that there was an option to see a list of the most popular ones you missed (based on traffic to the article or similar).
For a similar brain exercise, try to Name Every City:
I think they need to restrict their definition of city more. I named some tiny villages and it accepted them.
khazhoux
130
Fun game, but also a fascinating brain-probe. We're not used to reversing our internal classifiers.
monopoliessuck
I added Jellyfish and then Portuguese Man-o-war.
It took the man o war, but crossed out Jellyfish and said "added a vaguer term", but a jellyfish and a man-o-war are discrete animals.
The man-o-war is a colonial siphonophore composed of zooids, while a jellyfish is a singular marine organism.
They're both in the phylum Cnidaria, and that would have been a more vague term had I entered it.
4gotunameagain
yeah there are lots of inaccuracies.
I added bobcat, then lynx, and it would not accept lynx because bobcat was there.
Oh, and, 77, just woke up. No coffee.
cainxinth
It raises the question: can a colony of individual animals (zooids in this case) that work cooperatively be called a singular animal itself? I think biologists say yes, but it’s an interesting taxonomic boundary.
NooneAtAll3
that's like saying tomato is a fruit
in biological journal, sure - for practical purposes straight up no
if it looks like a jellyfish, stings like a jellyfish and behaves like a jellyfish - then it doesn't matter what it looks like under a microscope, it is jellyfish
hyperno
110. my strategy is to use pokemon to remember animals. (i can list all 1025 pokemon from memory)
not a great strat, though. (tons repeated animals)
samename
Fun results: outputted as emoji
30 animals listed
𓃱 𓃸
Edit: weird... emojis don't work here? how have I never known this...
kevin_thibedeau
We can at least practice egyptology.
teaearlgraycold
Countdown timer seemed stuck at 1:16 and then was suddenly big red and almost out of time?
66 animals listed
𓃬𓃰
QuadrupleA
Fun :) but mobile text input was the main challenge.
zkmon
Like babies, humanity is fast slipping into cradles and counting the colorful toys attached to the cradle. Food is fed via tubes and work is outsourced to nannies. There is hardly anything left to do, other than clicking approve buttons (the baby nods and smiles).
riffraff
I'm mildly bothered that I can't input "fox" because I already entered "fennec", and the game decided it should be "fennec fox" :)
whtrbt
You would need to say "red fox". I think that feature, managing specificity, is actually quite well implemented.
pmcarlton
307. I think I could have kept going but I was exhausted. Dinosaurs helped a lot!
My favorite easter egg was "sidewinder".
elias1233
I created a similar game but where you can enter any category, for example programming languages, car brands or whatever. Of course uses LLMs https://gissallt.eliasf.se/
grimgrin
Not of course. You could have compiled datasets. Matter of fact I think that would be cooler for something with definitive lists
LLMs could compile it for you, by sourcing X Y and Z
ulnarkressty
> great tit
> Thanks!
Amazing.
lostlogin
African swallow
European swallow.
Game over. You didn’t list lion.
bokkies
Since this accepts all marine, freshwater and sky animals (birds) also this could take a very long time. For a bit more of a challenge in a shorter time list all animals starting with a particular letter. Time yourself a couple minutes to put some pressure on. Challenge your friends and family!
oneeyedpigeon
I got to 60s before the lag became too much. I'm not sure "car" should be an accepted answer!
guytv
where are the high scores?
jstanley
Pretty cool but it won't allow "parrot" after "budgie" because budgie is more specific? A budgie isn't a parrot!
(Wikipedia says it actually is a type of parrot, but I definitely refer to different types of bird when I refer to a "parrot" vs a "budgie")
mcny
It allowed me dingo after dog though.
johtso
This is the trouble with common names, the way to avoid ambiguity is to use the binomial name.
Typing human has some nice visual effects and writes "That's me".
Angostura
I got:
Already said more specific animal: Leopard
I assume you mean “panther” in the general sense of any big cat.
At that point I stopped playing because this seems nonsense
vanderZwan
A mere 69, but I wonder if I would do better in my native language. Also, once I discovered it accepts extinct animals I went all in on dinos and other extinct animals, that's like half of my score.
patrick451
This game thinks buffalo and bison are the same thing and elk and deer are the same thing. Which is absurd, they even require buying different tags when hunting.
refrigerator
Very fun and impressive to do this without LLMs!
My score:
191 animals listed
𓆈𓇼 ⬛鯉𓃱唐𓆉𓃸𓆣𓆉
(update: oh... looks like you can't paste the full emoji string here)
eru
That's weird. I tried Secretariat, which was definitely an animal and definitely has a Wikipedia page, but it wasn't accepted.
moralestapia
Token/type dichotomy irl. I was reading about it yesterday ^^.
harpiaharpyja
Kicking myself because I ran out of time yet forgot to mention any vultures, elephants, or large cats. I guess that's for trying this first thing on a Sunday.
jasona123
Did anyone else have the thought of “should I just list off all the Ubuntu version names that I know and start with that”?
etothepii
This was a lot of fun.
The game mechanic of a count down timer made for much better play.
I was most surprised for bluebottle to be replaced with man o' war. We know the man o' war here in bermud by that name whereas a bluebottle is what I would call house fly.
It might be an interesting LLM benchmark: how many can they list without breaking the rules (repetition or non-animals). Although I bet that big bucks would be then thrown at pointlessly optimizing for that benchmark, so...
Might be an interesting problem for understanding how various models perform recollection of prior tokens within the context window. I'm sure they could list animals until their window is full but what I'm not sure of is how much of the window they could fill without repeating.
you might like https://github.com/aidanmclaughlin/AidanBench
there are so many special cases that this game responds to, i was shocked that it didn’t involve an llm at all at the end. very cool.
For anyone wondering: This is based on basic text parsing and a key-value lookup table, no AI involved whatsoever.
Here's the table: https://rose.systems/animalist/lower_title_to_id.js
There must be another table. I got "Are you Australian?" for "dingo" and for "cicada" "don't you love their songs?"
edit: https://rose.systems/animalist/eggs.js
There's a long Indonesian string referencing "weasel" - weird https://www.wikidata.org/wiki/Q28521
Edit: someone edited to remove it just this minute!
Introduction: https://www.wikidata.org/w/index.php?diff=2353193943 - just random vandalism I suppose.
I got 42. I was very impressed by how it handled more and less specific categories. It also understood rotifers were a microscopic animal, which I half expected not to work. Great project.
68. The unique title texts are really fun. But I strongly disagree that "chipmunks are squirrels".
This is what I'm saying. Chipmunks are not squirrels. I will do my best on this hill.
There are some weird ones. It knew red-bellied woodpecker but not yellow-bellied woodpecker.
Similarly, it insisted to me that a pigeon is the same thing as a mourning dove. Not true! But your case is even more egregious.
Instead of trying to think of just any animal, I found it easier to add a constraint…
1. Animal that starts with A
2. Animal that starts with B
3. Animal that starts with C
…
(I also appreciated the easter eggs: “Are you Australian?” and “You listed both dingos and dogs, so I gave you the benefit of the doubt, but there's disagreement on whether the dingo is its own species of canid, a subspecies of grey wolf, or simply a breed of dog.”)
Without considering if it’s a distinct species, a dingo is descended from the same wolf population as dogs.
They are feral dogs. IE wolf -> domesticated dog -> became wild again.
I went by groups and families of animals.
drop bear => Already said Koala. but if you type it before you say koala the answer drops from the top of the page. so many great easter eggs. got 92 in the end
I entered plankton, which technically isn't an animal and so it rejected it like any other random word, but then after I lost it offered me a link to the Wikipedia article on plankton. Very thoughtful.
106, I feel like I should have done much better. (I feel like I cheated by naming a lot of dinosaurs and insects.)
The clown emoji is great. :)
Another 106 here. I got to the point where I was just blanking out looking at the countdown timer.
49 as ESL speaker. Fun little game to practice English words :)
I got 48 animals
140. Good fun. I like how it teaches you things, too. I learned that toads are considered frogs, axolotls are salamanders, and that it's "anemone" not "anenome". If you type in Unicorn it accepts it as "Unicorn spider" with a fun message. Don't forget to think of insects, birds and fish too, all of which it accepts. I love this kind of detailed, handcrafted thing that someone put a lot of time and effort into.
It accepted tardigrade which I thought was interesting.
It pulls its data from Wikidata, which is very thorough, so I'd be more surprised if you managed to enter an animal it didn't know.
Presumably inspired by this tweet: https://x.com/Fredward3948576/status/1763363909669388588
That and probably Sporcle. Name X from {group Y} is a very popular quiz archetype.
https://www.sporcle.com/games/jjjjlapine2nd/name-every-anima...
ARE YOU THINKING OF AN ANIMAL? yes
DOES IT SWIM? no
IS IT A BIRD?
https://www.atariarchives.org/basicgames/showpage.php?page=4
BTW, that's a great game if you are on a road trip with bored kids.
157. Very neat! Started a, b, c then found much more success when thinking about biomes (sea, mountains, forest, jungle, etc).
nice score! I got 129, and yes, same experience.
No LLMs is impressive. Also recognizes "drop bear". Well played.
The Australian Museum recognises them also: https://australian.museum/learn/animals/mammals/drop-bear/
Somewhat more impressively, it recognises bungarra .. although it stalls out and fails on other similar words for various local animals.
Hahah in a moment of desperation I put “unicorn” which its response made me laugh out loud.
“Haggis” also gets a good response
Because the dataset is pulled from Wikidata: (drop bear) https://www.wikidata.org/wiki/Q4819356
Accepts the word "human" as well.
update: Start with "human" or "homo sapiens" and the website keeps changing as you add new words.
I like how it triggers an overlay when you try "human", it's a nice touch
I said "ape" after and it wouldn't take it because I'd said human already :)
this was really delightful. The Easter eggs in particular made it feel like someone was actually on the other side
95. Definitely feel like I should have done better; will try another time with more sleep.
This was fun. I definitely could feel the fatigue slowing me down until the timer got me. I also wasted a bunch of time trying to spell specific animals like the wobbegong.
I like the emoji output as well: 203 animals listed:
𓃬𓆊 𓃜𓃘𓅱𓆉𓅃
Possum => opossum is erroneous. I was planning to list both species, it wasnt a typo.
lots of animals
The background is alternating between cyan and black, which is very distracting. Not sure if that's on purpose.
205 and I very much was scraping the bottom of the barrel at the end. Starting a bit generic and adding specificity helped a lot. The little meta-commentary was great. "you already said dogs. dogs are dogs." when I tried "golden retrievers" after already typing dogs.
267, I was going pretty strong and had about 2 minutes racked up, until I hit a wall, and couldn't think of anything else. Thinking in groups helped the most, e.g. reptiles, flightless birds, african animals, etc.
Extinct animals also work, including the dinosaurs!
One of the few sites with a fun "you have javascript turned off" message.
> This game requires JavaScript. Or, if you've superior taste, take out a pen and paper and start listing animals.
I think that's meant to be a gentle insult, but I'm glad it had it's intended effect!
Nice! I added this to the HN Arcade https://andrewgy8.github.io/hnarcade/games/games/list-animal...
Thanks for actually maintaining this instead of leaving it as a one-off dump!
This is awesome. I made it to 100, but I know jack about animals.
79. I feel like i should have done better but got stuck in a local minima of "farm animals, which obvious farm animals haven't I said??", then tried thinking of names of fish which worked until it didn't.
Some animals replace vaguer definitions, but say "snake" is there forever, no cobra or viper for you. Strange.
Lazy daisy:
(async(s=new Set(Object.values(PARENT)))=>{for(i in ID_TO_TITLE)if(!s.has(i)){guessbox.value=ID_TO_TITLE[i];uncomment();attempt();await new Promise(requestAnimationFrame)}})()
This is a concise, pretty naive way highest possible high-score by just guessing everything in the internal animal database, and avoiding "parents". I'm not sure how many points it would get us because it would take like 3 hours to complete. However, we can do a lot better for the score by analyzing some additional things:
(The following numbers may be off a bit due to overlapping sets or just recording them at different stages of investigation/understanding, but they're darn close)
The game has 379,729 animals in its list (ID_TO_TITLE), mapped from 768,743 input strings (LOWER_TITLE_TO_ID).
52,546 are parents of some other animal, so it's best to skip those: If you guess "bird" first and then guess "eagle", then eagle won't count for points. Unless...well, more on that towards the end!
4,485 rows are considered to be "too specific". For example, there are 462 species under Mordellistena but the game says "nah screw all that, Mordellistena is specific enough".
3,127 are duplicates, they're the same species but have different names from different era. e.g. Megachile harthulura was discovered in 1853 but renamed to Megachile cordata in 1879. The game counts these only once.
3,116 are...weird: I think these are mostly errata caused by the input parser redirecting guesses to different IDs than the raw/full database expects. The parser maps the text to some "correct" ID but leaves a different, perhaps similar ID uncredited. This could happen because the text parser strips out hyphens, e.g. there's an entry for Yellow-tail which should be a duplicate of Yellow-tail moth but "Yellow-tail" gets parsed to "yellowtail" which gets mapped to the fish Japanese Amberjack. Sometimes it's skipping ranks in the taxonomy, like the beetle Neomordellistena parvula maps directly to a Subfamily, which skips the Genus level required to verify the lineage. Sometimes it's things that got reclassified from one genus to another. And sometimes there are rows that are a family which get mapped to a genus, which is also a row (Dilophosauridae -> Dilophosaurus)
28 rows are impossible to reach because they need a curly apostrophe that the parser replaces with a straight apostrophe if you put it in the input box. 23 of the straight version maps to a different animal. For example, "budin's tuco tuco" (curly) maps to Budin's tuco-tuco, but after normalization it becomes "budin's tuco tuco" (straight), which maps to Reddish tuco-tuco. 5 of them have keys with curly apostrophes where the straight version doesn't exist in the database at all.
One entry in the list of animals is 'zorse' (zebra-horse hybrid) but this guess is explicitly rejected because it doesn't have its own wikipedia page (the wikipedia page for that is a redirect to "Zebroid").
That brings us down to a maximum score of 316,457
but then there are 722 entries in the string mapping table which are strings that don't appear in the raw animal table which can map to otherwise blocked animals, like Mongolian wolf. This animal exists and could count to your score, but if you type "Mongolian wolf", it maps to Himalayan wolf and you get credit for that instead of Mongolian wolf. However, it also contains a mapping for "woolly wolf" which gives you credit for Mongolian wolf.
That brings us up to the actual maximum score of 317,179
Then, because of these 10,034 unreachable leaf-nodes (non-parent rows in the animal list), sometimes all the children of a parent is unreachable, so because we never claimed any points for their children, we can go get the points for the parents. This adds 5,561 points.
This brings us up to 322,740.
By doing the 'maximum' 30 guesses per second (limited guesses to the game tick rate of 30fps), it would take an absolute minimum 3 hours to submit every animal. Just a note, the countdown timer counts down from 1 minute, but 6 seconds are added for every correct guess. So by the time you're done the countdown timer would reach 22.6 days, which you'd have to wait to elapse before the game is actually "won".
If we remove some visual effects, we can reduce that by spamming guesses for 12ms, then pause for 4ms to let the browser render which keeps the tab responsive.
But the guesses still slow down over time due to a O(N²) algorithm in the game's code: it checks your current guess against a List (the array structure in JS), which is an O(N) check that runs N times, for an overall O(N²) performance hit. We can patch that function so it checks against a Set instead of a List to keep it O(1).
On an M2 MBP, this gets the high-score in under 30 seconds while keeping the game logic unchanged in function. But the visual effects were nice and it's rather soulless without the author's artistic vision. Turning them back on and giving it the 6ms required to render all of them slows this from 30 seconds to a boring 5 minutes. We can make it run the game logic 98% of the time and then render for 2% of the time, but it's still a bit too slow because the browser has to recalculate the page layout (DOM) every time a guess it submitted via the input box. So we can also skip the actual input box.
That reduces it to a lovely 20 seconds to get the highest possible score!
Then some memoization, some stupid tweaks to keep the UI looking nice, and adding a progress meter, aggressive minimization for HN posting, and we get the final script running in 16.5 seconds.
You'll still have to wait 22.75 days for the countdown timer to run out to win the game. I didn't want to actually change any of the game's logic or game the win condition, so editing that is left as an exercise to the reader! :)
(async()=>{"undefined"==typeof guessed_ids&&newGame();const e=e=>e.trim().toLowerCase().replaceAll("-"," ").replaceAll("’","'").replaceAll(/ +/g," "),o=LOWER_TITLE_TO_ID.human,t=LOWER_TITLE_TO_ID.crow,n={},r={},s={},c={};for(const[e,o]of Object.entries(LOWER_TITLE_TO_ID))(n[o]??=[]).push(e);for(const[e,o]of Object.entries(PARENT))(r[o]??=new Set).add(e);for(const[o,t]of Object.entries(ID_TO_TITLE)){if(LOWER_TITLE_TO_ID[e(t)]===o){s[o]=t;continue}const r=n[o]?.find((t=>LOWER_TITLE_TO_ID[e(t)]===o));r&&(s[o]=r)}const i=e=>{if(void 0!==c[e])return c[e];const o=r[e];return c[e]=!!o&&[...o].some((e=>s[e]||i(e)))},a=(e,o)=>{for(let t=PARENT[e];t;t=PARENT[t])if(t===o)return!0;return!1},d=[],l=[],p=[];for(const e of Object.keys(s)){if(i(e))continue;const n=s[e];(e===o||e===t?d:a(e,t)?l:p).push(n)}const f=[...p.splice(0,10),...d];for(;l.length||p.length;)f.push(...l.splice(0,6),...p.splice(0,6));const u=window.guessbox,g=window.comment,m={value:"",focus(){},disabled:!1},w={innerText:""};Object.defineProperty(window,"guessbox",{get:()=>m,configurable:!0}),Object.defineProperty(window,"comment",{get:()=>w,configurable:!0});const b=new Set(guessed_ids);guessed_ids.includes=e=>b.has(e),guessed_ids.push=e=>{Array.prototype.push.call(guessed_ids,e),b.add(e)};const T=.02,x=new Set(["longcat","dropbear","drop bear","sidewinder"]),O=log.prepend.bind(log);log.prepend=e=>{const o=x.has(e.innerText.toLowerCase().split(" → ")[0]);(o||Math.random()<T)&&(O(e),log.children.length>25&&[...log.children].reverse().find((e=>!e.dataset.vip))?.remove(),o&&(e.dataset.vip="true"))};const _=summonConfetto;summonConfetto=(...e)=>{Math.random()<T&&_(...e)};const h=Object.getOwnPropertyDescriptor(HTMLElement.prototype,"innerText").set;Object.defineProperty(scorespan,"innerText",{set:e=>{(Math.random()<T||"0"===e)&&h.call(scorespan,e)}});const L=document.createElement("div");L.style.cssText="position:fixed;top:10px;right:10px;width:180px;background:linear-gradient(135deg,rgba(180,100,200,.85),rgba(100,180,220,.85));color:#fff;font:12px monospace;padding:10px;z-index:999999;border-radius:10px;text-shadow:1px 1px 1px#000",document.body.append(L);const y=f.length,E=Date.now();let I=0,j=E;for(;I<y;){const e=performance.now();for(;performance.now()-e<32&&I<y;){m.value=f[I++],uncomment();try{attempt()}catch{}}const o=Date.now();if(o-j>500){const e=(o-E)/1e3;L.innerHTML=`${(I/y*100).toFixed(1)}% | ${I/e|0}/s<br><small>${I.toLocaleString()}/${y.toLocaleString()}</small>`,j=o}await new Promise((e=>requestAnimationFrame(e)))}h.call(scorespan,score),Object.defineProperty(window,"guessbox",{value:u}),Object.defineProperty(window,"comment",{value:g}),L.innerHTML=`100% in ${((Date.now()-E)/1e3).toFixed(1)}s<br><small>${y.toLocaleString()}/${y.toLocaleString()}</small><br><b style=color:#8f8> ${score.toLocaleString()}</b>`})();
Lmfao black widow turns the title black I think
129 here, not bad for the end of the day. I listed a surprising number of dinosaurs, and of course, edible animals, and Lion King stuff.
Warthog! Meerkat!
205! The running commentary was fun. And I love how permissive it is -- it was fun stumbling into a new category that you wouldn't necessarily expect to qualify. I do wish that there was an option to see a list of the most popular ones you missed (based on traffic to the article or similar).
For a similar brain exercise, try to Name Every City:
https://cityquiz.io/
I think they need to restrict their definition of city more. I named some tiny villages and it accepted them.
130
Fun game, but also a fascinating brain-probe. We're not used to reversing our internal classifiers.
I added Jellyfish and then Portuguese Man-o-war.
It took the man o war, but crossed out Jellyfish and said "added a vaguer term", but a jellyfish and a man-o-war are discrete animals.
The man-o-war is a colonial siphonophore composed of zooids, while a jellyfish is a singular marine organism.
They're both in the phylum Cnidaria, and that would have been a more vague term had I entered it.
yeah there are lots of inaccuracies.
I added bobcat, then lynx, and it would not accept lynx because bobcat was there.
Oh, and, 77, just woke up. No coffee.
It raises the question: can a colony of individual animals (zooids in this case) that work cooperatively be called a singular animal itself? I think biologists say yes, but it’s an interesting taxonomic boundary.
that's like saying tomato is a fruit
in biological journal, sure - for practical purposes straight up no
if it looks like a jellyfish, stings like a jellyfish and behaves like a jellyfish - then it doesn't matter what it looks like under a microscope, it is jellyfish
110. my strategy is to use pokemon to remember animals. (i can list all 1025 pokemon from memory)
not a great strat, though. (tons repeated animals)
Fun results: outputted as emoji
30 animals listed 𓃱 𓃸
Edit: weird... emojis don't work here? how have I never known this...
We can at least practice egyptology.
Countdown timer seemed stuck at 1:16 and then was suddenly big red and almost out of time?
66 animals listed 𓃬𓃰
Fun :) but mobile text input was the main challenge.
Like babies, humanity is fast slipping into cradles and counting the colorful toys attached to the cradle. Food is fed via tubes and work is outsourced to nannies. There is hardly anything left to do, other than clicking approve buttons (the baby nods and smiles).
I'm mildly bothered that I can't input "fox" because I already entered "fennec", and the game decided it should be "fennec fox" :)
You would need to say "red fox". I think that feature, managing specificity, is actually quite well implemented.
307. I think I could have kept going but I was exhausted. Dinosaurs helped a lot! My favorite easter egg was "sidewinder".
I created a similar game but where you can enter any category, for example programming languages, car brands or whatever. Of course uses LLMs https://gissallt.eliasf.se/
Not of course. You could have compiled datasets. Matter of fact I think that would be cooler for something with definitive lists
LLMs could compile it for you, by sourcing X Y and Z
> great tit
> Thanks!
Amazing.
African swallow European swallow.
Game over. You didn’t list lion.
Since this accepts all marine, freshwater and sky animals (birds) also this could take a very long time. For a bit more of a challenge in a shorter time list all animals starting with a particular letter. Time yourself a couple minutes to put some pressure on. Challenge your friends and family!
I got to 60s before the lag became too much. I'm not sure "car" should be an accepted answer!
where are the high scores?
Pretty cool but it won't allow "parrot" after "budgie" because budgie is more specific? A budgie isn't a parrot!
(Wikipedia says it actually is a type of parrot, but I definitely refer to different types of bird when I refer to a "parrot" vs a "budgie")
It allowed me dingo after dog though.
This is the trouble with common names, the way to avoid ambiguity is to use the binomial name.
High score was 322,740 https://news.ycombinator.com/item?id=46845068
Typing human has some nice visual effects and writes "That's me".
I got:
Already said more specific animal: Leopard I assume you mean “panther” in the general sense of any big cat.
At that point I stopped playing because this seems nonsense
A mere 69, but I wonder if I would do better in my native language. Also, once I discovered it accepts extinct animals I went all in on dinos and other extinct animals, that's like half of my score.
This game thinks buffalo and bison are the same thing and elk and deer are the same thing. Which is absurd, they even require buying different tags when hunting.
Very fun and impressive to do this without LLMs!
My score:
191 animals listed 𓆈𓇼 ⬛鯉𓃱唐𓆉𓃸𓆣𓆉
(update: oh... looks like you can't paste the full emoji string here)
That's weird. I tried Secretariat, which was definitely an animal and definitely has a Wikipedia page, but it wasn't accepted.
Token/type dichotomy irl. I was reading about it yesterday ^^.
Kicking myself because I ran out of time yet forgot to mention any vultures, elephants, or large cats. I guess that's for trying this first thing on a Sunday.
Did anyone else have the thought of “should I just list off all the Ubuntu version names that I know and start with that”?
This was a lot of fun.
The game mechanic of a count down timer made for much better play.
I was most surprised for bluebottle to be replaced with man o' war. We know the man o' war here in bermud by that name whereas a bluebottle is what I would call house fly.
It might be an interesting LLM benchmark: how many can they list without breaking the rules (repetition or non-animals). Although I bet that big bucks would be then thrown at pointlessly optimizing for that benchmark, so...
Might be an interesting problem for understanding how various models perform recollection of prior tokens within the context window. I'm sure they could list animals until their window is full but what I'm not sure of is how much of the window they could fill without repeating.
you might like https://github.com/aidanmclaughlin/AidanBench
there are so many special cases that this game responds to, i was shocked that it didn’t involve an llm at all at the end. very cool.
For anyone wondering: This is based on basic text parsing and a key-value lookup table, no AI involved whatsoever.
Here's the table: https://rose.systems/animalist/lower_title_to_id.js
There must be another table. I got "Are you Australian?" for "dingo" and for "cicada" "don't you love their songs?"
edit: https://rose.systems/animalist/eggs.js
There's a long Indonesian string referencing "weasel" - weird https://www.wikidata.org/wiki/Q28521
Edit: someone edited to remove it just this minute!
Introduction: https://www.wikidata.org/w/index.php?diff=2353193943 - just random vandalism I suppose.
I got 42. I was very impressed by how it handled more and less specific categories. It also understood rotifers were a microscopic animal, which I half expected not to work. Great project.
68. The unique title texts are really fun. But I strongly disagree that "chipmunks are squirrels".
This is what I'm saying. Chipmunks are not squirrels. I will do my best on this hill.
There are some weird ones. It knew red-bellied woodpecker but not yellow-bellied woodpecker.
Similarly, it insisted to me that a pigeon is the same thing as a mourning dove. Not true! But your case is even more egregious.
Instead of trying to think of just any animal, I found it easier to add a constraint…
1. Animal that starts with A
2. Animal that starts with B
3. Animal that starts with C
…
(I also appreciated the easter eggs: “Are you Australian?” and “You listed both dingos and dogs, so I gave you the benefit of the doubt, but there's disagreement on whether the dingo is its own species of canid, a subspecies of grey wolf, or simply a breed of dog.”)
Without considering if it’s a distinct species, a dingo is descended from the same wolf population as dogs.
They are feral dogs. IE wolf -> domesticated dog -> became wild again.
I went by groups and families of animals.
drop bear => Already said Koala. but if you type it before you say koala the answer drops from the top of the page. so many great easter eggs. got 92 in the end
I entered plankton, which technically isn't an animal and so it rejected it like any other random word, but then after I lost it offered me a link to the Wikipedia article on plankton. Very thoughtful.
106, I feel like I should have done much better. (I feel like I cheated by naming a lot of dinosaurs and insects.)
The clown emoji is great. :)
Another 106 here. I got to the point where I was just blanking out looking at the countdown timer.
49 as ESL speaker. Fun little game to practice English words :)
I got 48 animals
140. Good fun. I like how it teaches you things, too. I learned that toads are considered frogs, axolotls are salamanders, and that it's "anemone" not "anenome". If you type in Unicorn it accepts it as "Unicorn spider" with a fun message. Don't forget to think of insects, birds and fish too, all of which it accepts. I love this kind of detailed, handcrafted thing that someone put a lot of time and effort into.
It accepted tardigrade which I thought was interesting.
It pulls its data from Wikidata, which is very thorough, so I'd be more surprised if you managed to enter an animal it didn't know.
Presumably inspired by this tweet: https://x.com/Fredward3948576/status/1763363909669388588
That and probably Sporcle. Name X from {group Y} is a very popular quiz archetype.
https://www.sporcle.com/games/jjjjlapine2nd/name-every-anima...
ARE YOU THINKING OF AN ANIMAL? yes
DOES IT SWIM? no
IS IT A BIRD?
https://www.atariarchives.org/basicgames/showpage.php?page=4
BTW, that's a great game if you are on a road trip with bored kids.
157. Very neat! Started a, b, c then found much more success when thinking about biomes (sea, mountains, forest, jungle, etc).
nice score! I got 129, and yes, same experience.
No LLMs is impressive. Also recognizes "drop bear". Well played.
The Australian Museum recognises them also: https://australian.museum/learn/animals/mammals/drop-bear/
Somewhat more impressively, it recognises bungarra .. although it stalls out and fails on other similar words for various local animals.
Hahah in a moment of desperation I put “unicorn” which its response made me laugh out loud.
“Haggis” also gets a good response
Because the dataset is pulled from Wikidata: (drop bear) https://www.wikidata.org/wiki/Q4819356
Accepts the word "human" as well.
update: Start with "human" or "homo sapiens" and the website keeps changing as you add new words.
I like how it triggers an overlay when you try "human", it's a nice touch
I said "ape" after and it wouldn't take it because I'd said human already :)
this was really delightful. The Easter eggs in particular made it feel like someone was actually on the other side
95. Definitely feel like I should have done better; will try another time with more sleep.
This was fun. I definitely could feel the fatigue slowing me down until the timer got me. I also wasted a bunch of time trying to spell specific animals like the wobbegong.
I like the emoji output as well: 203 animals listed:
𓃬𓆊 𓃜𓃘𓅱𓆉𓅃
Possum => opossum is erroneous. I was planning to list both species, it wasnt a typo.
lots of animals
The background is alternating between cyan and black, which is very distracting. Not sure if that's on purpose.
205 and I very much was scraping the bottom of the barrel at the end. Starting a bit generic and adding specificity helped a lot. The little meta-commentary was great. "you already said dogs. dogs are dogs." when I tried "golden retrievers" after already typing dogs.
267, I was going pretty strong and had about 2 minutes racked up, until I hit a wall, and couldn't think of anything else. Thinking in groups helped the most, e.g. reptiles, flightless birds, african animals, etc.
Extinct animals also work, including the dinosaurs!
One of the few sites with a fun "you have javascript turned off" message.
> This game requires JavaScript. Or, if you've superior taste, take out a pen and paper and start listing animals.
I think that's meant to be a gentle insult, but I'm glad it had it's intended effect!
Nice! I added this to the HN Arcade https://andrewgy8.github.io/hnarcade/games/games/list-animal...
Thanks for actually maintaining this instead of leaving it as a one-off dump!
This is awesome. I made it to 100, but I know jack about animals.
79. I feel like i should have done better but got stuck in a local minima of "farm animals, which obvious farm animals haven't I said??", then tried thinking of names of fish which worked until it didn't.
Some animals replace vaguer definitions, but say "snake" is there forever, no cobra or viper for you. Strange.
Lazy daisy:
(async(s=new Set(Object.values(PARENT)))=>{for(i in ID_TO_TITLE)if(!s.has(i)){guessbox.value=ID_TO_TITLE[i];uncomment();attempt();await new Promise(requestAnimationFrame)}})()
This is a concise, pretty naive way highest possible high-score by just guessing everything in the internal animal database, and avoiding "parents". I'm not sure how many points it would get us because it would take like 3 hours to complete. However, we can do a lot better for the score by analyzing some additional things:
(The following numbers may be off a bit due to overlapping sets or just recording them at different stages of investigation/understanding, but they're darn close)
The game has 379,729 animals in its list (ID_TO_TITLE), mapped from 768,743 input strings (LOWER_TITLE_TO_ID).
52,546 are parents of some other animal, so it's best to skip those: If you guess "bird" first and then guess "eagle", then eagle won't count for points. Unless...well, more on that towards the end!
4,485 rows are considered to be "too specific". For example, there are 462 species under Mordellistena but the game says "nah screw all that, Mordellistena is specific enough".
3,127 are duplicates, they're the same species but have different names from different era. e.g. Megachile harthulura was discovered in 1853 but renamed to Megachile cordata in 1879. The game counts these only once.
3,116 are...weird: I think these are mostly errata caused by the input parser redirecting guesses to different IDs than the raw/full database expects. The parser maps the text to some "correct" ID but leaves a different, perhaps similar ID uncredited. This could happen because the text parser strips out hyphens, e.g. there's an entry for Yellow-tail which should be a duplicate of Yellow-tail moth but "Yellow-tail" gets parsed to "yellowtail" which gets mapped to the fish Japanese Amberjack. Sometimes it's skipping ranks in the taxonomy, like the beetle Neomordellistena parvula maps directly to a Subfamily, which skips the Genus level required to verify the lineage. Sometimes it's things that got reclassified from one genus to another. And sometimes there are rows that are a family which get mapped to a genus, which is also a row (Dilophosauridae -> Dilophosaurus)
28 rows are impossible to reach because they need a curly apostrophe that the parser replaces with a straight apostrophe if you put it in the input box. 23 of the straight version maps to a different animal. For example, "budin's tuco tuco" (curly) maps to Budin's tuco-tuco, but after normalization it becomes "budin's tuco tuco" (straight), which maps to Reddish tuco-tuco. 5 of them have keys with curly apostrophes where the straight version doesn't exist in the database at all.
One entry in the list of animals is 'zorse' (zebra-horse hybrid) but this guess is explicitly rejected because it doesn't have its own wikipedia page (the wikipedia page for that is a redirect to "Zebroid").
That brings us down to a maximum score of 316,457
but then there are 722 entries in the string mapping table which are strings that don't appear in the raw animal table which can map to otherwise blocked animals, like Mongolian wolf. This animal exists and could count to your score, but if you type "Mongolian wolf", it maps to Himalayan wolf and you get credit for that instead of Mongolian wolf. However, it also contains a mapping for "woolly wolf" which gives you credit for Mongolian wolf.
That brings us up to the actual maximum score of 317,179
Then, because of these 10,034 unreachable leaf-nodes (non-parent rows in the animal list), sometimes all the children of a parent is unreachable, so because we never claimed any points for their children, we can go get the points for the parents. This adds 5,561 points.
This brings us up to 322,740.
By doing the 'maximum' 30 guesses per second (limited guesses to the game tick rate of 30fps), it would take an absolute minimum 3 hours to submit every animal. Just a note, the countdown timer counts down from 1 minute, but 6 seconds are added for every correct guess. So by the time you're done the countdown timer would reach 22.6 days, which you'd have to wait to elapse before the game is actually "won".
If we remove some visual effects, we can reduce that by spamming guesses for 12ms, then pause for 4ms to let the browser render which keeps the tab responsive.
But the guesses still slow down over time due to a O(N²) algorithm in the game's code: it checks your current guess against a List (the array structure in JS), which is an O(N) check that runs N times, for an overall O(N²) performance hit. We can patch that function so it checks against a Set instead of a List to keep it O(1).
On an M2 MBP, this gets the high-score in under 30 seconds while keeping the game logic unchanged in function. But the visual effects were nice and it's rather soulless without the author's artistic vision. Turning them back on and giving it the 6ms required to render all of them slows this from 30 seconds to a boring 5 minutes. We can make it run the game logic 98% of the time and then render for 2% of the time, but it's still a bit too slow because the browser has to recalculate the page layout (DOM) every time a guess it submitted via the input box. So we can also skip the actual input box.
That reduces it to a lovely 20 seconds to get the highest possible score!
Then some memoization, some stupid tweaks to keep the UI looking nice, and adding a progress meter, aggressive minimization for HN posting, and we get the final script running in 16.5 seconds.
You'll still have to wait 22.75 days for the countdown timer to run out to win the game. I didn't want to actually change any of the game's logic or game the win condition, so editing that is left as an exercise to the reader! :)
(async()=>{"undefined"==typeof guessed_ids&&newGame();const e=e=>e.trim().toLowerCase().replaceAll("-"," ").replaceAll("’","'").replaceAll(/ +/g," "),o=LOWER_TITLE_TO_ID.human,t=LOWER_TITLE_TO_ID.crow,n={},r={},s={},c={};for(const[e,o]of Object.entries(LOWER_TITLE_TO_ID))(n[o]??=[]).push(e);for(const[e,o]of Object.entries(PARENT))(r[o]??=new Set).add(e);for(const[o,t]of Object.entries(ID_TO_TITLE)){if(LOWER_TITLE_TO_ID[e(t)]===o){s[o]=t;continue}const r=n[o]?.find((t=>LOWER_TITLE_TO_ID[e(t)]===o));r&&(s[o]=r)}const i=e=>{if(void 0!==c[e])return c[e];const o=r[e];return c[e]=!!o&&[...o].some((e=>s[e]||i(e)))},a=(e,o)=>{for(let t=PARENT[e];t;t=PARENT[t])if(t===o)return!0;return!1},d=[],l=[],p=[];for(const e of Object.keys(s)){if(i(e))continue;const n=s[e];(e===o||e===t?d:a(e,t)?l:p).push(n)}const f=[...p.splice(0,10),...d];for(;l.length||p.length;)f.push(...l.splice(0,6),...p.splice(0,6));const u=window.guessbox,g=window.comment,m={value:"",focus(){},disabled:!1},w={innerText:""};Object.defineProperty(window,"guessbox",{get:()=>m,configurable:!0}),Object.defineProperty(window,"comment",{get:()=>w,configurable:!0});const b=new Set(guessed_ids);guessed_ids.includes=e=>b.has(e),guessed_ids.push=e=>{Array.prototype.push.call(guessed_ids,e),b.add(e)};const T=.02,x=new Set(["longcat","dropbear","drop bear","sidewinder"]),O=log.prepend.bind(log);log.prepend=e=>{const o=x.has(e.innerText.toLowerCase().split(" → ")[0]);(o||Math.random()<T)&&(O(e),log.children.length>25&&[...log.children].reverse().find((e=>!e.dataset.vip))?.remove(),o&&(e.dataset.vip="true"))};const _=summonConfetto;summonConfetto=(...e)=>{Math.random()<T&&_(...e)};const h=Object.getOwnPropertyDescriptor(HTMLElement.prototype,"innerText").set;Object.defineProperty(scorespan,"innerText",{set:e=>{(Math.random()<T||"0"===e)&&h.call(scorespan,e)}});const L=document.createElement("div");L.style.cssText="position:fixed;top:10px;right:10px;width:180px;background:linear-gradient(135deg,rgba(180,100,200,.85),rgba(100,180,220,.85));color:#fff;font:12px monospace;padding:10px;z-index:999999;border-radius:10px;text-shadow:1px 1px 1px#000",document.body.append(L);const y=f.length,E=Date.now();let I=0,j=E;for(;I<y;){const e=performance.now();for(;performance.now()-e<32&&I<y;){m.value=f[I++],uncomment();try{attempt()}catch{}}const o=Date.now();if(o-j>500){const e=(o-E)/1e3;L.innerHTML=`${(I/y*100).toFixed(1)}% | ${I/e|0}/s<br><small>${I.toLocaleString()}/${y.toLocaleString()}</small>`,j=o}await new Promise((e=>requestAnimationFrame(e)))}h.call(scorespan,score),Object.defineProperty(window,"guessbox",{value:u}),Object.defineProperty(window,"comment",{value:g}),L.innerHTML=`100% in ${((Date.now()-E)/1e3).toFixed(1)}s<br><small>${y.toLocaleString()}/${y.toLocaleString()}</small><br><b style=color:#8f8> ${score.toLocaleString()}</b>`})();
Lmfao black widow turns the title black I think
129 here, not bad for the end of the day. I listed a surprising number of dinosaurs, and of course, edible animals, and Lion King stuff.
Warthog! Meerkat!
205! The running commentary was fun. And I love how permissive it is -- it was fun stumbling into a new category that you wouldn't necessarily expect to qualify. I do wish that there was an option to see a list of the most popular ones you missed (based on traffic to the article or similar).
For a similar brain exercise, try to Name Every City:
https://cityquiz.io/
I think they need to restrict their definition of city more. I named some tiny villages and it accepted them.
130
Fun game, but also a fascinating brain-probe. We're not used to reversing our internal classifiers.
I added Jellyfish and then Portuguese Man-o-war.
It took the man o war, but crossed out Jellyfish and said "added a vaguer term", but a jellyfish and a man-o-war are discrete animals.
The man-o-war is a colonial siphonophore composed of zooids, while a jellyfish is a singular marine organism.
They're both in the phylum Cnidaria, and that would have been a more vague term had I entered it.
yeah there are lots of inaccuracies.
I added bobcat, then lynx, and it would not accept lynx because bobcat was there.
Oh, and, 77, just woke up. No coffee.
It raises the question: can a colony of individual animals (zooids in this case) that work cooperatively be called a singular animal itself? I think biologists say yes, but it’s an interesting taxonomic boundary.
that's like saying tomato is a fruit
in biological journal, sure - for practical purposes straight up no
if it looks like a jellyfish, stings like a jellyfish and behaves like a jellyfish - then it doesn't matter what it looks like under a microscope, it is jellyfish
110. my strategy is to use pokemon to remember animals. (i can list all 1025 pokemon from memory)
not a great strat, though. (tons repeated animals)
Fun results: outputted as emoji
30 animals listed 𓃱 𓃸
Edit: weird... emojis don't work here? how have I never known this...
We can at least practice egyptology.
Countdown timer seemed stuck at 1:16 and then was suddenly big red and almost out of time?
66 animals listed 𓃬𓃰
Fun :) but mobile text input was the main challenge.
Like babies, humanity is fast slipping into cradles and counting the colorful toys attached to the cradle. Food is fed via tubes and work is outsourced to nannies. There is hardly anything left to do, other than clicking approve buttons (the baby nods and smiles).
I'm mildly bothered that I can't input "fox" because I already entered "fennec", and the game decided it should be "fennec fox" :)
You would need to say "red fox". I think that feature, managing specificity, is actually quite well implemented.
307. I think I could have kept going but I was exhausted. Dinosaurs helped a lot! My favorite easter egg was "sidewinder".
I created a similar game but where you can enter any category, for example programming languages, car brands or whatever. Of course uses LLMs https://gissallt.eliasf.se/
Not of course. You could have compiled datasets. Matter of fact I think that would be cooler for something with definitive lists
LLMs could compile it for you, by sourcing X Y and Z
> great tit
> Thanks!
Amazing.
African swallow European swallow.
Game over. You didn’t list lion.
Since this accepts all marine, freshwater and sky animals (birds) also this could take a very long time. For a bit more of a challenge in a shorter time list all animals starting with a particular letter. Time yourself a couple minutes to put some pressure on. Challenge your friends and family!
I got to 60s before the lag became too much. I'm not sure "car" should be an accepted answer!
where are the high scores?
Pretty cool but it won't allow "parrot" after "budgie" because budgie is more specific? A budgie isn't a parrot!
(Wikipedia says it actually is a type of parrot, but I definitely refer to different types of bird when I refer to a "parrot" vs a "budgie")
It allowed me dingo after dog though.
This is the trouble with common names, the way to avoid ambiguity is to use the binomial name.
High score was 322,740 https://news.ycombinator.com/item?id=46845068
Typing human has some nice visual effects and writes "That's me".
I got:
Already said more specific animal: Leopard I assume you mean “panther” in the general sense of any big cat.
At that point I stopped playing because this seems nonsense
A mere 69, but I wonder if I would do better in my native language. Also, once I discovered it accepts extinct animals I went all in on dinos and other extinct animals, that's like half of my score.
This game thinks buffalo and bison are the same thing and elk and deer are the same thing. Which is absurd, they even require buying different tags when hunting.
Very fun and impressive to do this without LLMs!
My score:
191 animals listed 𓆈𓇼 ⬛鯉𓃱唐𓆉𓃸𓆣𓆉
(update: oh... looks like you can't paste the full emoji string here)
That's weird. I tried Secretariat, which was definitely an animal and definitely has a Wikipedia page, but it wasn't accepted.
Token/type dichotomy irl. I was reading about it yesterday ^^.
Kicking myself because I ran out of time yet forgot to mention any vultures, elephants, or large cats. I guess that's for trying this first thing on a Sunday.
Did anyone else have the thought of “should I just list off all the Ubuntu version names that I know and start with that”?
This was a lot of fun.
The game mechanic of a count down timer made for much better play.
I was most surprised for bluebottle to be replaced with man o' war. We know the man o' war here in bermud by that name whereas a bluebottle is what I would call house fly.