เล่นข่วนกับตารางธาตุ


13

คุณมีชุดไพ่ที่มีสัญลักษณ์จากตารางธาตุ สัญลักษณ์แต่ละตัวจะปรากฏขึ้นหนึ่งครั้ง คุณกำลังคิดจะทำ แต่คุณต้องการที่จะรู้ว่ามันเป็นไปได้หรือไม่

ความท้าทาย

เขียนโปรแกรมในภาษาที่คุณชื่นชอบซึ่งจะใช้สตริงเป็นพารามิเตอร์อินพุต คุณอาจสมมติว่าอินพุตไม่เป็นโมฆะไม่มีช่องว่างและประกอบด้วยอักขระ ASCII

โปรแกรมของคุณควรใช้สตริงนั้นและส่งออกค่าจริงถ้าคำนั้นสามารถสร้างขึ้นจากสัญลักษณ์จากตารางธาตุและค่าเท็จถ้าคำไม่สามารถ

เพื่อให้การท้าทายนี้ยากขึ้นคุณไม่สามารถใช้สัญลักษณ์สองครั้ง ดังนั้นหากคุณใช้ไนโตรเจนNคุณไม่สามารถใช้Nอีกครั้งในคำเดียวกัน

กฎระเบียบ

ไม่อนุญาตช่องโหว่มาตรฐาน คุณอาจใช้สัญลักษณ์จากองค์ประกอบที่ 1-118 (ไฮโดรเจนถึง Ununoctium) คุณสามารถหารายชื่อขององค์ประกอบทั้งหมดที่นี่ คุณสามารถอ่านรายการสัญลักษณ์จากไฟล์หรืออาร์กิวเมนต์ที่ป้อนได้หากคุณต้องการ

กรณีทดสอบ:

Laos - true (LaOs)
Amputation - true (AmPuTaTiON)
Heinous - true (HeINoUS)
Hypothalamus - true (HYPoThAlAmUS)
Singapore - true (SiNGaPoRe)
Brainfuck - true (BRaInFUCK)
Candycane - false

นี่เป็นความท้าทายของการเล่นรหัส

ก่อนที่คุณจะปิดซ้ำ:แม้ว่าสิ่งนี้อาจดูคล้ายกับความท้าทายนี้แต่ฉันรู้สึกว่ามันแตกต่างกันเพราะมันไม่ใช่ 'สร้างรายการคำทั้งหมดที่เป็นไปได้จากตารางธาตุ' มันคือ 'รับข้อมูลเข้าโดยพลการและตรวจสอบว่า มันสามารถทำจากตารางธาตุ '


2
มีสิ่งนี้ซึ่งเกี่ยวข้องอย่างใกล้ชิดมากขึ้น แต่ถูกปิดตัวเองเป็นความท้าทายที่คุณเชื่อมโยง ฉันคิดว่าข้อเท็จจริงที่คุณสามารถใช้สัญลักษณ์ได้เพียงครั้งเดียวคือความแตกต่างที่ยิ่งใหญ่ที่สุดระหว่างการท้าทาย ในแง่ของการเล่นกอล์ฟฉันสงสัยว่าจะมีวิธีที่ดีกว่าการบังคับใช้คำที่เป็นไปได้ทั้งหมดและตรวจสอบว่าอินพุตอยู่ในหมู่พวกเขาหรือไม่
Martin Ender

1
"คุณสามารถอ่านรายการสัญลักษณ์ในไฟล์ได้หากต้องการ" - เราจะนับมันได้อย่างไร มีการเพิ่มขนาดของไฟล์ลงในความยาวรหัสหรือไม่ หรือเราสามารถใช้งานได้ฟรี
Qwertiy

2
เราสามารถนำรายการองค์ประกอบต่างๆมาเป็นอาร์กิวเมนต์ในโปรแกรมได้หรือไม่?
Emigna

1
@Qwertiy ขนาดของไฟล์นั้นฟรี แต่ไบต์ที่จะอ่านไม่ได้
JamesENL

9
โบรอนเรเดียมไอโอดีนไนโตรเจนฟลูออรีนยูเรเนียมคาร์บอนโพแทสเซียม
Neil

คำตอบ:


3

05AB1E, 16 ไบต์

œvyŒ€J})˜Ùvy²Q}O

อธิบาย

œv                # for each permutation of the list of elements
  yŒ              # get all sublist of elements
    €J            # join as strings to form the words possible to spell
      })˜Ù        # convert to list of unique spellable strings
          vy²Q}   # compare each word with input word
               O  # sum giving 1 if the word is found, else 0

คำเตือน:ช้ามาก ฉันขอแนะนำให้ทดสอบองค์ประกอบย่อยในล่ามออนไลน์ที่มีขนาดเล็กกว่ามาก

รับรายการองค์ประกอบเป็นอาร์กิวเมนต์แรก
ใช้คำทดสอบเป็นอาร์กิวเมนต์ที่สอง
ส่งคืน 1 สำหรับจริงและ 0 สำหรับเท็จ

ลองออนไลน์ในองค์ประกอบย่อย ๆ


3

Brachylogขนาด 7 ไบต์

spc~@l.

สอบถามกับรายการของสัญลักษณ์ (ตัวพิมพ์เล็กทั้งหมด) เป็น input run_from_atom('spc~@l.', ["he":"n":"o":"li"], "Nohe").และคำว่าเอาท์พุทเช่น

คำเตือน:สิ่งนี้ไม่มีประสิทธิภาพอย่างมากเมื่อสัญลักษณ์ทั้งหมดอยู่ในรายการ

คำอธิบาย

spc        Create a string from a permutation of a subset of the Input
   ~@l.    This string can unify with the lowercase version of the Output

4
@ ลงคะแนนเสียงสนใจที่จะอธิบาย?
ทำให้เสียชีวิต

1

JavaScript (Firefox 48 หรือรุ่นก่อนหน้า), 103 ไบต์

f=(w,e=`
H
He
... (list of elements not included in the byte count) ...
Uus
Uuo
`)=>!w||e.match(/\w+/g).some(s=>!w.search(s,`i`)&&f(w.slice(s.length),e.replace(`
${s}
`,`
`)))

1

Pyth - 13 ไบต์

เพียงตรวจสอบว่าพาร์ติชันของอินพุตที่ต่ำกว่ามีส่วนทั้งหมดในตารางธาตุ

sm.A}RQd./rzZ

บนโทรศัพท์มือถือจึงไม่สามารถตั้งค่าชุดทดสอบจริง แต่พยายามนี้


1
คุณเขียนสิ่งนี้ทางโทรศัพท์!
JamesENL

สิ่งนี้ไม่แน่ใจว่าองค์ประกอบจะไม่ถูกใช้หลายครั้ง ตัวอย่าง.
PurkkaKoodari

1

Pyth, 11 ไบต์

s}RySQSM./z

ลองออนไลน์ ชุดทดสอบ

เขียนบนโทรศัพท์ของฉัน แต่ควรใช้งานได้ ช้ามากสำหรับองค์ประกอบจำนวนมากหรือสตริงที่ยาว

คำอธิบาย

  • ใช้พาร์ติชันทั้งหมด ( ./) ของอินพุต ( z)
  • จัดเรียง ( S) แต่ละพาร์ติชัน ( M)
  • สำหรับแต่ละพาร์ติชัน ( R) ดูว่ามันอยู่ใน ( }) รายการของเซ็ตย่อยทั้งหมด ( y) ของSตารางธาตุเรียง ( ) ที่กำหนดเป็นอินพุต ( Q) หรือไม่
  • Sum ( s) รายการผลลัพธ์ของ booleans
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.