Похожие цифры
Два прямоугольника похожи, если отношения их сторон одинаковы.
Рассмотрим эти два прямоугольника; прямоугольник высотой 5 строк и шириной 11 символов:
===========
===========
===========
===========
===========
и прямоугольник высотой 10 строк и шириной 22 символа:
======================
======================
======================
======================
======================
======================
======================
======================
======================
======================
Эти формы похожи, потому что соотношения их сторон одинаковы. Чтобы выразить это формально ( - самая короткая сторона, а - самая длинная):
Вы также можете сделать:
Соревнование
Напишите программу или функцию, которая принимает «основной» прямоугольник и некоторые «другие» прямоугольники и печатает, какие из «других» похожи на «основные».
Вход
Форма и список форм. Каждая фигура состоит из 2 ненулевых натуральных чисел, которые обозначают ширину и высоту прямоугольника. Например, это:
(4,2), (3,9)
обозначает два прямоугольника, 4x2 и 3x9. Точный формат ввода может быть любым, по вашему желанию.
Выход
Индексы «других» фигур похожи на «основные». Вы можете выбрать, будут ли индексы основаны на 0 или 1, а также на точном формате и порядке вывода.
Пример программы
В 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
Пример ввода и вывода
Входные данные:
(1, 2)
[(1, 2), (2, 4)]
Выход:
set([0, 1])
Входные данные:
(1, 2)
[(1, 9), (2, 5), (16, 8)]
Выход:
set([2])
выигрыш
Это код-гольф, поэтому выигрывает самое короткое представление.
Заметки
- Это само собой разумеется, но стандартные лазейки запрещены .
- Никакие встроенные функции для поиска похожих фигур не могут быть использованы. (Я даже не знаю, существует ли это, но я не удивлюсь!)
[(1,2), (2,4), (1,9), (2,5), (16,8)]
, только [0,1,4]
и [1,2,5]
разрешено, или мы могли бы также вывести [1,1,0,0,1]
или [(1,2), (2,4), (16,8)]
?
[1.0 2.0]
ли приемлемый формат ввода?