ท้าทาย
กำหนดอินพุตจำนวนเต็มในฐาน 10 สร้างการแสดงสำหรับฟอเรสต์ไบนารีที่สอดคล้องกับอินพุต การเป็นตัวแทนรวมถึง แต่ไม่ จำกัด เพียงอาร์เรย์และสตริงที่ซ้อนกัน
อย่างไร?
แปลงอินพุตเป็นไบนารี 1s เป็นตัวแทนของสาขาและ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}}
เกณฑ์การให้คะแนน
นี่คือโค้ดกอล์ฟดังนั้นไบต์ที่ต่ำที่สุดจึงชนะ!