Parcours
/
Rust
Rust
/
Exercices
/
Points de selle
Points de selle

Points de selle

Moyen

Introduction

Tu prévois de construire une cabane dans les arbres, dans les bois près de chez toi, pour pouvoir observer le lever et le coucher du soleil.

Tu as obtenu les données d'un cabinet de géomètres local, qui donnent la hauteur de chaque arbre dans chaque section rectangulaire de la carte. Tu dois analyser chaque grille de la carte pour trouver de bons arbres pour ta cabane.

Un bon arbre remplit les deux conditions suivantes :

  • plus haut que tous les arbres situés à l'est et à l'ouest, pour avoir la meilleure vue possible sur les levers et les couchers de soleil.
  • plus bas que tous les arbres situés au nord et au sud, pour avoir le moins possible à grimper aux arbres.

Instructions

Ta tâche est de trouver les arbres potentiels où tu pourrais construire ta cabane dans les arbres.

L'entreprise de données fournit les données sous forme de grilles qui montrent la hauteur des arbres. Les lignes de la grille représentent la direction est-ouest, et les colonnes représentent la direction nord-sud.

Un arbre acceptable est le plus grand de sa ligne, tout en étant le plus petit de sa colonne.

Une grille peut très bien ne contenir aucun bon arbre. Ou bien elle peut en contenir un, voire plusieurs.

Voici une grille qui contient exactement un arbre candidat.

      ↓
      1  2  3  4
    |-----------
  1 | 9  8  7  8
→ 2 |[5] 3  2  4
  3 | 6  6  7  1
  • La ligne 2 contient les valeurs 5, 3, 2 et 4. La plus grande valeur est 5.
  • La colonne 1 contient les valeurs 9, 5 et 6. La plus petite valeur est 5.

Ainsi, le point en [2, 1] (ligne : 2, colonne : 1) est un excellent emplacement pour une cabane dans les arbres.

En Rust, les indices commencent à 0

Par convention, les séquences ordonnées de valeurs en Rust ont leur contenu numéroté (« indexé ») à partir de 0. Cela s'applique indépendamment de ce que le reste de la description de l'exercice dans ce README indique, comme les références à des indices qui commencent à 1 ; tu devras donc soustraire 1 pour convertir ces numéros d'indice en indices Rust.

Remarque sur l'efficacité

Cet exercice utilise un vecteur de vecteurs pour stocker le contenu de matrices. Bien que cet exercice soit conçu pour aider les apprenants à comprendre les concepts de base des vecteurs, comme l'indexation, ainsi que le fait que les types de données imbriqués sont autorisés, un vecteur de vecteurs est un choix sous-optimal pour le calcul matriciel haute performance et tout traitement efficace similaire de grandes quantités de données.

L'explication détaillée de cette inefficacité dépasse le cadre de cet exercice et de ce parcours d'apprentissage en général. Cet aspect est connu sous le nom de localité de cache et tu peux en trouver une bonne introduction en cliquant sur ce lien si tu veux en apprendre davantage sur les détails d'une architecture informatique moderne.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Rust Exercism

Prêt à commencer Points de selle ?

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