freeCodeCamp/curriculum/challenges/italian/10-coding-interview-prep/project-euler/problem-256-tatami-free-roo...

2.4 KiB
Raw Blame History

id title challengeType forumTopicId dashedName
5900f46c1000cf542c50ff7e Problema 256: Stanze senza tatami 5 301904 problem-256-tatami-free-rooms

--description--

I Tatami sono stuoie rettangolari, utilizzate per coprire completamente il pavimento di una stanza, senza sovrapposizioni.

Supponendo che l'unico tipo di tatami disponibile abbia dimensioni 1×2, ci sono ovviamente alcune limitazioni per la forma e le dimensioni delle camere che possono essere coperte.

Per questo problema, consideriamo solo le stanze rettangolari con dimensioni intere a, b e anche la dimensione s = a \times b. Usiamo il termine 'dimensione' per indicare la superficie del pavimento della stanza, e — senza perdita di generalità — aggiungiamo la condizione a ≤ b.

C'è una regola da seguire quando si posa il tatami: non ci devono essere punti in cui gli angoli di quattro tappeti diversi si incontrano. Per esempio, considerare le due disposizioni qui sotto per una stanza di dimensioni 4×4:

due disposizioni di tatami in una stanza 4x4

La disposizione a sinistra è accettabile, mentre quello a destra non lo è: una "X" rossa nel mezzo segna il punto in cui si incontrano quattro tatami.

A causa di questa regola, certe stanze di dimensioni pari non possono essere coperte con tatami: li chiamiamo stanze senza tatami. Inoltre, definiamo T(s) come il numero di stanze senza tatami di dimensione s.

La più piccola camera senza tatami ha dimensioni s = 70 e dimensioni 7×10. Tutte le altre stanze della dimensione s = 70 possono essere coperte con tatami; sono: 1×70, 2×35 e 5×14. Quindi, T(70) = 1.

Allo stesso modo, possiamo verificare che T(1320) = 5 perché ci sono esattamente 5 stanze senza tatami di dimensioni s = 1320: 20×66, 22×60, 24×55, 30×44 e 33×40. Infatti, s = 1320 è la dimensione della stanza più piccola s per cui T(s) = 5.

Trova la dimensione della stanza più piccola s per cui T(s) = 200.

--hints--

tatamiFreeRooms() dovrebbe restituire 85765680.

assert.strictEqual(tatamiFreeRooms(), 85765680);

--seed--

--seed-contents--

function tatamiFreeRooms() {

  return true;
}

tatamiFreeRooms();

--solutions--

// solution required