Il s’agit de donner la couverture de la reine sur un échiquier \(8\times 8\).
Exemple pour la position de la reine \((5;\ f)\) (cinquième ligne, \(f\)-ème colonne)
8 . . * . . * . .
7 . . . * . * . *
6 . . . . * * * .
5 * * * * * R * *
4 . . . . * * * .
3 . . . * . * . *
2 . . * . . * . .
1 . * . . . * . .
a b c d e f g h
Le programme comportera quatre parties
Option
faites en sorte que si l’utilisateur rentre une ligne ou une colonne trop grande (après 8 ou après ‘h’) il soit averti et puisse en rentrer une nouvelle.read_int
et read_char
de rust_hepia_lib
, afin de traiter l’erreur et permettre à l’utilisateur de pouvoir corriger son erreur en rentrant une nouvelle ligne ou colonne s’il s’est trompé.Il pourrait vous être utile d’utiliser la fonction read_char()
de rust_hepia_lib
. N’oubliez pas de télécharger la dernière version sur https://githepia.hesge.ch/orestis.malaspin/rust_hepia_lib.
Afin de créer un tableau de tableau vous devez écrire la ligne suivante
où SIZE est un entier connu à la compilation et Instance
est une instance d’un Type
. Si ce Type
n’est pas Copy
cette ligne produira une erreur de compilation (essayez pour voir le message d’erreur) car il n’y a qu’une instance de ce type et il faut le dupliquer (tous les éléments du tableau ne peuvent pas avoir l’ownership en même temps). Si votre type n’est pas Copy
, Rust peut le rendre copiable automatiquement sous certaines conditions. Pour ce faire il faut rajouter la ligne #[derive(Clone, Copy)]
avant la déclaration du type (il doit également être clonable).
La condition afin qu’un type puisse être rendu Copy
automatiquement, est que tous les types qu’il contient doivent être eux-même Copy
. Essayez de compiler les lignes suivantes pour voir ce qu’il se passe.
Une erreur s’est-elle produite? En effet, Vec<i32>
n’est pas Copy
. Rust ne peut donc pas savoir comment rendre votre type BinaireBis
automatiquement.