ภาพรวม
เขียนโปรแกรมที่พิมพ์รูปแบบแฟร็กทัลแบบง่ายโดยให้บิตเป็นรูปแบบการเข้ารหัสแฟร็กทัลรวมถึงตัวประกอบสเกลต่อรุ่นของเศษส่วนและจำนวนรุ่น
คำอธิบาย
นี่คือตัวแทน ASCII ของSierpinski Carpet :
รุ่น 0:
#
รุ่นที่ 1:
# # #
# #
# # #
รุ่นที่ 2:
# # # # # # # # #
# # # # # #
# # # # # # # # #
# # # # # #
# # # #
# # # # # #
# # # # # # # # #
# # # # # #
# # # # # # # # #
การสร้าง n + 1 ของพรม ASCII Sierpinski ประกอบด้วยตาราง 3x3 ที่ประกอบด้วย 8 รุ่นของสำเนา n โดยที่องค์ประกอบกลางของตารางหายไป
ดังนั้นเนื่องจากมันถูกกำหนดโดยใช้กริด 3x3 และเพิ่มความกว้างและความสูงให้ใหญ่ขึ้น 3 เท่าในแต่ละรุ่นเราสามารถพูดได้ว่ามันมีสเกลแฟกเตอร์ที่ 3
เราสามารถกำหนดรูปแบบบิตสำหรับพรม Sierpinski โดยกำหนดหมายเลของค์ประกอบในตาราง 3x3 จาก 0 ถึง 8, จากบนลงล่าง, จากซ้ายไปขวา, และตั้งค่าบิตที่สอดคล้องกันของจำนวนเต็มถ้า generation n + 1 มี สำเนารุ่นที่ตำแหน่งกริดนั้น:
bit: place value: bit pattern: bit value:
0 1 2 1 2 4 1 1 1 1 2 4
3 4 5 8 16 32 1 0 1 8 0 32
6 7 8 64 128 256 1 1 1 64 128 256
integer value = 1 + 2 + 4 + 8 + 32 + 64 + 128 + 256 = 495
สำหรับสเกลแฟคเตอร์ที่ 2 รูปแบบบิตจะถูกจัดเรียงดังนี้:
0 1
2 3
และอื่น ๆ
งานของคุณคือการเขียนโปรแกรมที่ยอมรับรูปแบบบิตในรูปแบบนี้ปัจจัยขนาด (เช่น 3 สำหรับพรม Sierpinski) และหมายเลขรุ่นและส่งออกเศษส่วน ASCII
อินพุต
โปรแกรมของคุณควรยอมรับจำนวนเต็ม 3 จำนวนตามลำดับต่อไปนี้: รูปแบบบิต, ตัวคูณสเกล (ตั้งแต่ 2 ถึง 5, รวม) และจำนวนการสร้าง (ตั้งแต่ 0 ถึง 5, รวม)
คุณไม่จำเป็นต้องทำการตรวจสอบอินพุตใด ๆ กับค่าเหล่านี้และมันก็ใช้ได้อย่างสมบูรณ์แบบหากโปรแกรมทำงานสำหรับค่าที่มากกว่าช่วงที่ระบุ
อินพุตสามารถส่งผ่านในรูปแบบใดก็ได้ (tuples, รายการจุลภาค / เว้นวรรค, ฯลฯ )
เอาท์พุต
โปรแกรมควรส่งออกเศษส่วนที่ประกอบด้วย#
อักขระตามด้วยช่องว่างในตำแหน่งที่กำหนดเศษส่วนสองช่องว่างที่ไม่อยู่และอักขระขึ้นบรรทัดใหม่ที่ท้ายบรรทัดแต่ละบรรทัดไม่ว่าจะพิมพ์ออกหรือคืนสตริง จากฟังก์ชั่น
ตัวอย่าง
การป้อนข้อมูล:
495,3,3
เอาท์พุท (Sierpinski Carpet generation 3):
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
การป้อนข้อมูล:
7,2,5
เอาท์พุท ( สามเหลี่ยม Sierpinski ):
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # #
# # # #
# # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # #
# # # #
# # # # # # # #
# # # #
# # # #
# #
# # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # #
# # # #
# # # # # # # #
# # # #
# # # #
# #
# # # # # # # #
# # # #
# # # #
# #
# # # #
# #
# #
#
การป้อนข้อมูล:
325,3,3
เอาท์พุท ( ฝุ่นคันทอร์ ):
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # # # # # # #
อินพุต
186,3,3
เอาท์พุท ( เศษส่วน Vicsek ):
#
# # #
#
# # #
# # # # # # # # #
# # #
#
# # #
#
# # #
# # # # # # # # #
# # #
# # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # #
# # #
# # # # # # # # #
# # #
#
# # #
#
# # #
# # # # # # # # #
# # #
#
# # #
#
การป้อนข้อมูล:
279,3,3
เอาท์พุท (ตัวอย่างของเศษส่วนอสมมาตร):
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # #
# # #
# # # # # # # # #
# # #
# # #
# # # # # # # # #
# # #
# # #
# # #
#
#
# # #
#
#
# # # # # # # # #
# # #
# # #
# # #
#
#
# # #
#
#
เป็นต้น
หมายเหตุ:
- นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ
- โปรแกรมของคุณสามารถเป็นแบบสแตนด์อโลนหรือฟังก์ชั่นที่ถูกเรียกด้วยพารามิเตอร์อินพุต 3 ตัวและส่งคืน (หรือพิมพ์) สตริง
- Generation 0 ถูกกำหนดเป็น
#
(#
ตามด้วยช่องว่าง) แม้กระทั่งสำหรับรูปแบบบิตที่ 0 - การขึ้นบรรทัดใหม่ของบรรทัดสุดท้ายเป็นทางเลือก แต่อนุญาตให้ใช้ซึ่งเท่ากับจำนวนช่องว่างสีขาวต่อท้ายในแต่ละบรรทัด
279,3,3
?
"##"
"# "
ฉันเห็นว่ามีช่องว่างท้ายท้ายบรรทัดรวมอยู่ในตัวอย่างของคุณจำเป็นต้องใช้หรือไม่ . ตามกฎสุดท้ายฉันจะถือว่าเป็นตัวเลือก แต่ความจริงที่ว่าคุณต้องการพื้นที่ต่อท้ายสำหรับการสร้าง 0 ทำให้ฉันสงสัย นอกจากนี้ฉันคิดว่าคุณควรระบุช่องว่างสูงสุดและบรรทัดใหม่ (คุณมีพหูพจน์) ได้รับอนุญาต เป็นตัวอย่างที่รุนแรงฉันสามารถเริ่มต้นด้วยอาร์เรย์จำนวน 5 ^ 6 = 15625 บรรทัดที่มีช่องว่าง 2 * 5 ^ 6 แล้วแทนที่#
s ในกรณีที่ป้อนข้อมูลส่วนใหญ่เป็นพื้นที่ว่างที่ไม่ได้ใช้จำนวนมาก