Chiffres similaires
Deux rectangles sont similaires si les rapports de leurs côtés sont identiques.
Considérez ces deux rectangles; un rectangle de 5 lignes de haut et 11 caractères de large:
===========
===========
===========
===========
===========
et un rectangle de 10 lignes de haut et 22 caractères de large:
======================
======================
======================
======================
======================
======================
======================
======================
======================
======================
Ces formes sont similaires car les rapports de leurs côtés sont les mêmes. Pour le dire formellement ( étant le côté le plus court et étant le côté le plus long):
Vous pouvez également faire:
Le défi
Écrivez un programme ou une fonction qui prend un rectangle "principal" et quelques "autres" rectangles et imprime ceux des "autres" qui sont similaires à "principaux".
L'entrée
Une forme et une liste de formes. Chaque forme se compose de 2 entiers positifs non nuls, qui indiquent la largeur et la hauteur du rectangle. Par exemple, ceci:
(4,2), (3,9)
désigne deux rectangles, un 4x2 et un 3x9. Le format exact de l'entrée peut être celui que vous désirez.
Le résultat
Les indices des «autres» formes qui sont similaires à «principales». Vous pouvez choisir si les indices sont basés sur 0 ou 1, ainsi que le format et l'ordre exacts de la sortie.
Exemple de programme
En Python:
main = eval(raw_input()) # The main rectangle.
rects = eval(raw_input()) # The list of rectangles.
similar = set()
for i, rect in enumerate(rects):
if max(main)*min(rect) == min(main)*max(rect): # Cross-multiply
# They are similar.
similar.add(i)
print similar
Exemple d'entrée et de sortie
Contribution:
(1, 2)
[(1, 2), (2, 4)]
Sortie:
set([0, 1])
Contribution:
(1, 2)
[(1, 9), (2, 5), (16, 8)]
Sortie:
set([2])
Gagnant
Il s'agit de code-golf, donc la soumission la plus courte l'emporte.
Remarques
- Cela va sans dire, mais les failles standard sont interdites .
- Aucun élément intégré pour localiser des figures similaires ne peut être utilisé. (Je ne sais même pas si cela existe, mais je ne serais pas surpris!)
[(1,2), (2,4), (1,9), (2,5), (16,8)]
, est seulement [0,1,4]
et [1,2,5]
autorisé, ou pourrions-nous également produire [1,1,0,0,1]
ou [(1,2), (2,4), (16,8)]
?
[1.0 2.0]
un format d'entrée acceptable?