Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
The algebraic structure of Infinite Craft (quuxplusone.github.io)
93 points by signa11 on March 5, 2024 | hide | past | favorite | 14 comments


Doesn't the weirdness come from the fact that this structure is commutative, but not associative? I know of only one other structure of this type, namely floating point numbers. For those that don't remember definitions: (a+b) = (b+a), but ((a+b)+c) sometimes does not equal (a+(b+c)), even more so in Infinite Craft than in float addition. Such structures are unusual in mathematics.


Combined with the hyper-edges, I agree that's what's unusual here. Some Googling for "commutative but not associative" gave (besides some abstract math examples) the game of Rock, Paper, Scissors and the average function as two intuitive examples.


Nit picking, but floating point is commutative either.

  1 + NaN == NaN
  Nan + 1 == NaN
  Nan != Nan

(NaN is defined as not being equal to itself)


Nit picking, but floating point is not commutative either.


ya got me


Well then define it to be equal to itself ;)

NaN is a strange thing anyways, for example you cannot invert it so that NaN+(-NaN)=0


Infinite Craft is _not_ commutative! It's only _mostly_ commutative. Here are some examples (first|second| first+second|second+first):

Flattened|Bulldozer|Land|Road

Mosque|Cactroll|Mecca|Oasis

Offering|Ragnarok|Odin|Sacrifice

Eel|Lilo|Stitch|Nemo

Sauna|Chia|Sweat|Chia Pet

Vinegar|Owl|Wisdom|Vinaigrette

Cool|Medicine|Ice|Ice Pack

Sunken|Shatter|Ship|Treasure


Interesting. Can you expand a bit more on how you're seeing these?

On both desktop and mobile, empirically I observe that Neal's front-end sorts `first` and `second` alphabetically before submitting them to the server, so that even if you (drag, tap) "Flattened" and "Bulldozer" in both orders, it will send `/api/infinite-craft/pair?first=Bulldozer&second=Flattened` to the server in both cases.

Furthermore, when I use Chrome's "Copy as fetch" and paste it into the console, so that I can manually change the URL to `first=Flattened&second=Bulldozer`, I still observe that the server responds `{result: 'Road', emoji: '', isNew: false}` in both cases. The null hypothesis is that the backend server is also sorting the inputs alphabetically before consulting the cache/LLM.

However, "Bulldozer + Flatten = Land"! I discovered that by accidentally mistyping "Flatten" instead of "Flattened" the first time I manually edited the URL. Is it plausible that, during whatever you were doing to generate these, you just mistyped one of the inputs... and it happened as many as eight times?


Huh, maybe Neal started sorting inputs to canonicalize them mid-way through my scrape? Without that sorting, presuming the backend is some LLM prompt plus the two input words, there's no guarantee that the LLM would emit the same result for both orders-- or it could even be up to randomness in the sampling!


This actually sounds really interesting. As a game, it lets you explore the geometry of an LLM and how it associates things. I'd be curious how this is getting formatted into prompts.

Also curious if there's any other properties these relationships exhibit. I'm guessing there is no zero element, where "x + 0 = x" for all x. I'm also guessing there's no idempotent elements, where "x + x = x". There's probably no ability to loop around in general. But I'm curious if this is cancellative, i.e. if x + y = x + z imply y = z.

I'd also be curious to see if there's any sort of embedding or approximation from this structure into another. At first I thought of word2vec embeddings, and how addition of vectors could have some logical structure. But that algebra is associative. Maybe mapping it to some algebra where x * y = f(x + y), where * is the non-associative operation, x+y is vector addition of the embeddings, and f is some transformation. Actually, that could be interesting. If you could find some embedding and f transformation that very closely matched the Infinite Craft algebra, you could use the difference between x and f(x) as vectors to try and quantify the degree to which the algebra fails to be associative.


How much time did the author actually spend using Infinite Craft? No mention of the IC Browser (instead pointing to a github file which is smaller by many orders of magnitude), or the properties of combining items with two or three emojis. Or the novel ways to get specific things like movie titles (through AI prompts on the backend), and further algebraic combinations downstream from that.

Seems like low-effort clout-chasing and click-baiting to pad the blog (but there's a lot of that kind of content posted here, so I guess it is what it is).


you come off a bit condescending, may want to lighten up just in general for your worldview. what is the IC Browser? cant expect everyone to know everything for a new game


You're right, it was a bad few days and I shouldn't have been posting. https://infinibrowser.zptr.cc/


Hypergraphs are awesome, and I wish they got more attention. They actually make intuitive sense in contexts like circuits and other hardware design problems. However, the last time I checked, all the Python and Rust Hypergraph libraries did not have support for directed edges (or it wasn't documented very well).

The "tersest route" problem seems to be interesting as I have never come across this before. It seems almost like a packing or covering problem.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: