Podobne liczby
Dwa prostokąty są podobne, jeśli proporcje ich boków są takie same.
Rozważ te dwa prostokąty; prostokąt o wysokości 5 linii i szerokości 11 znaków:
===========
===========
===========
===========
===========
i prostokąt o wysokości 10 linii i szerokości 22 znaków:
======================
======================
======================
======================
======================
======================
======================
======================
======================
======================
Te kształty są podobne, ponieważ proporcje ich boków są takie same. Ujmując to formalnie (gdzie jest najkrótszym bokiem, a najdłuższym bokiem):
Możesz także:
Wyzwanie
Napisz program lub funkcję, która pobiera „główny” prostokąt oraz niektóre „inne” prostokąty i drukuje, które z „innych” są podobne do „głównych”.
Dane wejściowe
Kształt i lista kształtów. Każdy kształt składa się z 2 niezerowych dodatnich liczb całkowitych, które oznaczają szerokość i wysokość prostokąta. Na przykład:
(4,2), (3,9)
oznacza dwa prostokąty, 4x2 i 3x9. Dokładny format danych wejściowych może być dowolny.
Wyjście
Wskaźniki „innych” kształtów podobnych do „głównych”. Możesz wybrać, czy indeksy będą oparte na 0 czy 1, a także dokładny format i kolejność danych wyjściowych.
Przykładowy program
W Pythonie:
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
Przykładowe wejście i wyjście
Wkład:
(1, 2)
[(1, 2), (2, 4)]
Wydajność:
set([0, 1])
Wkład:
(1, 2)
[(1, 9), (2, 5), (16, 8)]
Wydajność:
set([2])
Zwycięski
To jest golf golfowy, więc wygrywa najkrótsza przesyłka.
Notatki
- Powinno to być oczywiste, ale standardowe luki są zabronione .
- Nie można używać wbudowanych do lokalizowania podobnych liczb. (Nawet nie wiem, czy to istnieje, ale nie byłbym zaskoczony!)
[(1,2), (2,4), (1,9), (2,5), (16,8)]
jest tylko [0,1,4]
i [1,2,5]
dozwolone”, czy możemy również generować dane wyjściowe [1,1,0,0,1]
lub [(1,2), (2,4), (16,8)]
?
[1.0 2.0]
akceptowalny format wejściowy?