codegolf
ลองนึกภาพนี้เรามีสภาพแวดล้อมที่มีขอบเขตทั่วโลกที่มีเพียงวัตถุเดียวที่เรียกว่า วัตถุนี้มีเด็กเดียวที่เรียกว่าซึ่งมีคุณสมบัติที่เรียกว่าstackexchange
การเข้าถึงคุณสมบัตินี้จะมีลักษณะ
com
codegolf.stackexchange.com
ความท้าทาย
อินพุตของโปรแกรม / ฟังก์ชั่นของคุณจะเป็นสตริงที่พยายามเข้าถึงคุณสมบัติบนขอบเขตส่วนกลาง เมื่อใดก็ตามที่พบคุณสมบัตินี้คุณจะต้องพิมพ์ / คืนค่าความจริง หากไม่พบทรัพย์สินจะมีการพิมพ์ / คืนค่าที่ผิดพลาด สิ่งที่จับได้: เมื่อคุณพยายามเข้าถึงพร็อพเพอร์ตี้บนวัตถุที่ไม่มีอยู่จริงโปรแกรมของคุณควรมีข้อผิดพลาดชนิดใดชนิดหนึ่ง¹
เพื่อให้ได้สิ่งบิตง่ายขึ้นคุณอาจคิดว่าการป้อนข้อมูลจะเป็น[a-z.]
ก็จะไม่ว่างเปล่าก็ไม่เคยจะมีการทำซ้ำ'และมันจะไม่เริ่มต้นหรือจุดสิ้นสุดด้วย.
.
ดังนั้นcodegolf.
การป้อนข้อมูลที่ไม่ถูกต้องคือ
กรณีทดสอบ
codegolf.stackexchange.com => 1 // or any other truthy value
codegolf.stackexchange.net => 0 // or any other falsy value
codegolf.stackexchange => 1
codegolf.foo => 0
codegolf => 1
foo => 0
codegolf.com => 0
codegolf.constructor => 0
codegolf.foo.bar => Error (since foo is undefined)
codegolf.stackexchange.com.foo => Error (since com is a value, not an object)
codegolf.stackexchange.com.foo.bar => Error
foo.stackexchange.com => Error
foo.bar => Error
foo.bar.baz => Error
นี่คือcode-golfรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
¹หาก (และเฉพาะในกรณี) ภาษาที่คุณเลือกไม่สนับสนุนข้อผิดพลาดเลยคุณต้องแสดงสิ่งที่ทำให้ชัดเจนว่านี่เป็นข้อผิดพลาด ตัวอย่างเช่นถ้าคุณใช้ 1 เพื่อความจริงและ 0 สำหรับความเท็จคุณอาจใช้ "e" สำหรับข้อผิดพลาด มีความสอดคล้องในค่าตอบแทนของคุณและอธิบายพฤติกรรมในโพสต์ของคุณ
codegolf.com
ในกรณีทดสอบเพื่อออกกฎการcodegolf(.stackexchange)?(.com)?$
ตรวจสอบประเภท
foo.stackexchange.com
foo
จะกลับมาundefined
แต่มันจะไม่ผิดพลาด foo.bar
จะโยนข้อผิดพลาดเพราะfoo
ไม่ได้กำหนดไว้
codegolf.foo => 0
foo => 0
foo => Error
จะเหมาะสมกว่า