Challenge n°2 : Terrain

L'objectif general est d'ecrire un algorithme permettant de simuler une inondation. Pour cela, nous avons decompose le probleme en quatre etapes, chacune fera l'objet d'un defi different. Dans ce numero, nous vous proposons de resoudre les 2 premieres etapes (Remarque: chacun des defis est independant).

Etape 1: Codage du terrain (Essais) Etape 2: Algorithme de la goutte d`eau (Qualifs) Etape 3: Affichage du terrain en niveau de gris (Essais libres) Etape 4: L'inondation (Course)

Defi no 2: Codage du terrain Le terrain est represente par un quadrillage. A chaque case correspond une altitude, qui a pour valeur un chiffre hexadecimal (0-F).

- *Version RPL*: Le terrain est codee par une liste de liste d`entier binaire en hexadecimal de taille 64 bits (16 valeurs hexa). Chaque sous-liste represente une ligne de terrain. Le nombre de colonne du terrain est donne par le premier element de la liste, qui est un entier.

Exemple: { 21 2 } { 21 1234567890ABCDEFEDCBA -> { #1234567890ABCDEFh #EDCBAh } 02468ACEFEDCBA9876543 { #2468ACEFEDCBA98h #76543h } }

- *Version External et Assembleur*: Le terrain est codee par une liste d'entier binaire en hexadecimal de taille 4n, ou n est le nombre de colonne du terrain. Chaque liste represente une ligne de terrain. Le premier element de la liste est un entier representant le nombre de colonne du terrain.

Exemple { 25 2 } { 25 1234567890ABCDEFEDCBA9753 -> #1234567890ABCDEFEDCBA9753h 002468ACEFEDCBA9876543210 #2468ACEFEDCBA9876543210h }

*Le programme a realiser devra generer **aleatoirement** un terrain. Pour cela, il doit prendre en argument au **niveau 1** de la pile une liste de 2 entiers representant respectivement le nombre de colonnes et le nombre de lignes du terrain à generer et rendre comme resultat la liste demandee. Le programme ne doit en aucun cas **modifier le reste de la pile** (niveau 2 et superieur)*, ni d'ailleurs les flags de la HP.

Actuellement le programme de reference en RPL realise un score de: sur S(X): {33 4} -> 900 octets.secondes (o.s) sur G(X): {22 11} -> 1100 o.s

*Note*: Les mesures sont toujours realisees en multipliants la taille en octets par la vitesse mesuree avec TK.EXT (ou TK.RPL cf HoPsy n°0 p?? et HoPsy n°1 p??). Bonne course.