Track
/
Emacs Lisp
Emacs Lisp
/
Esercizi
/
Mettere insieme i pezzi
Mettere insieme i pezzi

Mettere insieme i pezzi

Difficile

Introduzione

Il tuo migliore amico ha iniziato a collezionare puzzle e vuole costruire un catalogo dettagliato della sua collezione: registrare informazioni come il numero totale di pezzi, il numero di righe e colonne, il numero di pezzi del bordo e di pezzi interni, le proporzioni e il formato del puzzle. Anche unendo le forze, servono diverse ore per risolvere un puzzle da mille pezzi, e poi devi comunque contare righe e colonne e calcolare a mano i numeri rimanenti. I puzzle ancora più grandi, con migliaia di pezzi, ora sembrano davvero scoraggianti. «Deve esserci un modo migliore!» esclami, e ti siedi davanti al computer per risolvere il problema.

Istruzioni

Date alcune informazioni parziali su un puzzle, aggiungi i pezzi mancanti.

Se le informazioni non sono sufficienti a completare i dettagli, o se le parti fornite sono in contraddizione, l'utente deve essere avvisato.

Le informazioni complete sul puzzle comprendono le seguenti parti:

  • pieces: numero totale di pezzi
  • border: numero di pezzi del bordo
  • inside: numero di pezzi interni (non del bordo)
  • rows: numero di righe
  • columns: numero di colonne
  • aspectRatio: rapporto d'aspetto tra colonne e righe
  • format: formato del puzzle, che può essere portrait, square o landscape

Per questo esercizio, puoi assumere che i pezzi siano quadrati, così che il formato possa essere ricavato dal rapporto d'aspetto:

  • Se il rapporto d'aspetto è minore di 1, il formato è portrait
  • Se è uguale a 1, è square
  • Se è maggiore di 1, è landscape

Tre esempi

Verticale

Un puzzle verticale con 6 pezzi, tutti pezzi del bordo e nessuno interno. Ha 2 colonne e 3 righe. Il rapporto d'aspetto è 0.666666... (2/3).

Un puzzle 2 per 3

Quadrato

Un puzzle quadrato con 9 pezzi, tutti pezzi del bordo tranne quello al centro, che è un pezzo interno. Ha 3 colonne e 3 righe. Il rapporto d'aspetto è 1.0 (3/3).

Un puzzle 3 per 3

Orizzontale

Un puzzle orizzontale con 12 pezzi, 10 dei quali sono pezzi del bordo e 2 sono pezzi interni. Ha 4 colonne e 3 righe. Il rapporto d'aspetto è 1.333333... (4/3).

Un puzzle 4 per 3

Implementazione

Se le informazioni fornite non bastano a determinare un unico puzzle, segnala un errore con il messaggio "Insufficient data".

Se le informazioni fornite sono contraddittorie, segnala un errore con il messaggio "Contradictory data".

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Emacs Lisp Exercism

Vuoi iniziare Mettere insieme i pezzi?

Iscriviti a Exercism per imparare e padroneggiare Emacs Lisp con 103 esercizi e il mentoring di persone reali, tutto gratis.