ท้าทาย
กำหนดอินพุตจำนวนเต็มในฐาน 10 สร้างการแสดงสำหรับฟอเรสต์ไบนารีที่สอดคล้องกับอินพุต การเป็นตัวแทนรวมถึง แต่ไม่ จำกัด เพียงอาร์เรย์และสตริงที่ซ้อนกัน
อย่างไร?
แปลงอินพุตเป็นไบนารี 1
s เป็นตัวแทนของสาขาและ0
เป็นตัวแทนของใบ
เพื่อให้ง่ายต่อการเข้าใจลองใช้834
(1101000010 เป็นไบนารี่) เป็นตัวอย่าง
เราเริ่มต้นด้วยหลักแรก ตัวเลขแรกคือ a 1
ดังนั้นเราจึงวาดกิ่ง:
\ / 1
หรือเป็นอาร์เรย์ {{1}}
ตัวเลขถัดไปคือ1
เราจึงดึงกิ่งก้านสาขาเพิ่มเติม (จากซ้ายไปขวา):
\ / 1 \ / 1
หรือเป็นอาร์เรย์ {{1, {1}}}
หลักถัดไปคือ0
ดังนั้นเราวางใบไม้:
0 \ / 1 \ / 1
หรือเป็นอาร์เรย์ {{1, {1, 0}}}
ตัวเลขถัดไปคือ a 1
ดังนั้นเราจึงวางสาขา:
\ / 0 1 \ / 1 \ / 1
หรือเป็นอาร์เรย์ {{1, {1, 0, {1}}}}
ทำซ้ำขั้นตอนนี้เราจะได้รับต้นไม้ต่อไปนี้หลังจากหลักที่ 8:
0 0 \ / 0 1 \ / 1 0 \ / 1
หรือเป็นอาร์เรย์ {{1, {1, 0, {1, 0, 0}}, 0}}
สำหรับตัวเลขที่เหลือเราวาดต้นไม้มากขึ้น:
เลข 9 หลักคือ a 0
ดังนั้นเราจึงวางใบไม้ (aww มันเป็นหน่ออ่อน!)
0 0 \ / 0 1 \ / 1 0 \ / 1 0
หรือเป็นอาร์เรย์ {{1, {1, 0, {1, 0, 0}}, 0}, 0}
เมื่อเราใช้ตัวเลขทั้งหมดเราจะพบสิ่งนี้:
0 0 \ / 0 1 \ / 1 0 0 \ / \ / 1 0 1
หรือเป็นอาร์เรย์ {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0}}
มันดูแปลก ๆ ดังนั้นเราจึงวางเลขศูนย์เพื่อทำให้ต้นไม้สมบูรณ์:
0 0 \ / 0 1 \ / 1 0 0 0 \ / \ / 1 0 1
หรือเป็นอาร์เรย์ {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0, 0}}
โปรดทราบว่าการทำให้อาร์เรย์แบนราบทำให้ตัวเลขดั้งเดิมเป็นเลขฐานสอง แต่มีค่าเป็นศูนย์
เกณฑ์
- ผลลัพธ์จะต้องแสดงการแยกของต้นไม้และกิ่งอย่างชัดเจน (หากไม่ใช่อาเรย์ซ้อนกันโปรดอธิบายรูปแบบผลลัพธ์ของคุณ)
- การแยกตัวเลขทั้งหมดออกจากผลลัพธ์จะต้องเหมือนกับการแทนค่าแบบไบนารี่ของอินพุต (โดยมีศูนย์ padded จากกระบวนการข้างต้น)
กรณีทดสอบ
เอาท์พุทอาจแตกต่างกันตราบเท่าที่มันเป็นไปตามเกณฑ์
0 -> {0} 1 -> {{1, 0, 0}} 44 -> {{1, 0, {1, {1, 0, 0}, 0}}} 63 -> {{1, {1, {1, {1, {1, {1, 0, 0}, 0}, 0}, 0}, 0}, 0}, 0} 404 -> {{1, {1, 0, 0}, {1, 0, {1, 0, 0}}}}} 1337 -> {{1, 0, {1, 0, 0}}, {1, {1, {1, 0, 0}, {1, 0, 0}}, 0}}
เกณฑ์การให้คะแนน
นี่คือโค้ดกอล์ฟดังนั้นไบต์ที่ต่ำที่สุดจึงชนะ!