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?