相似的数字
两个矩形相似,如果他们双方的比例是相同的。
考虑这两个矩形;一个高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]
是一种可接受的输入格式?