Champ de fleurs

Champ de fleurs

Difficile

Introduction

Flower Field est une réinterprétation bienveillante du célèbre jeu Démineur. Le but du jeu est de trouver toutes les fleurs du jardin à l'aide d'indices numériques qui indiquent combien de fleurs sont directement adjacentes (horizontalement, verticalement, en diagonale) à une case. « Flower Field » était inclus dans les versions régionales de Microsoft Windows en Italie, en Allemagne, en Corée du Sud, au Japon et à Taïwan.

Instructions

Ta tâche consiste à indiquer le nombre de fleurs dans les cases vides d'un jardin Champ de fleurs terminé. Le jardin est un plateau rectangulaire composé de cases, qui sont soit vides (' '), soit occupées par une fleur ('*').

Pour chaque case vide, compte le nombre de fleurs qui lui sont adjacentes (horizontalement, verticalement ou en diagonale). Si une case vide n'a aucune fleur adjacente, laisse-la vide. Sinon, remplace-la par le nombre de fleurs adjacentes.

Par exemple, tu peux recevoir un plateau 5 x 4 comme celui-ci (ici, les cases vides sont représentées par le caractère « · » pour l'affichage à l'écran) :

·*·*·
··*··
··*··
·····

Que ton code doit transformer en ceci :

1*3*1
13*31
·2*2·
·111·

Format du jardin

Le jardin est représenté par une string terminée par un caractère nul, avec un caractère de nouvelle ligne à la fin de chaque rangée.

Un exemple serait " \n * \n \n"

Registres

Registre Utilisation Type Description
$a0 entrée adresse string d'entrée terminée par un caractère nul
$a1 entrée/sortie adresse string de sortie terminée par un caractère nul
$t0-9 temporaire quelconque pour le stockage temporaire
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
MIPS Assembly Exercism

Prêt à commencer Champ de fleurs ?

Inscris-toi sur Exercism pour apprendre et maîtriser MIPS Assembly avec 70 exercices, et un vrai mentorat humain, le tout gratuitement.

Analyse approfondie de Champ de fleurs !

On explore les boucles `for` imbriquées, l'utilisation astucieuse de min/max pour simplifier la vérification des bornes, les _pipelines_ fonctionnels et le recours à des matrices à deux dimensions.