เขียนโปรแกรมที่เล็กที่สุดที่คุณสามารถสร้างเลียนแบบแฟร็กทัลได้ คุณอาจใช้วิธีการใด ๆ ที่คุณรู้สึกว่าสร้างผลลัพธ์เช่นเดียวกับกฎด้านล่าง คุณไม่จำเป็นต้องใช้ความคิดใด ๆ จากวิธีการที่แนะนำ!
โปรแกรมของคุณจะรับสองอินพุตเป็นคนแรกที่กำหนดรูปแบบในรูปแบบที่074
ทำจากตัวเลขสามหลักจาก 0 ถึง 7 อินพุตที่สองจะกำหนดขนาด3
จะเป็น 8x8 4
จะเป็น 16x16 และอื่น ๆ (2 ^ n) โปรแกรมของคุณจะต้องแสดงผลลัพธ์ที่ถูกต้องสำหรับทุกขนาดตั้งแต่ 0 (1x1) ถึงอย่างน้อย 5 (32x32) ถ้ามันสร้างผลลัพธ์ใด ๆ สำหรับตัวเลขที่สูงกว่ามันจะต้องถูกต้องนั่นคือมันจะต้องสร้างผลลัพธ์ที่ถูกต้องจนถึงขนาดที่กำหนด แต่จะไม่สร้างผลลัพธ์ที่เกินขนาดนั้นถ้ามันผิด คุณอาจสันนิษฐานว่าขนาดสูงสุด 15 (32768x32768) เนื่องจากเป็นขนาดที่บ้าสำหรับศิลปะ ASCII (1GB)!
รูปแบบ 8x8 จะมีลักษณะดังนี้ (กฎ160
) ซ้ายสุดหลักจะเป็นบล็อกA
, กลางหลัก (ไม่คิดหยาบคายโปรด!) สำหรับบล็อกและหลักขวาสุดสำหรับบล็อกB
C
ในการสร้างเศษส่วนให้ลดขนาดลงครึ่งหนึ่งในทั้งสองมิติและใช้กฎการหมุน / การมิร์เรอร์สำหรับบล็อก หากต้องการลดขนาดรูปแบบให้แบ่งเป็นเท่า ๆ กันในพื้นที่ 2x2 จะมี 3 ตัวอักษรที่มองเห็นได้หรือไม่มีในแต่ละพื้นที่ หากมีตัวอักษรที่มองเห็นได้ให้วางอักขระไว้ในตำแหน่งที่เหมาะสมในบล็อกขนาดเล็กมิฉะนั้นให้เว้นวรรค กฎ0
- 3
ไม่ใช่มิร์เรอร์, กฎ4
- 7
ถูกมิร์เรอร์ กฎ0
และ4
ไม่หมุน1
และ5
หมุนตามเข็มนาฬิกา 90 องศา2
และ6
จะหมุน 180 องศา3
และ7
หมุนตามเข็มนาฬิกา 270 องศา ต่อสามบล็อกเข้าด้วยกันตามลำดับที่แสดงA
ในมุมซ้ายบนB
ล่างซ้ายและC
ล่างขวา
AAA
AA A
AA
A
BBB CC
B BBC
BBCCC
B CCC
หดหมุนและทำมิเรอร์ตามหมายเลขกฎ:
0 1 2 3 4 5 6 7
---- ---- ---- ---- ---- ---- ---- ----
AA BAA CCB C C BCC AAB AA
A BB A CBB CC CC BBC A BB A
BBC CC A A BB BB A A CC CBB
BCC C AA AAB BAA AA C CCB
กฎ:
- ไม่สะท้อน, หมุน 90 องศาตามเข็มนาฬิกา
- ไม่สะท้อน, หมุน 180 องศาตามเข็มนาฬิกา
- ไม่ได้สะท้อน, หมุนตามเข็มนาฬิกา 270 องศา
- มิร์เรอร์ แต่ไม่หมุน
- มิร์เรอร์แล้วหมุน 90 องศาตามเข็มนาฬิกา
- มิร์เรอร์แล้วหมุนตามเข็มนาฬิกา 180 องศา
- มิร์เรอร์แล้วหมุนตามเข็มนาฬิกา 270 องศา
- กฎ 0: ไม่ทำมิเรอร์, ไม่หมุน
การทำมิเรอร์จะทำก่อนเสมอและทำในแนวทแยงมุมผ่านมุมที่ว่างเช่นกฎ 0 กับกฎ 4:
0 4
---- ----
AA / C /
A / CC/
BBC BB A
/BCC /BAA
เฉพาะกฎ1
, 6
และ0
ถูกนำมาใช้ในรูปแบบดังกล่าวข้างต้นในลำดับที่ หลังจากการแปลงถูกนำไปใช้และบล็อกที่เย็บเข้าด้วยกันมันจะมีลักษณะเหมือนด้านล่างยกเว้นฉันเว้นระยะห่างแต่ละบล็อกจากกันโดยหนึ่งช่องว่าง รหัสของคุณจะไม่มีพื้นที่พิเศษนี้ หากคุณเปรียบเทียบกับภาพ "ผู้ปกครอง" คุณจะเห็นว่ามันมีตัวอักษรที่มองเห็นได้ในตำแหน่งเดียวกัน
BAA
BB A
CC
C
AAB AA
A BB A
CC BBC
C BCC
อีกวิธีหนึ่งในการสร้างภาพโดยไม่ย่อขนาดมีดังนี้: เริ่มต้นด้วยอักขระหนึ่งตัว:
X
ใช้การแปลงสำหรับแต่ละบล็อกสามบล็อก (ไม่มีเนื่องจากเป็นอักขระเดียวเท่านั้น) และต่อบล็อกเข้าด้วยกัน:
X
XX
ใช้การแปลงสำหรับแต่ละช่วงสามบล็อกอีกครั้ง:
1
--
XX
X
6 0
-- --
XX X
X XX
เย็บเข้าด้วยกัน:
XX
X
XXX
XXX
ใช้การแปลงสำหรับแต่ละช่วงสามบล็อกอีกครั้ง:
1
----
XXX
XX X
XX
X
6 0
---- ----
XXX XX
X XX X
XX XXX
X XXX
เย็บเข้าด้วยกัน:
XXX
XX X
XX
X
XXX XX
X XXX
XXXXX
X XXX
คุณสามารถใช้อักขระหรืออักขระที่พิมพ์ได้ (0x21 - 0x7E) สำหรับส่วนที่มองเห็นได้ของลวดลาย แต่เฉพาะอักขระเว้นวรรค (0x20) สำหรับช่องว่าง อนุญาตให้ใช้ช่องว่างต่อท้ายได้ แต่ต้องไม่มีช่องว่างด้านนอกจัตุรัสทั้งหมด (เช่นสำหรับ 8x8 ตารางไม่สามารถมีอักขระผ่านคอลัมน์ 8 ได้)
มีกฎแตกต่างกัน 512 กฎ แต่บางกฎก็มีรูปแบบเดียวกัน รูปแบบใด ๆ ที่มีเฉพาะ0
และ4
จะสร้างสามเหลี่ยม Sierpinski (8 กฎที่แตกต่างกัน)
คุณสามารถเลือกที่จะโพสต์รูปแบบที่คุณชื่นชอบและกฎที่สร้าง หากคุณตรวจสอบให้แน่ใจว่าขนาดอย่างน้อย 3 (8x8) เพื่อแยกความแตกต่างจากกฎที่คล้ายกัน