ตัวเลขที่คล้ายกัน
สี่เหลี่ยมสองรูปนั้นคล้ายกันถ้าอัตราส่วนของด้านเท่ากัน
ลองพิจารณาสี่เหลี่ยมสองรูปนี้ สี่เหลี่ยมผืนผ้าสูง 5 เส้นและกว้าง 11 ตัวอักษร:
===========
===========
===========
===========
===========
และสี่เหลี่ยมผืนผ้าสูง 10 เส้นและกว้าง 22 ตัวอักษร:
======================
======================
======================
======================
======================
======================
======================
======================
======================
======================
รูปร่างเหล่านี้คล้ายกันเพราะอัตราส่วนของด้านข้างเท่ากัน ที่จะนำมันอย่างเป็นทางการ (กับเป็นด้านที่สั้นที่สุดและเป็นด้านที่ยาวที่สุด):
คุณยังสามารถทำสิ่งต่อไปนี้
ความท้าทาย
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้สี่เหลี่ยม "หลัก" และสี่เหลี่ยมบางอัน "อื่น ๆ " และพิมพ์ที่ "อื่น ๆ " คล้ายกับ "main"
การป้อนข้อมูล
รูปร่างและรายการของรูปร่าง แต่ละรูปร่างประกอบด้วย 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]
เป็นรูปแบบอินพุตที่ยอมรับได้หรือไม่