หากคุณเคยพยายามที่จะเขียนรหัส palindromic มาก่อนคุณจะรู้ว่ามีแนวโน้มที่จะได้รับในวงเล็บของคุณ ()()
ไม่ใช่ palindrome แม้ว่ามันดูเหมือนว่ามันควรจะเป็นในขณะที่())(
และ()(
มีทั้ง palindromic และทั้งสองมองเป็นใบ้ มันจะไม่สะดวกถ้ามันเป็นอย่างอื่น?
สตริงเป็นpalindromic สะดวกถ้ามันเท่ากับสตริงที่ได้รับเมื่อ reverse มีวงเล็บ ( ()
), วงเล็บ ( []
) และวงเล็บปีกกา ( {}
) ทั้งหมด ไม่มีตัวละครอื่นที่พิเศษและต้องการการพลิก ( <>
บางครั้งมีการจับคู่ แต่มักจะไม่ถูกปล่อยออกไป)
งานของคุณคือการเขียนในภาษาของคุณโปรแกรม (รับอินพุตบน STDIN) หรือฟังก์ชั่น (รับอาร์กิวเมนต์สตริงเดี่ยว) ซึ่ง (a) ให้ค่าจริงที่สอดคล้องกัน * เมื่ออาร์กิวเมนต์มีความสะดวก Palindromic และเท็จที่สอดคล้องกัน ค่าเป็นอย่างอื่นและ (b) เป็นตัวเองอย่างสะดวก palindromic
ตัวอย่างเช่นอินพุตต่อไปนี้เป็นแบบ palindromic:
racecar
(a)(bb)(a)
void main(int argc, *char[] argv) {} (vgra []rahc* ,cgra tni)niam diov
และสิ่งต่อไปนี้ไม่ใช่:
non-palindrome
A nut for a jar of tuna?
(old [style] parens) )snerap ]elyts[ dlo(
ingirumimusnocte)etconsumimurigni
คุณไม่สามารถพึ่งพาสถานะภายนอกใด ๆ (ชื่อไฟล์เฉพาะโครงสร้างไดเรกทอรีอินพุตผู้ใช้อื่น ๆ การเข้าถึงเว็บ ฯลฯ ) ยกเว้นตัวแปลภาษา / ตัวแปลภาษา
นอกจากนี้คุณไม่สามารถใช้ "เคล็ดลับการแสดงความคิดเห็น" ซึ่งคุณแสดงความคิดเห็นหรือแสดงโค้ดบางส่วนที่ไม่ได้ใช้โดยใช้ประโยชน์จากสิ่งอำนวยความสะดวกการแสดงความคิดเห็นในภาษาของคุณ ตัวอย่างเช่นทั้งหมดต่อไปนี้ไม่ได้รับอนุญาตเพราะมีชิ้นส่วนที่ไม่สามารถใช้งานได้ซึ่งสามารถนำออกหรือทำลายได้อย่างปลอดภัย (มีค่าใช้จ่ายในการสูญเสียความสะดวก - palindromic-ness):
{some code} // {edoc emos}
{some code} NB.BN {edoc emos}
"n\" ;{edoc emos} ;"; {some code}; "\n"
เห็นได้ชัดว่าสิ่งนี้อาจไม่ครอบคลุมทุกกรณี แต่วิญญาณของความท้าทายที่นี่ไม่ได้ใช้ความคิดเห็นและรหัสที่ไม่ได้แยกวิเคราะห์เพื่อให้ได้ความน่ากลัวแทนที่จะใช้ parens และวงเล็บที่ถูกต้อง ฉันกำลังมองคุณ LISP, Brainfuck
นี่คือรหัสการเล่นกอล์ฟดังนั้นรหัสที่สั้นที่สุดชนะ แต่ความยาวทั้งหมดของรหัสยินดีต้อนรับ
* โดยค่าจริงและเท็จที่สอดคล้องกันฉันหมายความว่าคุณสามารถส่งคืนหนึ่งในคู่ของค่าเช่น1
สำหรับจริงและ0
เท็จหรือFalse
สำหรับจริงและ"no"
เท็จและตราบใดที่ค่าเหล่านี้จะแตกต่างกันและไม่ เปลี่ยนจากการรันเป็นโปรแกรมของคุณ ใช้สิ่งที่ช่วยให้คุณประหยัดอักขระ
** เพื่อไม่ให้สับสนกับunexecuted : รหัสที่ถูกต้องและอาจทำสิ่งแปลก ๆ แต่ไม่เคยเรียกว่าเป็นเรื่องปกติ
(eslaf)fi
if(false)
()()
ไม่ใช่ palindrome
if(false){some code}
หรือตัวแปรที่ไม่ได้ใช้? พวกเขาได้รับอนุญาตหรือไม่