freeCodeCamp/curriculum/challenges/english/10-coding-interview-prep/project-euler/problem-287-quadtree-encodi...

2.3 KiB
Raw Blame History

id title challengeType forumTopicId dashedName
5900f48b1000cf542c50ff9e Problem 287: Quadtree encoding (a simple compression algorithm) 5 301938 problem-287-quadtree-encoding-a-simple-compression-algorithm

--description--

The quadtree encoding allows us to describe a 2^N×2^N black and white image as a sequence of bits (0 and 1). Those sequences are to be read from left to right like this:

  • the first bit deals with the complete 2^N×2^N region;
  • "0" denotes a split:
    • the current 2^n×2^n region is divided into 4 sub-regions of dimension 2^{n - 1}×2^{n - 1},
    • the next bits contains the description of the top left, top right, bottom left and bottom right sub-regions - in that order;
  • "10" indicates that the current region contains only black pixels;
  • "11" indicates that the current region contains only white pixels.

Consider the following 4×4 image (colored marks denote places where a split can occur):

4x4 image with colored marks denoting place where split can occur

This image can be described by several sequences, for example : "001010101001011111011010101010", of length 30, or "0100101111101110", of length 16, which is the minimal sequence for this image.

For a positive integer N, define D_N as the 2^N×2^N image with the following coloring scheme:

  • the pixel with coordinates x = 0, y = 0 corresponds to the bottom left pixel,
  • if {(x - 2^{N - 1})}^2 + {(y - 2^{N - 1})}^2 ≤ 2^{2N - 2} then the pixel is black,
  • otherwise the pixel is white.

What is the length of the minimal sequence describing D_{24}?

--hints--

quadtreeEncoding() should return 313135496.

assert.strictEqual(quadtreeEncoding(), 313135496);

--seed--

--seed-contents--

function quadtreeEncoding() {

  return true;
}

quadtreeEncoding();

--solutions--

// solution required