同様の数字
2つの長方形は、辺の比率が同じ場合に似ています。
これらの2つの長方形を検討してください。高さ5行、幅11文字の長方形:
===========
===========
===========
===========
===========
高さ10行、幅22文字の長方形:
======================
======================
======================
======================
======================
======================
======================
======================
======================
======================
これらの形状は、側面の比率が同じであるため類似しています。正式に配置するには(が最短辺、が最長辺):
次のこともできます。
チャレンジ
「メイン」長方形といくつかの「その他」長方形を取り、「その他」が「メイン」に似ているものを印刷するプログラムまたは関数を作成します。
入力
形状と形状のリスト。各形状は、2つのゼロ以外の正の整数で構成され、長方形の幅と高さを示します。たとえば、これ:
(4,2), (3,9)
は、4x2と3x9の2つの長方形を示します。ただし、入力の正確な形式は必要に応じて変更できます。
出力
「メイン」に類似した「その他」の形状のインデックス。インデックスが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]
許容入力フォーマットも?