Compressing a Flag to 11 Bits

(read.vantezzen.io)

33 points | by bennett_dev 2 days ago

10 comments

  • AdieuToLogic 1 minute ago
    This reminds me of the old joke[0]:

      There are 10 kinds of people in the world.
      Those who understand binary and those who don't.
    
    0 - https://www.gnu.org/fun/jokes/10-kinds-of-people.html.en
  • kjgkjhfkjf 54 minutes ago
    In case anyone else was curious about using a lookup table: there are there are fewer than 256 recognized countries or territories [1], so 8 bits should be enough for a key.

    This would be superior to the 11-bit encoding presented here because it handles complexities such as coats of arms. It would also handle bizarre situations such as two countries having almost identical flags [2].

    [1] https://en.wikipedia.org/wiki/List_of_countries_and_territor...

    [2] https://www.worldatlas.com/articles/country-flags-that-resem...

    • dhosek 14 minutes ago
      I’m surprised that the near-identical flags list omits Slovenia and Slovakia which both have white-blue-red horizontal stripes and a coat of arms (albeit with slightly different placement and different background colors on the coats of arms). A part of me feels like it’s part of a long-time joke the two countries are playing to confuse non-Slavs (the Slovenian word for their language is Slovenščina while the Slovak word for their language is Slovenčina and this is just the beginning of the confusion between the two countries/nationalities).
    • porphyra 25 minutes ago
      you could also exploit the fact that some flags may appear more frequently than others and use huffman encoding or something to encode the commonly used flags in a shorter sequence than rarely-mentioned countries, and save some bits on average
    • opiotrek 51 minutes ago
      but then you have to have the svg built into decoder. will they be smaller than 5KB?

      also then it's no different from a svg sprite

  • gerdesj 10 minutes ago
    A jack is a flag flown from a jackstaff, wot is found at the back of a ship or boat.

    The UK flag is called the Union Flag (it's a flag and it is a union of various flags and possibly nations too!) but let's face it, given how many people think its called the Union Jack, it doesn't really matter.

    If your flag pole at home is somewhat canted then I think you can call it a jackstaff, with a similar justification to the Royal Navy managing to designate their shore bases as ships. For example just up the road is HMS Heron (His Majesty's Ship: Heron).

    The Union Flag/Jack is only the flag of the UK by convention and not law. It's a bit wooley, just like our Constitution but it still all works.

    My point is that whilst I do enjoy this encoding scheme and it is jolly clever, reality is way more complicated. The UK's flag is pretty complicated but not alone. I'm pretty sure several flags have tassels, which I suppose strays into the coat of arms territory.

    How hard do you want to squint!

  • mabster 25 minutes ago
    Loved the title. I was like "that's 10 bits too many for a flag!" Haha
  • harpiaharpyja 10 minutes ago
    With all the attention on the link between compression and intelligence lately it is neat to have this example of how creating a encoding scheme naturally allows you to create new (likely) never before seen flags.
  • blacklion 8 minutes ago
    Fun fact: Constitution of Nepal has chapter about format of The Flag and it reads as geometry textbook problem (starred one, for advanced students).
  • pimlottc 45 minutes ago
    Surprised this didn’t mention heraldry, which has what’s basically a DSL for coats-of-arms:

    https://en.wikipedia.org/wiki/Blazon

  • Smalltalker-80 1 hour ago
    Nobody? Okay then: "Fun with flags!". There, I said it.
  • ano-ther 50 minutes ago
    Cool idea. Interesting that Indonesia, Poland and Monaco with very similar two-stripe designs have different compression rates (11, 14 and 17 respectively). Probably the aspect ratio that also gets encoded.
  • jtxt 58 minutes ago
    Cool project and results! https://vantezzen.github.io/miniflags/