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
พีซีที่นักเคมีให้คุณทำงานของคุณค่อนข้างเก่าดังนั้นคุณไม่มีหน่วยความจำมากพอที่จะบันทึกรหัสของคุณดังนั้นนี่คือรหัสกอล์ฟและจำนวนไบต์ที่สั้นที่สุดชนะ!