Ton meilleur ami s'est mis à collectionner les puzzles et veut constituer un catalogue détaillé de sa collection, en y consignant des informations comme le nombre total de pièces, le nombre de lignes et de colonnes, le nombre de pièces de bord et de pièces intérieures, le rapport d'aspect et le format du puzzle. Même en unissant tes forces et les siennes, il faut plusieurs heures pour venir à bout d'un seul puzzle de mille pièces, et il reste ensuite à compter les lignes et les colonnes et à calculer les autres nombres à la main. Les puzzles encore plus gros, avec leurs milliers de pièces, semblent à présent bien intimidants. « Il doit bien y avoir une meilleure solution ! » t'exclames-tu, avant de t'asseoir devant ton ordinateur pour résoudre le problème.
À partir d'informations partielles sur un puzzle, ajoute les pièces manquantes.
Si les informations sont insuffisantes pour compléter les détails, ou si certains éléments fournis se contredisent, il faut prévenir l'utilisateur.
Les informations complètes sur le puzzle comprennent les éléments suivants :
pieces : nombre total de piècesborder : nombre de pièces de bordureinside : nombre de pièces intérieures (qui ne sont pas sur le bord)rows : nombre de lignescolumns : nombre de colonnesaspectRatio : rapport d'aspect entre les colonnes et les lignesformat : format du puzzle, qui peut être portrait, square ou landscape
Pour cet exercice, tu peux supposer que les pièces sont carrées, ce qui permet de déduire le format à partir du rapport d'aspect :
portrait
square
landscape
Un puzzle portrait de 6 pièces, toutes des pièces de bordure et aucune pièce intérieure. Il comporte 3 lignes et 2 colonnes. Le rapport d'aspect est de 1,5 (3/2).
Un puzzle carré de 9 pièces, toutes des pièces de bordure sauf celle du centre, qui est une pièce intérieure. Il comporte 3 lignes et 3 colonnes. Le rapport d'aspect est de 1 (3/3).
Un puzzle paysage de 12 pièces, dont 10 sont des pièces de bordure et 2 sont des pièces intérieures. Il comporte 3 lignes et 4 colonnes. Le rapport d'aspect est de 1,333333... (4/3).
Inscris-toi sur Exercism pour apprendre et maîtriser WebAssembly avec 87 exercices, et un vrai mentorat humain, le tout gratuitement.