6 ms·
Can you build a recognizable World Map in under 500 bytes?
- iweczek 3mo agoExperimenting with drawing a world map and micro-optimization.
- effnorwood 2mo agoheck yea! 499 tera. no problem.
- gus_massa 3mo agoWhy is there a lake in Africa near Congo/Gabon istead of one near Uganda? Also, can this be done with png? Most consecutive lines are very similar, so I'd expect the algebraic pass to be very useful.
- TacticalCoder 2mo ago> Why is there a lake in Africa near Congo/Gabon istead of one near Uganda? Africa and Europe are connected through Spain. There's no Suez channel. There are plenty of approximation: it's the whole point of the thing... You only get 1013 bytes (or, well, 500 bytes in the question asked).
- TurboTveit 2mo agoIf you were to render only one lake in Africa I would expect Lake Victoria
- ksymph 2mo agoSince the map just has two states - land or water - I wonder if there's a way to represent the same information more efficiently bits rather than bytes.
- H8crilA 2mo agoAny decent compressor will take care of this - and much more.
- hnuser123456 2mo agoHere's a map in one bit, where 0 is water and 1 is land: 0
- fourthark 2mo agoRather lossy
- AaronAPU 2mo agoIs there a good known algorithm which performs general purpose compression where the target is a given turing complete instruction set? Rather than relying on a fixed general purpose decoder and the associated compressed data. I’m asking here instead of asking an LLM because that’s what humans used to do and it was pleasant.
- convolvatron 2mo agothat sounds pretty related to Kolgomorov complexity, which is uncomputable in general. https://en.wikipedia.org/wiki/Kolmogorov_complexity https://en.wikipedia.org/wiki/Kolmogorov_complexity I too would be interested in approximations or heuristics if anyone has any
- wizzwizz4 2mo agoA perfect implementation would be a Kolmogorov oracle. https://en.wikipedia.org/wiki/Kolmogorov_complexity#Halting_problem https://en.wikipedia.org/wiki/Kolmogorov_complexity#Halting_... suggests this is equivalent to a halting oracle. So, it depends what you mean by "good".
- Analemma_ 2mo agoPresumably you could precompute some parametric function (probably a Fourier sum) which draws a reasonably close map of the world, and get that into 500 bytes with a math-focused programming environment (R, Julia, etc.)? I might try throwing Fable at this and seeing what I can get.
- Analemma_ 2mo agoWell, here's what Fable came up with in 499 bytes of R in about half an hour: https://pastebin.com/sBsiGD9t https://pastebin.com/sBsiGD9t, result: https://imgur.com/a/W3eDdIC https://imgur.com/a/W3eDdIC. Probably with sitting down and tweaking you could do even better, but I think this is a decent first start.
- cwmoore 2mo agoI can see leas than half of it. Imgur?
- cwmoore 2mo agoThanks? for the obtrusive ads and the downvote? HN can do better.
- gus_massa 2mo agoDid you or Fable decide to split North and South America? Can the it also split Africa/Arabia/Eurasia? Who/how decided which islands to keep and which to erase? If you want to save a few characters, you can replace `length(v)` with the actual number.
- Analemma_ 2mo agoFable did that, I pretty much just told it to find the best Fourier sum which can draw a map of the world in less than 500 bytes of R. It downloaded geo data and made the curves to fit that on its own.
- 2mo ago
- simonw 2mo agoI didn't know you could do this with fetch() and a data: URI: fetch('data:;base64,1ZpLsgIxCEXnrM...==').then( r => r.body.pipeThrough(new DecompressionStream('deflate-raw')) ).then( s => new Response(s).text() ).then( t => b.innerHTML = '<pre style=font-size:.65vw>' + t )
- gabrielsroka 2mo agou don't need the first .then: https://github.com/piwodlaiwo/smallest-world-map/pull/1 https://github.com/piwodlaiwo/smallest-world-map/pull/1 mine is shorter
- throwrioawfo 2mo agoWhat's the point in doing things like this if you just get Claude to do it?
- StilesCrisis 2mo agoWhat's the point of any of it to begin with? Why paint a painting? Why learn to play guitar?
- hmry 2mo agoWhy make Claude play the guitar?
- netsharc 2mo agoI wonder how many people hallucinated the word "can" in your comment and downvoted because of it..
- wizzwizz4 2mo agoTo be fair, the greyed-out text is hard to read.
- iweczek 2mo agowell i did it 10 years ago by myself in 1013 bytes :)
- BretonForearm 2mo agoGoing from "SVG/Canvas is wasteful" to a tile based approach is a giant leap. Wouldn't AI suggest delta encoding of polyline coordinates and discretization of deltas as small, maybe just 2-4 bit integers? Storing the X and Y delta vectors separately, rather than interleaved, could lead to a further increase to the compression ratio. What was asked of Claude? The article is very sparse on this.
- userbinator 2mo ago32x32 4bpp 16-color icon is 512 bytes. There definitely were programs that had a recognisable world map for an icon in those days, so the answer is yes.
- cwmoore 2mo agoI like that yours is 45 rows of asterisks. Makes me think a project-and-rasterize pipeline, sampling a simplified world water boundary map under a variety of projection parameters should give you a range of bitmaps, and then it is up to whoever to decide if the detail lost in all of this renders it incompatible with the world as they know it. The site below takes detailed map files and removes significant detail for practical purposes: https://mapshaper.org/ https://mapshaper.org/
- 1e1a 2mo agoI feel like this challenge would be a lot more interesting if the size of complete code needed to output the map were counted.
- iweczek 2mo agoBoth are interesting, my html file is 846 bytes and the actual map data pulled in is 445 bytes but a comment on my blog someone came down to 786 bytes and it looks like under 400 bytes of data for the map.
- im3w1l 2mo agoRepresentation for this I came up with: Allocate one magic number for "start line with space" another for "start line with asterisk" then any other number means this many of the current character and then swap character. Then it's a matter of picking a suitable way to encode numbers into bits. I came up with groups of four bits. If the high bit is not set that is the number, if it is set then read an additional group of four bits, and interpret as a biased 7 bit number. This came out to 400 bytes not including decompressor.
- urbnspacecowboy 2mo ago> Allocate one magic number for "start line with space" another for "start line with asterisk" then any other number means this many of the current character and then swap character. The galaxy brain move would be to always arbitrarily start with one character, replace the two special numbers with a single "don't output any characters, just swap" number, and then... congratulations, you just reinvented CompuServe RLE! http://fileformats.archiveteam.org/index.php?title=CompuServe_RLE http://fileformats.archiveteam.org/index.php?title=CompuServ...
- im3w1l 2mo agoWhile the idea of using RLE with implicit swapping is the same, everything else is different. I'm not sure it's better in this case. One thing my version did is that it had explicit linebreaks, this approach was chosen as the map in the article had lines of varying lengths. If you don't now you have to accomplish that some other way, e.g. explicitly fill the line up with spaces and some mechanism of communicating the width of the image. I also think using a varint encoding is a big win over fixed-width.
- 27183 2mo agoYes. Here's a map of the entire world in 1 byte. Both hemispheres. The northern hemisphere is depicted above, the southern hemisphere is depicted below: : You're welcome.
- FireBeyond 2mo agoHow is that "recognizable"?
- 27183 2mo agoI claim it's obviously recognizable as the entire surface of a 3-sphere projected onto 2 dimensions, and therefore is clearly an acceptable answer to the original question posed. I added some helpful and clarifying prose expounding upon which hemisphere is what, but could have left that as an exercise to the reader without loss of generality.
- deleted 2mo ago[deleted]
- deleted 2mo ago[deleted]
- chriscjcj 2mo agoI know this doesn't meet the spirit of the challenge, but... _,--', _._.--._____ .--.--';_'-.', ";_ _.,-' .'--'. _.' {`'-;_ .-.>.' '-:_ ) / `' '=. ) > {_/, /~) snd |/ `^ .'
- cwmoore 2mo ago180?
- TacticalCoder 2mo agoOne could probably map this in JavaScript in 3D on a rotating sphere and it'd be a "recognizable world map" of sorts.
- sethev 2mo agoit said recognizable, and I recognize this :)
- murderfs 2mo agoU+1F5FA does it in 4 bytes! https://www.compart.com/en/unicode/U+1F5FA https://www.compart.com/en/unicode/U+1F5FA
- Retr0id 2mo agoI asked deepseek to turn this into an offscreen-canvas-based ascii renderer: https://retr0.id/stuff/worldgolf.html https://retr0.id/stuff/worldgolf.html Weighs in at 379 bytes (or 378 if you trim the newline). Obviously it is font-dependent, but it works on my machine! Edit: golfed a bit further, but unsure how reliable it'll be with different fonts: https://retr0.id/stuff/worldgolf2.html https://retr0.id/stuff/worldgolf2.html
- cwmoore 2mo agoEnhance!
- chriscjcj 2mo agoBTW... full credit to the artist, Shanaka Dias. https://asciiart.website/artist.php?artist_id=121 https://asciiart.website/artist.php?artist_id=121 https://asciiart.website/preservation/poster.php?person_id=1505 https://asciiart.website/preservation/poster.php?person_id=1...
- netsharc 2mo agoThe ASCII art reminds me of teletext.. this page shows a globe on a teletext page: https://www.wikiwand.com/en/Teletext https://www.wikiwand.com/en/Teletext
- shattl 2mo ago[flagged]
- magicalhippo 2mo agoWith a whooping 500 bytes it should have sound, animation and disco lights[1][2]. [1]: https://www.youtube.com/watch?v=_RtfXZQihes https://www.youtube.com/watch?v=_RtfXZQihes [2]: https://www.pouet.net/prod.php?which=105717 https://www.pouet.net/prod.php?which=105717
- snailmailman 2mo agoIts a fun challenge. I used https://squoosh.app https://squoosh.app to make a pretty good one. Mostly just a resize and then OxiPNG for compression. Managed a 124x62 black/white image. OP has a resolution of 195x53, so I had very similar, but slightly worse i think? mostly a different aspect ratio + map projection i think. playing with Squoosh.app is very fun, and you can very easily see how the jump from 500b to 1-2kb turns a map from "awful" to "very good" with the right settings.
- iweczek 2mo agogreat job, looks like you got it down to 786 bytes of html and under 400 for the map data. I like your approach.
- roshin 2mo agoyou could save some bytes by removing new Zealand, the world would still be recognizable ;)
- iweczek 2mo agolol