Donner seulement une règle et une boussole, inscrire un losange à l’intérieur du rectangle donné, en partageant deux points opposés.
Contribution
L'entrée correspond aux dimensions du rectangle. Dans l'exemple présenté, ce serait 125, 50
. Vous pouvez entrer les données de la manière qui vous convient le mieux (deux entiers, liste, chaînes, etc.).
La plus grande dimension sera de 100 minimum, tandis que la plus petite sera de 25 minimum. Les deux plafonnent à 200.
Sortie
La sortie sera une image (affichée à l’écran ou enregistrée dans un fichier) montrant
- Le rectangle d'entrée
- Toutes les lignes / cercles "de travail"
- Le losange inscrit
dans des couleurs distinctes. Dans l'image ci-dessus, le rectangle est noir, les lignes de travail bleues et l'orange losange. Les lignes doivent être dessinées dans l'ordre indiqué dans la liste (par exemple, losange écrase les lignes de travail et le rectangle).
L'image de sortie doit être suffisamment grande pour tout contenir. Par exemple, les cercles montrés ne peuvent pas sortir des limites.
Méthode
La méthode utilisée dans l'exemple d'image ci-dessus est la suivante:
- Tracez un cercle en utilisant le coin inférieur gauche comme centre et le coin supérieur droit comme point du périmètre, en donnant un rayon égal à la diagonale du rectangle.
- Faites de même, mais permutez les points centraux et périphériques.
- Tracez une ligne entre les intersections des deux cercles, en donnant une médiatrice perpendiculaire à la diagonale du rectangle.
- Utilisez les intersections de la nouvelle ligne et du rectangle pour dessiner le losange.
Cela fonctionne parce que les diagonales intérieures d'un losange se divisent toujours perpendiculairement. Je n'inclus pas une preuve complète de cela ici, cependant.
Ce n'est pas la seule méthode pour obtenir votre losange et vous pouvez en utiliser une autre, étant donné que vous expliquez ce que vous faites. Je crois que c'est probablement le plus facile, cependant.
Règles
Vous pouvez uniquement dessiner des cercles et des lignes (ou plutôt des segments de ligne). Un cercle est défini avec un point central et un point de périmètre. Une ligne est définie par deux points quelconques. Les lignes ne doivent pas nécessairement avoir une longueur spécifiée, mais elles doivent au moins couvrir les points qui les définissent (remarquez l'exemple d'image: la ligne dépasse un peu les intersections des cercles, mais pas jusqu'au bord). Pour les cercles, le rayon du centre au point de périmètre choisi est considéré comme une ligne de travail et doit être indiqué.
Pour pixelliser les lignes, vous pouvez utiliser n'importe quel algorithme reconnu (par exemple, celui de Bresenham) ou vous appuyer sur les éléments intégrés de votre langue. Si votre sortie est à base de vecteurs, assurez-vous qu’elle affiche une résolution au moins égale à celle du rectangle en entrée en pixels. De plus, vous allez dessiner sur un canevas ordinaire. Veuillez donc supprimer les marques de grille et les sorties superflues.
Pas de tricherie! Vous pouvez uniquement déterminer l'emplacement des points / lignes / cercles en utilisant ce que vous avez établi jusqu'à présent. Si vous ne pouvez pas expliquer comment utiliser vos lignes / cercles de travail pour montrer que c'est un losange, vous le faites mal.
Vous pouvez utiliser la paire de points opposés de votre choix et le rectangle n'a pas besoin d'être tracé aligné sur l'axe, tant que la sortie est correcte.
L'entrée sera toujours un rectangle non carré, alors ne vous inquiétez pas de la casse spéciale.
Enfin, il s’agit du golf standard, ce qui fait que la taille la plus basse en octets est gagnante.