Doing this felt odd, it was like it wore out something in my brain. After a while I could picture the animals I wanted to enter but I struggled to remember the word for them. Only now, a minute or so after stopping, could I remember 'Dragonfly'
I was also amused by the reaction to "crab":
> (Carcinization makes it hard to define “crab”, so I'm going to pretend you said “brown crab”.)
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.
AFAIK, a "super-organism" composed of individual entities is defined as one where the long-term fitness interests of those individuals and their groups are completely and permanently aligned.
For example an ant colony is a super-organism. That’s why it makes sense for a soldier ant to die for her queen.
Some of the "entities" aren't aligned always, like when a person is pregnant for example. I think also our (human) cells doesn't operate as semi-autonomous agents with independent nervous systems and agency, unlike a ant colony.
We think cows are singular animals, despite being made up of lots of different organisms with different DNA. (Much of the diversity happening in the gut.)
I added "kudu", a type of antilope, and it replaced it with "turtle". I don't know the relationship between the 2, but it doesn't pass a toddler's sniff test!
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
Many people now know that a tomato is a fruit, and will distinguish it with exactly the 'did you know a tomato is not a vegetable?' fun fact, so I'm not sure this is a great point. If someone asked me to list vegetables and they were being rigorous about it I wouldn't list a tomato. If they're not being rigorous about it then anything goes really - sometimes you can put things like apples in a salad so that must be a vegetable as well.
Botanically, there are no such things as vegetables. The classification of a thing as a "vegetable" is strictly a culinary distinction. Cucumbers, tomatoes, apples, oranges, they're all the fruit of the plant, but the first two are culinarily classified as vegetables and the last two as fruits.
Also, salad is a preparation method, specifically the chopping of ingredients and the application of a sauce to make a semi homogeneous dish. It is not strictly a dish of chopped vegetables, so putting apples "in a salad" doesn't mean the apple is being used as a vegetable. You can put meat in a salad and it doesn't make the meat a vegetable. Tuna salad can be made with no vegetables at all.
In modern English, most people use "vegetable" with its current culinary meaning.
In earlier centuries, "vegetable" still had mostly its original meaning taken from Latin, where "Vegetabilia", as used e.g. by Linnaeus for the "vegetabile regnum", referred to any living beings capable of growth, but incapable of motion, i.e. mainly to the terrestrial plants.
Strictly speaking, seeds, grains, nuts, fruits, roots, bulbs, leaves, stems, etc. are all parts of vegetables.
What in English is now called "vegetables" corresponds to the Latin word "holera", whose original meaning was "greens", and not at all with the Latin word "vegetabilia". Also English "fruits" does not correspond with Latin "fructa", but with Latin "poma". Latin "fructa" referred to the useful results of some activity, a sense still encountered more rarely in English.
This old sense is encountered, like in your example, but much more often "fruits" is used in the culinary sense.
Many people perceive your example as a metaphor, the results of the labor being compared with the fruits of a tree, but in reality the direction of the metaphor has historically been opposite, the fruits of the tree being called thus because they were considered the useful results of its cultivation.
Apples are not fruit in the strict botanical sense.
> Apples are considered "accessory fruits" (or sometimes termed "false fruits") rather than true botanical fruits because the fleshy, edible part develops primarily from the flower's hypanthium or receptacle, not just the ovary. The actual, true fruit is the core containing the seeds, making it a pome.
These discussions are really fun to me. The opportunities to be absurdly pedantic are almost endless. Common words for things gloss over so many details. Most of the time those details aren't important but they still exist and there's someone on the internet that cares deeply about them.
We must accept that most people are careless in their choice of words, so they frequently do not use the words in their strict sense but they use them in a broad sense, instead of using the most appropriate word.
However this is annoying, because especially with the modern fashion that linguistics shall be only descriptive and not prescriptive, like in the past, many words have become more and more ambiguous.
For this reason, misunderstandings have become more and more frequent, especially when using a medium like an Internet forum, which forces conciseness. Now, if you want to be certain that you will be understood correctly, more and more often you are forced to first define exactly many of the words that you intend to use, because the same words may be used by others with different meanings, even if in earlier literature everybody used only the meaning that you want.
Portuguese Man o' Wars look distinct enough from jellyfish. Their sails make parts of their bodies float above water, something no jellyfish can do to my knowledge. I can confuse species of jellyfish but there's no confusing the man o' wars...
"Lynx" can refer to either the Eurasian lynx (Lynx lynx) specifically, or to the genus Lynx and the four extant species in it (Eurasian lynx, Canada lynx, Iberian lynx, bobcat). And the game recognizes all the four lynx species as distinct animals if you use the full names. In general it understands imprecise common/genus names as hypernyms of the more precise species names, which is the correct way to do it IMO.
In general, of course, even distantly related animals may share a common name due to superficial similarities – what is "robin", for example? The American robin was named after the European robin by analogy, simply because both happen to have a red breast. The two species aren't even in the same family.
Likewise, it wouldn't accept “panther” because “tiger” was already there:
> I assume you mean “panther” in the general sense of any big cat.
Why on Earth would it assume mean that, of all things, rather than “black panther”? If it's gonna be pedantic about it, it could've complained about “leopard” and “jaguar” already being there (which they were) instead of complaining about an animal that nobody in their right mind would call a “panther”.
I believe the poster you're replying to understands that. They're noting that the complaint about panther was curiously because they had already listed tiger, which is practically never called a panther, and not because they already listed leopard, which is a cat that is often called a panther. The statement about meaning "any big cat" I would guess to be a confusion based on the name Pantherinae for the subfamily of Felidae of which all these big cats are part. Though the puma, which as you note is also called a panther, is in the different subfamily, Felinae.
I personally just tend to avoid the word panther, because it very often causes confusion as to which cat you're talking about.
I just made a variant of this that uses the browser speech recognition API. It's simplified, with none of the flair of the original, but should be fun to play in person. It's fun to shout animal names at computer with friends.
Super fun, I'd love to get a little bit more time like in the OPs website for each animal that I guess right. Instead of 1 second, it should be something like 6 because I can speak much much faster than the speech recognition is able to separate out my guesses.
(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));
}
})();
(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! :)
Ahah. After trying myself, I immediately tried "Obama" and it works !
But oddly enough, most personality with a name in the "List of organisms named after famous people" doesn't work. Nether does bacterium or fish !
"pigeon" and "dove" are both words for the same family of birds. The bird most people think of with the word "pigeon" is the rock dove (https://en.wikipedia.org/wiki/Rock_dove) or domesticated / feral variants of it.
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.
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:
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!
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.
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.
I guess it could be generalized to filling up the context window with any token, but just making sure none of the tokens repeat.
An interesting twist could be making sure a specific token is an anagram of the token N tokens back. This could possibly measure how much a model can actually plan forwards.
Even more interesting is if a thinking LLM would come up with tricks mitigating its own known limits - like listing animals in alphabetical order, or launching a shell/interpreter with a list that contains previous answers (which it then checks each new answer against).
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.
At some point my wife recommended listing animals, flowers, etc. alphabetically as a way to distract the mind to help get to sleep. It's a great exercise.
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.”)
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.
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.
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 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/
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.
If you wanted to develop this more, some fun features might be telling you the most commonly entered animals you missed and the most unusual ones you thought of. Appreciate you probably want to keep it a static site though.
This thread taking a hard left into “what even counts as X” (apples! jellyfish! definitions!) is peak HN energy. The game is fun; the accidental live demo of ontology pain is even better.
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.
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:
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.
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.
Doing this felt odd, it was like it wore out something in my brain. After a while I could picture the animals I wanted to enter but I struggled to remember the word for them. Only now, a minute or so after stopping, could I remember 'Dragonfly'
I was also amused by the reaction to "crab":
> (Carcinization makes it hard to define “crab”, so I'm going to pretend you said “brown crab”.)
> This game requires JavaScript. Or, if you've superior taste, take out a pen and paper and start listing animals.
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.
For example an ant colony is a super-organism. That’s why it makes sense for a soldier ant to die for her queen.
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
Botanically, there are no such things as vegetables. The classification of a thing as a "vegetable" is strictly a culinary distinction. Cucumbers, tomatoes, apples, oranges, they're all the fruit of the plant, but the first two are culinarily classified as vegetables and the last two as fruits.
Also, salad is a preparation method, specifically the chopping of ingredients and the application of a sauce to make a semi homogeneous dish. It is not strictly a dish of chopped vegetables, so putting apples "in a salad" doesn't mean the apple is being used as a vegetable. You can put meat in a salad and it doesn't make the meat a vegetable. Tuna salad can be made with no vegetables at all.
In earlier centuries, "vegetable" still had mostly its original meaning taken from Latin, where "Vegetabilia", as used e.g. by Linnaeus for the "vegetabile regnum", referred to any living beings capable of growth, but incapable of motion, i.e. mainly to the terrestrial plants.
Strictly speaking, seeds, grains, nuts, fruits, roots, bulbs, leaves, stems, etc. are all parts of vegetables.
What in English is now called "vegetables" corresponds to the Latin word "holera", whose original meaning was "greens", and not at all with the Latin word "vegetabilia". Also English "fruits" does not correspond with Latin "fructa", but with Latin "poma". Latin "fructa" referred to the useful results of some activity, a sense still encountered more rarely in English.
I don't know what you mean by that. People do talk about "the fruits of" their labors.
This old sense is encountered, like in your example, but much more often "fruits" is used in the culinary sense.
Many people perceive your example as a metaphor, the results of the labor being compared with the fruits of a tree, but in reality the direction of the metaphor has historically been opposite, the fruits of the tree being called thus because they were considered the useful results of its cultivation.
> Apples are considered "accessory fruits" (or sometimes termed "false fruits") rather than true botanical fruits because the fleshy, edible part develops primarily from the flower's hypanthium or receptacle, not just the ovary. The actual, true fruit is the core containing the seeds, making it a pome.
However this is annoying, because especially with the modern fashion that linguistics shall be only descriptive and not prescriptive, like in the past, many words have become more and more ambiguous.
For this reason, misunderstandings have become more and more frequent, especially when using a medium like an Internet forum, which forces conciseness. Now, if you want to be certain that you will be understood correctly, more and more often you are forced to first define exactly many of the words that you intend to use, because the same words may be used by others with different meanings, even if in earlier literature everybody used only the meaning that you want.
I added bobcat, then lynx, and it would not accept lynx because bobcat was there.
Oh, and, 77, just woke up. No coffee.
In general, of course, even distantly related animals may share a common name due to superficial similarities – what is "robin", for example? The American robin was named after the European robin by analogy, simply because both happen to have a red breast. The two species aren't even in the same family.
> I assume you mean “panther” in the general sense of any big cat.
Why on Earth would it assume mean that, of all things, rather than “black panther”? If it's gonna be pedantic about it, it could've complained about “leopard” and “jaguar” already being there (which they were) instead of complaining about an animal that nobody in their right mind would call a “panther”.
They can all have melanistic coats and are then often called black panthers. But that's not a species.
I personally just tend to avoid the word panther, because it very often causes confusion as to which cat you're talking about.
Also, things we normally don't consider animals - tapeworm, aphid, etc.
Also accepted blue whale, sperm whale and orca :-/
https://t.moveything.com/animalscream/
(works best on desktop chrome. it's too slow on safari in my testing.)
https://www.sporcle.com/games/jjjjlapine2nd/name-every-anima...
Here's the table: https://rose.systems/animalist/lower_title_to_id.js
edit: https://rose.systems/animalist/eggs.js
Edit: someone edited to remove it just this minute!
Introduction: https://www.wikidata.org/w/index.php?diff=2353193943 - just random vandalism I suppose.
Suggestion: show a distribution of scores at the end, so you can see how you did compared to others
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>`})();
https://en.wikipedia.org/wiki/List_of_organisms_named_after_...
Somewhat more impressively, it recognises bungarra .. although it stalls out and fails on other similar words for various local animals.
https://en.wikipedia.org/wiki/Columbidae
https://en.wikipedia.org/wiki/Frog
Might you want to add Super Monkey Ball too if you haven't already?
https://monkeyball-online.pages.dev/
https://news.ycombinator.com/item?id=46789961
I like the emoji output as well: 203 animals listed:
𓃬𓆊 𓃜𓃘𓅱𓆉𓅃
Extinct animals also work, including the dinosaurs!
An interesting twist could be making sure a specific token is an anagram of the token N tokens back. This could possibly measure how much a model can actually plan forwards.
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.
update: Start with "human" or "homo sapiens" and the website keeps changing as you add new words.
My score:
191 animals listed 𓆈𓇼 ⬛鯉𓃱唐𓆉𓃸𓆣𓆉
(update: oh... looks like you can't paste the full emoji string here)
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.”)
They are feral dogs. IE wolf -> domesticated dog -> became wild again.
(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")
not a great strat, though. (tons repeated animals)
LLMs could compile it for you, by sourcing X Y and Z
If you wanted to develop this more, some fun features might be telling you the most commonly entered animals you missed and the most unusual ones you thought of. Appreciate you probably want to keep it a static site though.
DOES IT SWIM? no
IS IT A BIRD?
https://www.atariarchives.org/basicgames/showpage.php?page=4
The clown emoji is great. :)
30 animals listed 𓃱 𓃸
Edit: weird... emojis don't work here? how have I never known this...
Game over. You didn’t list lion.
> Thanks!
Amazing.
Fun game, but also a fascinating brain-probe. We're not used to reversing our internal classifiers.
For a similar brain exercise, try to Name Every City:
https://cityquiz.io/
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
66 animals listed 𓃬𓃰