สมองสะบัดกลายเป็นวันพรุ่งนี้ปีหนึ่ง! เพื่อเป็นเกียรติแก่วันเกิดเรามีปาร์ตี้วันเกิดสไตล์ PPCG ที่ผู้ใช้หลายคนโพสต์คำถามที่เกี่ยวข้องกับสมอง! ช่วยเราเฉลิมฉลอง! :)
Brain-flak เป็นภาษาลึกลับที่ฉันเขียนซึ่งคำสั่งทั้งหมดเป็นวงเล็บเหลี่ยมและวงเล็บทั้งหมดต้องตรงกันอย่างสมบูรณ์ ในการขอยืมคำจำกัดความของตัวเอง :
สำหรับวัตถุประสงค์ของการท้าทายนี้เป็น "วงเล็บ" ใด ๆ
()[]{}<>
ของตัวละครเหล่านี้:เครื่องหมายวงเล็บคู่หนึ่งถือว่าเป็น "จับคู่" หากวงเล็บเปิดและปิดอยู่ในลำดับที่ถูกต้องและไม่มีอักขระอยู่ภายในเช่น
() []{}
หรือถ้าทุกองค์ประกอบย่อยภายในนั้นถูกจับคู่ด้วย
[()()()()] {<[]>} (()())
องค์ประกอบย่อยยังสามารถซ้อนกันหลายชั้นลึก
[(){<><>[()]}<>()] <[{((()))}]>
สตริงถือเป็น "จับคู่อย่างสมบูรณ์" ถ้าหาก:
ตัวละครทุกตัวจะเป็นตัวยึด
วงเล็บแต่ละคู่มีวงเล็บเปิดและปิดที่ถูกต้องและอยู่ในลำดับที่ถูกต้อง
ในการเฉลิมฉลองวันคล้ายวันเกิดครั้งแรกของสมองความท้าทายในวันนี้เกี่ยวกับการใช้ชุดวงเล็บที่ไม่สมดุล
ตัวอย่างเช่น
((
ไม่เป็นรหัสสะเก็ดของสมองที่ถูกต้อง แต่ถ้าเราผนวก))
เข้าด้วยกันมันจะกลายเป็น(())
ซึ่งมีความสมดุลอย่างสมบูรณ์ ที่ทำให้การป้อนข้อมูลนี้appendableในทำนองเดียวกัน
>}
ไม่ถูกต้อง แต่เราสามารถเติม{<
ให้มันเพื่อทำ{<>}
ซึ่งถูกต้อง นั่นทำให้อินพุตนี้สามารถเตรียมตัวล่วงหน้าได้อินพุตบางตัวมีความซับซ้อนมากกว่าเล็กน้อย ตัวอย่างเช่น
)][({
ไม่สามารถใช้งานได้อย่างหมดจดโดยการผนวกหรือต่อท้าย แต่มันก็สามารถที่จะทำถูกต้องโดย prepending และท้าย[(
})]
ดังนั้นการป้อนข้อมูลนี้เป็นทั้งprependableและappendableสุดท้ายอินพุตบางตัวไม่สามารถสร้างรหัสที่ทำให้เกิดการสะกิดในสมองได้โดยการผนวกหรือต่อท้าย ตัวอย่างเช่น
(>
ไม่สามารถทำให้ถูกต้องได้ (การ<
สร้างที่เตรียม<(>
ไว้และการ)
สร้างที่ต่อท้าย(>)
ซึ่งไม่ถูกต้อง) ดังนั้นอินพุตนี้ไม่สามารถต่อท้ายหรือต่อท้ายได้
สำหรับความท้าทายในวันนี้คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นที่ใช้สตริงของวงเล็บและพิจารณาว่าเป็นสตริงหรือไม่
appendable
prependable
both
neither
คุณสามารถเลือกค่าที่คุณใช้เพื่อเป็นตัวแทนของแต่ละกรณี ตัวอย่างเช่นการแสดงผล1, 2, 3, 4
หรือ'a', 'p', 'b', 'n'
หรือ1, 'foo', 3.1415, -17
หรืออะไรก็ได้ ตราบใดที่การส่งออกแต่ละที่แตกต่างกันและสอดคล้องที่ดี อย่างไรก็ตามคุณต้องระบุอย่างชัดเจนว่าผลลัพธ์ที่สอดคล้องกับกรณีใด
คุณอาจคืนค่านี้ในรูปแบบใดก็ได้ที่สะดวกที่สุด (เช่นกลับจากฟังก์ชันพิมพ์ไปที่ STDOUT แก้ไขอาร์กิวเมนต์เขียนไปยังไฟล์ ฯลฯ )
คุณสามารถสันนิษฐานได้ว่าการป้อนข้อมูลจะไม่ถูกต้องของสมองสะบัดหรือเปล่า
ตัวอย่าง
อินพุตต่อไปนี้เป็นสิ่งที่สามารถสรุปได้ทั้งหมด:
))
(((()()())))}
)>}]
()[]{}<>)
สิ่งเหล่านี้สามารถต่อท้ายได้ทั้งหมด:
(({}{})
((((
([]()())(
{<<{
เหล่านี้ล้วนเป็นทั้ง :
))((
>()[(()){
>{
และสิ่งเหล่านี้ล้วนไม่ใช่ :
)(}
{(((()()()))>
[}
((((((((((>
((((((((((<>()]
ตามปกตินี่คือcode-golfดังนั้นจึงใช้ช่องโหว่มาตรฐานและคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ!
ความท้าทายนี้ยากมากโดยเฉพาะในสมองสะเก็ดดังนั้นจุดสูงสุดของบราวนี่ให้กับทุก ๆ คำตอบที่เขียนด้วยสมอง :)
][
คือไม่ appendable เป็นอะไรที่คุณสามารถผนวกสามารถทำให้มันถูกต้อง ในทำนองเดียวกันมันไม่สามารถหักล้างได้ มัน ... 'ใส่ได้'! คุณสามารถแทรกลงในสายอักขระเพื่อทำให้ Brainflak ที่ใช้ได้ทั้งหมด
You can assume that the input will never be valid brain-flak or empty.
maximum brownie points
ฉันคิดว่าการให้คะแนนบราวนี่และคุกกี้สูงสุดแทนการกระตุ้นให้สมองสะบัดความท้าทายนี้มากกว่าเพียงแค่จุดบราวนี่เนื่องจากฉันไม่คิดว่าเรื่องเล็กน้อยในภาษาใด ๆ เลย Brain-Flak : P