backstory
คุณตื่นขึ้นมาอาการวิงเวียนศีรษะในห้องทดลองทางเคมีและคุณรู้ว่าคุณถูกนักเคมีอายุมากถูกลักพาตัวไป เนื่องจากเขาไม่สามารถมองเห็นได้ดีเนื่องจากอายุของเขาเขาต้องการให้คุณทำงานเพื่อเขาและเมื่อนั้นคุณสามารถหนีจากห้องปฏิบัติการได้
งาน
เป็นหน้าที่ของคุณในการส่งคืนสูตรโครงสร้างของโมเลกุลที่จะให้สูตรทางเคมีเป็นอินพุต โปรดทราบว่าจะใช้เฉพาะอะตอมคาร์บอน ( C
), ออกซิเจน ( O
) และไฮโดรเจน ( H
) เท่านั้นเป็นอินพุต ซึ่งแตกต่างจากในสูตรทางเคมี a 0
คือตัวระบุปริมาณที่ถูกต้องและ1
ไม่สามารถละเว้นได้ (เช่นC1H4O0
อินพุตที่ถูกต้อง แต่CH4
ไม่ใช่)
เพื่อป้องกันความคลุมเครือเราจะถือว่าพันธะคู่และสามไม่ปรากฏในโมเลกุล อะตอมคาร์บอนทั้งหมดต้องการ 4 พันธะเดี่ยวอะตอมออกซิเจนทั้งหมดต้องการ 2 และอะตอมไฮโดรเจนต้องการหนึ่ง นอกจากนี้เรายังสมมติว่าO-O
ไม่มีพันธบัตรเช่นกัน โมเลกุลไม่จำเป็นต้องมีอยู่หรือไม่เสถียร
อินพุตจะไม่ประกอบด้วย3
อะตอมของคาร์บอนมากกว่าเพื่อให้แน่ใจว่าความสว่างในการแสดงผลของเอาต์พุต
คุณควรแสดงโมเลกุลที่มีอะตอมของคาร์บอนจัดเรียงเป็นเส้นตรงโดยไม่หยุดชะงัก เออร์โกไม่มีC-O-C
พันธบัตร
คุณต้องส่งคืนโมเลกุลที่เป็นไปได้ทั้งหมดซึ่งไม่รวมอยู่ในกฎก่อนหน้านี้ คุณไม่จำเป็นต้องจัดการอินพุตที่ไม่ถูกต้อง
ตัวอย่างต่อไปนี้แสดงวิธีแก้ปัญหาทั้งหมดที่คุณต้องจัดการกับโมเลกุลนั้น
การหมุน 180 องศาในระนาบของหน้าหนึ่งในสูตรของโมเลกุลนั้นถือเป็นความซ้ำซ้อนและไม่จำเป็นต้องแสดง
ในตัวอย่างด้านล่างฉันจะแสดงสูตรที่เป็นไปได้ทั้งหมดสำหรับโมเลกุลจากนั้นชี้ให้เห็นสิ่งที่ไม่จำเป็นต้องแสดง
ตัวอย่าง
การป้อนข้อมูล: C2H6O2
อันดับแรกนี่คือสูตรทั้งหมดที่เป็นไปได้สำหรับข้อมูลนี้ (ขอบคุณ @Jonathan Allan)
01 H
|
O H
| |
H - O - C - C - H
| |
H H
02 H
|
H O
| |
H - O - C - C - H
| |
H H
03 H H
| |
H - O - C - C - O - H
| |
H H
04 H H
| |
H - O - C - C - H
| |
H O
|
H
05 H H
| |
H - O - C - C - H
| |
O H
|
H
12 H H
| |
O O
| |
H - C - C - H
| |
H H
13 H
|
O H
| |
H - C - C - O - H
| |
H H
14 H
|
O H
| |
H - C - C - H
| |
H O
|
H
15 H
|
O H
| |
H - C - C - H
| |
O H
|
H
23 H
|
H O
| |
H - C - C - O - H
| |
H H
24 H
|
H O
| |
H - C - C - H
| |
H O
|
H
25 H
|
H O
| |
H - C - C - H
| |
O H
|
H
34 H H
| |
H - C - C - O - H
| |
H O
|
H
35 H H
| |
H - C - C - O - H
| |
O H
|
H
45 H H
| |
H - C - C - H
| |
O O
| |
H H
และนี่คือสูตรที่ควรอยู่ในผลลัพธ์หากเราหมุนการหมุน 180 องศาในระนาบของหน้า:
01 H
|
O H
| |
H - O - C - C - H
| |
H H
03 H H
| |
H - O - C - C - O - H
| |
H H
12 H H
| |
O O
| |
H - C - C - H
| |
H H
13 H
|
O H
| |
H - C - C - O - H
| |
H H
14 H
|
O H
| |
H - C - C - H
| |
H O
|
H
15 H
|
O H
| |
H - C - C - H
| |
O H
|
H
23 H
|
H O
| |
H - C - C - O - H
| |
H H
25 H
|
H O
| |
H - C - C - H
| |
O H
|
H
35 H H
| |
H - C - C - O - H
| |
O H
|
H
คุณไม่จำเป็นต้องส่งออกเลเบลของสูตรและคุณสามารถเอาท์พุทของการหมุนเมื่อทั้งสองมีอยู่ ตัวอย่างเช่นคุณสามารถส่งออกทั้ง 02 หรือ 35
นี่คืออินพุตที่ถูกต้องในการทดสอบรหัสของคุณ:
C3H8O2 C1H4O0 C2H6O2 C1H4O1 C2H6O2
พีซีที่นักเคมีให้คุณทำงานของคุณค่อนข้างเก่าดังนั้นคุณไม่มีหน่วยความจำมากพอที่จะบันทึกรหัสของคุณดังนั้นนี่คือรหัสกอล์ฟและจำนวนไบต์ที่สั้นที่สุดชนะ!