ถึงเวลาขุดโน้ตตรีโกณมิติเก่าของคุณจากโรงเรียนมัธยม! ความท้าทายคือการแก้ด้านที่ไม่รู้จักและมุมสามเหลี่ยมที่แตกต่างกัน และตามธรรมเนียมในการเล่นกอล์ฟรหัสการทำงานที่เล็กที่สุดก็ชนะ
นี่ไม่ใช่ปัญหาเล็ก ๆ น้อย ๆ การใช้งานอ้างอิงของฉันใน python ในปัจจุบันมีความยาวไม่เกิน838 837 ตัวอักษร แต่ฉันแน่ใจว่าคุณจะสามารถแก้ไขปัญหากอล์ฟให้เล็กลงได้
นอกจากนี้หากคุณติดอยู่ในส่วนนี้ในวิกิพีเดียควรจะได้รับคุณไป: สามเหลี่ยม: คอมพิวเตอร์ด้านข้างและมุม
อินพุต
สามเหลี่ยมต่อไปนี้แสดงชื่อของด้านและมุมที่ใช้ในการท้าทายนี้ โปรดทราบว่าด้านข้างเป็นตัวพิมพ์เล็กและมุมเป็นตัวพิมพ์ใหญ่
อินพุตได้รับเป็นหกค่าคั่นด้วยช่องว่างไม่ว่าจะstdin
เป็นอาร์กิวเมนต์บรรทัดคำสั่ง (หรือตัวเลือกของคุณ) ค่าหกตรงกับด้านข้างและมุมa, b, c
A, B, C
ด้านที่ไม่รู้จักจะได้รับเป็นเครื่องหมายคำถาม ( ?
) มุมอินพุทและเอาท์พุทจะต้องเป็นเรเดียน คุณอาจสมมติว่าค่าอินพุตถูกต้อง (คุณไม่ต้องตรวจสอบอะไรเลย) คุณอาจจะสมมติว่าสามเหลี่ยมป้อนเข้าไม่ได้ลดลงและทุกด้านและมุมเป็นศูนย์
ตัวอย่างอินพุตต่อไปนี้บอกคุณว่าด้านa
นั้นคือ8
ด้านb
คือ12
และมุมA
คือ0.5
เรเดียน:
8 12 ? 0.5 ? ?
เอาท์พุต
การส่งออกจะได้รับในรูปแบบเดียวกับการป้อนข้อมูล - stdout
หมายเลขหกพื้นที่แยกจากกันบน ยกเว้นอย่างเดียวคือเมื่อมันเป็นไปไม่ได้ที่จะแก้สามเหลี่ยมอินพุต - แล้วสตริงจะต้องเขียนไป"No solution"
stdout
หากเป็นไปได้ทั้งสองวิธีพวกเขาจะได้รับผลลัพธ์ด้วยการขึ้นบรรทัดใหม่ระหว่างกัน
ต่อไปนี้เป็นผลลัพธ์สำหรับอินพุตด้านบน:
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
เอาต์พุตไม่จำเป็นต้องมีความแม่นยำมาก แต่ต้องใช้ทศนิยมอย่างน้อยสองคู่
กฎระเบียบ
- อินพุตถูกอ่านจาก
stdin
หรืออาร์กิวเมนต์บรรทัดรับคำสั่ง - เอาต์พุตถูกเขียนไปที่
stdout
- หากสองวิธีเป็นไปได้ที่มีอินพุตที่กำหนดเอาต์พุตทั้งสอง
- หากมีข้อมูลน้อยเกินไปที่จะได้คำตอบที่ชัดเจนหนึ่งหรือสองข้อให้พิจารณาเป็น
"No solution"
กรณี ๆ ไป - ไม่มีการใช้รหัสในตัวหรือที่มีอยู่ล่วงหน้า (แน่นอนว่าคุณสามารถใช้ฟังก์ชั่นตรีโกณมิติได้ แต่ไม่ใช่ "
solveTriangle
" หรือเช่นนั้น) - รหัสที่สั้นที่สุดชนะ
กรณีทดสอบ
ใน 3 4 5 ? ? ?
ออก 3.0 4.0 5.0 0.643501108793 0.927295218002 1.57079630572
ใน ? 4 ? 0.64 0.92 1.57
ออก 3.00248479301 4.0 5.02764025486 0.64 0.92 1.57
ใน ? ? 5 ? 0.92 ?
ออก No solution
ใน ? ? 5 ? 0.92 1.57
ออก 3.03226857833 3.97800936148 5.0 0.65159265359 0.92 1.57
ใน 8 12 ? 0.5 ? ?
ออก (สองโซลูชั่น)
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
ใน 8 12 ? ? .5 ?
ออก 8.0 12.0 18.3912222133 0.325325285223 0.5 2.31626736837