Defenestrationคือการโยนบางคนหรือบางสิ่งออกจากหน้าต่าง
- วิกิพีเดีย
อินพุต
อินพุตจะประกอบด้วยสองส่วน:
แบบแปลนชั้นและบุคคลภายในบ้าน / อาคาร
v><^หมายถึงบุคคลชี้ไปในทิศทางที่มีความหมายโดยลูกศร ข้อมูลที่ป้อนจะมีหนึ่งคนเท่านั้น-และ|เป็นตัวแทนของผนังและ#เป็นหน้าต่างเป็นพื้นที่ว่างเปล่า
ส่วนนี้ของการป้อนข้อมูลอาจถูกนำมาเป็นสตริงเดียวหรืออาร์เรย์ / รายการ / ฯลฯ ของสาย จะไม่มีช่องว่างต่อท้ายหรือนำหน้าและอินพุตจะเป็นรูปสี่เหลี่ยมผืนผ้าเสมอ
ตัวอย่าง:
-----###--- | | | ^ | -----------จำนวนเต็ม≥ 1 หมายถึงบุคคลที่เดินทาง (ในตัวอักษร)
เอาท์พุต
ผลลัพธ์ควรเป็น
1หากบุคคลนั้นปรากฏหน้าต่าง "ข้างใน" (เช่นหลังจากเลื่อนไปข้างหน้าตามระยะทางที่ระบุในอินพุตบุคคลนั้นจะอยู่ด้านบนของ a#)2ถ้าบุคคลนั้นถูก defenestrated (เข้ามาติดต่อกับ#แล้วต่อไปอีก)3หากบุคคลนั้นชนกำแพง (สัมผัสกับ a-หรือ|เมื่อกดที่ผนังคนจะหยุดและไม่ผ่านต่อไป)0หากไม่มีสิ่งใดในข้างต้นเป็นจริง (และบุคคลที่ทำไปแล้วคือเดินทางไปในที่ว่าง)
สมมติฐาน
ทั้งหมดต่อไปนี้สามารถสันนิษฐานได้ว่าเป็นจริง:
บุคคลนั้นจะไม่เดินทาง "นอกขอบเขต" ของพื้นที่อินพุต
หลังจากถูกกำจัดออกแล้วบุคคลนั้นจะไม่ติดต่อกับคนอื่น
#หรือ a-/|(ดังนั้นคุณไม่ต้องกังวลเกี่ยวกับว่า2และ1หรือ3ทั้งคู่เป็นจริง)
กรณีทดสอบ
สำหรับ "แปลนชั้น" ต่อไปนี้:
-----
| |
|###|
| |
| ^ |
In Out
1 0
2 1
3 2
สำหรับแผนชั้นนี้:
> | # |
In Out
1 0
2-99 3 * that is, any input 2-99 outputs 3
สำหรับแผนชั้นนี้:
||####|#|#|##|<
In Out
any 3
กรณีทดสอบขั้นสุดท้าย:
|v|
|#|
| |
| |
| |
| |
In Out
1 1
2-5 2
Has someone been for-sparta'd?