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

2.5 KiB
Raw Blame History

id title challengeType forumTopicId dashedName
5900f48b1000cf542c50ff9e Problema 287: Codifica Quadtree (un semplice algoritmo di compressione) 5 301938 problem-287-quadtree-encoding-a-simple-compression-algorithm

--description--

La codifica Quadtree ci permette di descrivere un'immagine 2^N×2^N in bianco e nero come sequenza di bit (0 e 1). Queste sequenze devono essere lette da sinistra a destra in questo modo:

  • il primo bit si occupa dell'intera regione 2^N×2^N;
  • "0" indica una suddivisione:
    • la regione attuale 2^n×2^n è divisa in 4 sottoregioni di dimensione 2^{n - 1}×2^{n - 1},
    • i bit successivi contengono la descrizione delle sottoregioni in alto a sinistra, in alto a destra, in basso a sinistra e in basso a destra - in quell'ordine;
  • "10" indica che la regione corrente contiene solo pixel neri;
  • "11" indica che la regione corrente contiene solo pixel bianchi.

Considera la seguente immagine 4×4 (i segni colorati indicano i luoghi in cui può verificarsi una divisione):

Immagine 4x4 con segni colorati che indicano il luogo in cui può verificarsi la divisione

Questa immagine può essere descritta da diverse sequenze, ad esempio: "001010101001011111011010101010", di lunghezza 30, o "0100101111101110", di lunghezza 16, che è la sequenza minima per questa immagine.

Per un numero intero positivo N, definisci D_N come l'immagine 2^N×2^N con il seguente schema di colorazione:

  • il pixel con le coordinate x = 0, y = 0 corrisponde al pixel in basso a sinistra,
  • se {(x - 2^{N - 1})}^2 + {(y - 2^{N - 1})}^2 ≤ 2^{2N - 2} allora il pixel è nero,
  • altrimenti il pixel è bianco.

Qual è la lunghezza della sequenza minima che descrive D_{24}?

--hints--

quadtreeEncoding() dovrebbe restituire 313135496.

assert.strictEqual(quadtreeEncoding(), 313135496);

--seed--

--seed-contents--

function quadtreeEncoding() {

  return true;
}

quadtreeEncoding();

--solutions--

// solution required