ความซับซ้อนง่าย ๆ


17

เอาท์พุต

                  # # # # ###### ## #         
                  ##### ####### # # ##        
                #### ## ## # ### ########        
                # # # ###### ### # #        
                # ### ##### ##### # # #        
                ####### ### # ### # ## ####        
                ## # #### # ####### ##          
                 # ###### ##### # # #          
                ## # # # ######  
                 # #### ####### #  
                 ####### #### ## # ###
                ### # # # # ###### 
                    # # # ######### #     
                    #### ####### ### # ##    
                    ## ## # ########    
                     # # ####### # #    
    # ###### ## # #                     
    ####### # # ## ##                    
    ## # ### ####### ####                    
     # ##### ### # # # #                    
 ##### # # # # ####                
### # ## #### ########                 
  # ####### ## ## #                 
  ##### # # # # ##                
          # # ###### ##### ## #                 
          ## ####### # ### # ###                
        #### ## # ### # ### ########                
        # # ########## ### # #                
        # # ### ##### # # # #                
        ####### ### # ## ## ####                
        ## # # ####### #### ##                  
         # ####### # # # # #                  
                                          #                     
                                          ##                    
                                        ####                    
                                        # #                    
                                        # # ###                
                                        #######                 
                                        ## #                 
                                         # ##                
                                 ##### ## #                 
                                ### # # ##                
                                  # ### #######                
                                  ##### ### # #                
                                  # # #                
                                  ## ####                
                                #### ##                  
                                # # #                  
                                  # # # # ######  
                                  ##### ####### #  
                                #### ## ## # ###
                                # # # ###### 
                                # ### ##### ##### #     
                                ####### ### # ### # ##    
                                ## # #### # #######    
                                 # ###### ##### # #    
                                ## # #     
                                 # ## ##    
                                 ####### ####    
                                ### # # # #    
                                    # # # ####
                                    #### ####### 
                                    ## ## # 
                                     # # ##

อนุญาตให้ใช้ช่องว่างต่อท้าย ทางออกที่สั้นที่สุดชนะ

hint0

hint1:

hint1


ขอบคุณ @Tahg สำหรับการแก้ไขคำใบ้ 1


8
@ngn เอาท์พุทความท้าทายเท่านั้นโดยไม่มีคำอธิบายใด ๆ เกี่ยวกับวิธีการที่ข้อมูลที่เกิดขึ้นมักจะขมวดคิ้วเมื่อ (ดูcodegolf.stackexchange.com/q/126037 ) เพราะคำตอบแรกมีแนวโน้มที่จะระเบิดส่วน "ลึกลับ"
Uriel

16
โดยส่วนตัวแล้วฉันไม่ชอบความท้าทายเช่นนี้ซึ่งการค้นหากฎ / สูตรอาหารเป็นส่วนหนึ่งของงาน นอกจากนี้เมื่อมีคนพบมันคนอื่น ๆ ก็สามารถติดตามมันได้ดังนั้นทำไมไม่โพสต์ในตอนแรก?
Luis Mendo

11
@LuisMendo มันเป็นเรื่องที่น่าสนใจ โค้ดกอล์ฟในรูปแบบที่บริสุทธิ์ที่สุดนั้นเกี่ยวกับ "การใช้วิธีแก้ปัญหาที่รู้จักกันอย่างชัดเจน" จิ๊กซอว์ในรูปแบบที่บริสุทธิ์นั้นเกี่ยวกับการหาทางออก - การใช้งานนั้นไม่เกี่ยวข้องหรือถือว่าเป็นงานยุ่ง ทางเลือกหนึ่งคือการโพสต์ "เคล็ดลับ" ในสปอยเลอร์ วิธีนี้ทำให้นักกอล์ฟรหัสบริสุทธิ์ที่จะโจมตีปัญหาเป็นความท้าทายด้านการเล่นกอล์ฟและผู้ที่ชื่นชอบทั้งความท้าทายของกอล์ฟและปริศนาสามารถหลีกเลี่ยงการค้นหาและแก้ไขทั้งสองอย่าง
โจนาห์

5
ฉันคิดว่าส่วน "ลึกลับ" เป็นสิ่งที่ฉันสามารถเห็นได้มากขึ้น แม้ว่าหนึ่งคำตอบอาจพบกลอุบายได้ แต่ส่วนที่เหลือก็ยังคงเป็นความท้าทายของรหัส - กอล์ฟ ... และมันก็เป็นความท้าทายที่ดีสำหรับผู้ที่ต้องการค้นหารูปแบบในตอนแรก
สิ้นเชิง

3
@ H.PWiz ฉันไม่แน่ใจว่า +26 / -7 นั้น "ได้รับการตอบรับดี" จริงๆ ดูเหมือนว่า "ได้รับไม่ดี แต่สามารถตี HNQ ได้เร็วพอที่จะได้รับคะแนนเบ้"
ปีเตอร์เทย์เลอร์

คำตอบ:


11

SOGL V0.12 , 17 16 14 ไบต์

 #6{³IIč▓┼;I+§

ลองที่นี่!

ในการปรับปรุงในภายหลังč▓สามารถลบออกได้ 12 ไบต์ - ซึ่งแปลง ToS จากอาร์เรย์ของอักขระเป็นสตริงหลายบรรทัดไปยังอาร์เรย์ของสตริง - [["#","#"],[" ","#"]] -> ["##"," #"]- เนื่องจาก- - ผนวกในแนวนอน - ไม่ได้ดีกับอาร์เรย์ของอักขระ - ซึ่งIสร้างเพราะมันใช้สำหรับการหมุนอาร์เรย์ด้วย ใน SOGL อาร์เรย์ของตัวอักขระควรเป็น = อาร์เรย์ของสตริง แต่หลายสิ่งยังไม่รองรับ

คำอธิบาย:

 #            push "#"
  6{          6 times do
    ³           create 3 total copies of ToS
     II         rotate clockwise twice
       č▓       normalize as explained above
         ┼      append horizontally
          ;     get the 3rd copy ontop
           I    rotate clockwise
            +   append vertically
             §  reverse horizontally

1
รอสิ่งนี้ทำงานอย่างไร
Conor O'Brien

@ ConorO'Brien เพิ่งเพิ่มคำอธิบาย: p
dzaima

โอ๋ `` `` ``
Conor O'Brien

22

JavaScript (ES6), 233 217 213 198 182 170 163 122 ไบต์

f=_=>[...Array(64)].map((_,x,a)=>a.map(g=(i=(n=64,x),j)=>(n>>=1)?i&n?j&n?g(j,i):` `:j&n?g(i,~j):g(~i,j):`#`).join``).join`
`
document.write(`<pre>${f()}</pre>`)

แก้ไข: บันทึกแล้ว14 18 ไบต์ขอบคุณ @Shaggy บันทึกแล้ว 3 ไบต์ขอบคุณ @ngn บันทึกอีก 12 ไบต์ด้วยการทำงานร่วมกันทั้งสองอย่าง บันทึกแล้ว 41 ไบต์โดยการขโมยการสังเกตของ @ user202729 ว่าไตรมาสใช้การสะท้อนมากกว่าการหมุน Ungolfed:

function f() {
    var s = '';
    for (var i = 0; i < 64; i++) {
        for (var j = 0; j < 64; j++) {
            var x = i, y = j, c = '#'; // Default to #
            // Each non-blank quadrant maps to to the original
            // image by doubling and a reflection. Repeat
            // this six times unless we hit the blank quadrant.
            for (var n = 0; n < 6; n++) {
                if (x >= 32) {
                    if (y >= 32) {
                        // Bottom right quarter is a diagonal reflection
                        var t = x - 32;
                        x = y - 32;
                        y = t;
                    } else {
                        // Bottom left quarter is blank
                        c = ' ';
                        break;
                    }
                } else {
                    if (y >= 32) {
                       // Top right corner is a horizontal reflection
                       y = 63 - y;
                    } else {
                       // Top left corner is a vertical reflection
                       x = 31 - x;
                    }
                }
                x *= 2;
                y *= 2;
            }
            s += c;
        }
        s += '\n';
    }
    return s;
}

คุณจำเป็นต้องนับที่f=นี่หรือไม่? ทำได้ดีมากโดยวิธีการ
ขนปุย


1
คุณไม่ต้องการf=จำนวนไบต์ แต่ข้อมูลโค้ดไม่สามารถทำงานได้หากไม่มี

1
@Neil โอกาสใด ๆ ที่คุณสามารถเพิ่มคำอธิบายหรือเวอร์ชันที่ไม่ได้อัปโหลดได้?
โจนาห์

1
@Jonah ฉันหวังว่าคุณจะพบว่ามีประโยชน์
Neil

11

โลโก้, 375 341 297 295 278 + 3 ไบต์

เพิ่ม 3 ไบต์เนื่องจากการ-pตั้งค่าสถานะซึ่งเปิดใช้งานโหมดเปอร์สเปคทีฟตามค่าเริ่มต้นดังนั้นไม่จำเป็นต้องเรียกใช้perspectiveคำสั่งบันทึกโดยรวม 9 ไบต์

ใช้ FMSLogo บน Windows ที่มีรูปแบบบรรทัดใหม่ Unix (LF) (FMSLogo มีปัญหากับการแยกรูปแบบ CR newline)

to R
rt 90
end
to g :w :l
R fd 2*:l R bk :l up 180
run :w
R run :w
fd 2*:l R bk :l run :w
fd 2*:l up 180
end
to h
pu
ask -1[setxyz 0 0 870]g[g[g[g[g[g[rt 45 fd .7 pd fd 0 pu bk .7 lt 45]1]2]4]8]16]32
repeat 64[sety 64-# repeat 64[setx #-1 type if pixel=[0 0 0]""#["\ ]](pr)]
end

น่าเสียดายที่ไม่มี "ลองออนไลน์!" ลิงก์เพราะฉันไม่พบโหมดมุมมองการสนับสนุนล่ามออนไลน์

แนวคิด: วาดรูปภาพของภาพจากนั้นดึงพิกเซลจากรูปภาพและพิมพ์เป็นเอาต์พุต

รูปภาพแยกส่วนที่ทำซ้ำง่าย ๆ :

.

ใช้ประโยชน์จากคำใบ้ด้านบน อย่างไรก็ตามเนื่องจากโลโก้ไม่รองรับการสะท้อนเราจึงสามารถจำลองได้โดยเข้าสู่perspectiveโหมด3D ( ) และหมุนเต่า 180 องศารอบแกนที่ขนานกับหน้าจอคอมพิวเตอร์

นี่เป็นการกำหนดฟังก์ชั่นตัวช่วยgซึ่งได้รับพารามิเตอร์ 2 ตัวl(ความยาวด้านภาพ) และw(ขั้นตอนที่ใช้ในการวาดภาพ), วาดภาพสำเนาที่สะท้อนออกมาจำนวน 3 ชุด (ดูคำใบ้ในคำถาม) ขั้นตอนhดำเนินการตามขั้นตอนหลัก


คุณอาจเว้นช่องว่างเช่น90 fd-> 90fdและบันทึกไว้สองสามไบต์
Jonathan Frech

@JonathanFrech แต่น่าเสียดายที่ FMSLogo ไม่สนับสนุนสิ่งนั้น
user202729

ทำไม papert ให้การสนับสนุน ?
Jonathan Frech

2
นี่เป็นคำตอบเดียวที่ใช้รูปแบบจริงมากกว่าการบรรจุบิตหรือไม่
โจนาห์

2
@Jonah วิธีการแก้ปัญหา JS เป็นครั้งแรกเพื่อใช้ประโยชน์จากรูปแบบแม้ว่ามันจะทำในวิธีที่น่าสนใจ - ด้วยการคำนวณทางคณิตศาสตร์แบบแยกส่วนและบิตการดำเนินงานแทนการจัดเรียงเมทริกซ์ โซลูชันโลโก้นี้น่าสนใจและไม่เหมือนใครด้วยวิธีการอ่านพิกเซล ฉันไม่รู้โลโก้เพียงพอที่จะเข้าใจรหัส แต่ตัดสินโดยคำอธิบายมันซ้ำรูปแบบบางอย่างโดยไม่ต้องลงไปที่โครงสร้างของเศษส่วน (ซึ่งฉันได้แจกในคำแนะนำ 1)
NGN



8

Python 2 , 205 195 ... 145 144 142 144 ไบต์

g=lambda n,i,j,*_:g(n/2,*[~i,j,i,~j][2*(j&n>0)-(i&n>0):])if n*(i&n<=j&n)else'# '[i&n>0]
r=range(64)
for j in r:print''.join(g(32,j,i)for i in r)

ลองออนไลน์!

แรงบันดาลใจจากนีลตอบ JS


n>>1n/=2เป็น
Jonathan Frech

aถูกกำหนดและใช้งานครั้งเดียว การแทนที่การอ้างอิงด้วยค่าสามารถบันทึกสี่ไบต์
Jonathan Frech

ฉันมองข้ามการทำให้เข้าใจง่ายที่มีประโยชน์ - แทนที่จะทำทุกอย่างโดยใช้การหมุนฉันควรใช้การสะท้อนกลับแทน มันช่วยฉัน 41 ไบต์ในคำตอบของฉัน!
Neil

ฉันคิดว่าคุณสามารถบันทึกไบต์ที่สองโดยการลดความซับซ้อนของ[...[x],...[x]][z]การเลือก
Jonathan Frech

1
@tallyallyhuman พอใช้
TFeld

7

Haskell, 126 125 113 106 103 ไบต์

e=[]:e
z=zipWith
r=reverse
m s=z(++)(r s++map(' '<$)s)$map r s++foldr(z(:))e s
unlines$m$m$m$m$m$m["#"]

การใช้งานโดยตรงของ hint1 ในสปอยเลอร์

ฟังก์ชันmสร้างการวนซ้ำครั้งถัดไป ฟังก์ชั่นหลักใช้m6 ครั้ง รายละเอียดไปที่m:

m s=                          -- s is the current pattern
     zipWith(++)              -- concatenate pairwise the lines of
                (r s)++       --    the lines of s in reverse order, followed by
                map(' '<$)s   --    each char in s replaced by a space
                              -- and
                map r s++     --    each line of s reversed, followed by
                foldr ... s   --    the transposition of s


e=[]:e;foldr(zipWith(:))e     -- this right fold transposes a matrix

แก้ไข: @ngn บันทึกไบต์และ @Laikoni อีก 3. ขอบคุณ!


n$n$n$n$n$n["#"]สั้นกว่าiterate n["#"]!!6:)
n

@ngn: ด่างดี ขอบคุณมาก!
nimi

คุณสามารถใช้e=[]:e;foldr(zipWith(:))eแทนแล้วร่นimport Data.List;transpose zipWith
Laikoni

6

Java 7, 259 238 237 200 ไบต์

void f(){char[][]o={{35}},n;for(int s=1,x,y;s<64;s*=2,o=n)for(n=new char[64][64],x=s;x-->0;)for(y=0;y<s;n[s+y++][x]=32)n[s+~y][x]=n[y][2*s+~x]=n[s+x][s+y]=o[y][x];for(char[]b:o)System.out.println(b);}

บันทึก 2 ไบต์โดยลบ {} บน x loop ขอบคุณ ngn
บันทึก 19 ไบต์จากการเปลี่ยนแปลงการมอบหมายต่างๆขอบคุณ Jonathan
Saved 24 ไบต์สำหรับการพิมพ์ vs return (ไม่ทราบว่าได้รับอนุญาต) และ
Saved 13 ไบต์สำหรับการเปลี่ยนแปลงลูป ขอบคุณ Nevay

ลองออนไลน์!

ความท้าทายครั้งแรกของฉันและฉันคิดว่าน่านับถือสำหรับ Java ใช้คำใบ้ 1 (ซึ่งผิด btw แต่ฉันไม่สามารถเขียนความคิดเห็นได้) มันอาจจะสามารถตีกอล์ฟต่อไปได้รหัสผ่านนี้เป็นแบบที่ไม่มีการพิมพ์สวย


ฉันไม่แน่ใจว่ามันอาจจะเป็นเพราะความแตกต่างของรุ่น แต่ฉันทดสอบรหัสของคุณในTIO โดยใช้ Java 8และพิมพ์ตัวอักษร null แทนช่องว่าง
Jonathan Frech

มันแน่ใจแล้วขอบคุณที่สังเกต เห็นได้ชัดว่า Java มีความสุขมากกับการแสดงค่า Null เป็นช่องว่างใน Strings
Tahg

คุณสามารถบันทึกไบต์โดยการลบs=1จากห่วงสำหรับคุณและแทนที่ด้วยint s,t,x,y; int s=1,t,x,y;
Jonathan Frech

1
n[s-1-y][x]=o[y][x];n[y][t-1-x]=o[y][x];n[s-1-y][x]=n[y][t-1-x]=o[y][x];->
Jonathan Frech

2
เมทริกซ์การเปลี่ยนแปลงที่เหมาะสมคือ [[V, H], [_ T]] (ทั้งที่หรือมีบางความแตกต่างที่ลึกซึ้งในขั้นตอนวิธีการของคุณ แต่นั่นคือสิ่งที่ฉันต้องการ)
Tahg


3

Python 2, 586 ไบต์

import zlib,base64 as b
print zlib.decompress(b.b64decode('eJyVVlsOwzAI++8pJuX+d1zXDGLAUKi0pUp52ATcfj7+Wni3dF2/677ZO1dw+z/Zd3+rJU4SdkVHMcYQS9OuJVGio4N61p31+TGoQkco6eqoU6gSWdBJRrQhjhIdvLQ6YhNrqrEtUsu8yEbjmRqUWXlgYbl5EHfLC7cDQl4sxxAhO4wUv7fFPTx22sUWqOeEJ544Z3vn9FPU+ZmdHtCak6Fk3hfCx0FkOC8DF4YvmgoFMnCEwW2cDBkzftoiGy4GZaNhM8VYSl3YMEV7ctxsjLQKRCHZ3IB6+ATZpKSKmEyGrqZvEHY8lEQBWf8zbuAg0eypWG6nRqTLIzM+NPQa2faN89FlxhMY2vcTKDP7579fl0rmIpJ+grTvSyis798ghb4vM0CuVgbM1SFdvukjnFnfR1Gt3vAEngd6lGrIDdfkDU/ARwl+ecMHf5SzIzct8KhsqHANZ0FqFbpXdad5qH2DzOHJIHGM2pz26oug9i2+EBpX+cXQCpBA7/tne01lLb4wviHjtJE='))

ลองออนไลน์


Python 2, 1032 1025 ไบต์

ฉันชอบอันนี้มากกว่านี้ แต่มันจะนานกว่ามาก มันอาจจะลงสนาม แต่ไม่จำเป็นต้องทำเช่นนั้น วิธีการของผู้บริหารอย่างเป็นทางการนั้นสั้นกว่ามาก

-7 ขอบคุณ Jonathan Frech

print''.join(' '*int(x)if'/'<x<'@'else("#"*(ord(x)-64),"\n")[x<"#"]for x in'99A9A2A4A2A1E2B4A9!99B8D4G2A3A4B8!88D8B6B4A2C1G8!88A2A9A7A4E1C1A2A8!88A2A1C1E3E4A9A2A8!88G1C2A2C2A4B8D8!88B4A3A2C2A2G8B55!98A4B2E3E1A2A9A55!88B4A559A9A2A1E2!98A4B99B8G2A2!98G88D8B4A2C!88C1A2A88A2A9A4E1!992A2A88A2A1C1E4A5!992D88G1C2A4B4!992B99B4A3A2G4!777A559A4B2E1A2A4!4A2A1E2B4A559A777!4G2A3A4B99B992!4B4A2C1G88D992!5A4E1C1A2A88A2A569!1E4A9A2A88A2A1C88!C2A4B8D88G98!2A2G8B99B4A89!2E1A2A9A559A4B88!55A9A2A1E3E2B4A98!55B8G2A2C2A3A4B88!8D8B4A2C2A2C1G88!8A2A9A4E3E1C1A2A88!8A2A1C1E4A7A9A2A88!8G1C2A4B6B8D88!8B4A3A2G4D8B99!9A4B2E1A2A4A2A9A99!99996A777!99996B992!99994D299!99994A2A992!99994A2A1C88!99994G98!99994B4A98!99995A4B88!9996E2B4A89!9995C2A3A4B88!9997A2C1G88!9997E1C1A2A88!9997A9A2A88!9997B8D88!9995D8B99!9995A2A9A99!9997A9A2A4A2A1E2!9997B8D4G2A2!9995D8B6B4A2C!9995A2A9A7A4E1!9995A2A1C1E3E4A5!9995G1C2A2C2A4B4!9995B4A3A2C2A2G4!9996A4B2E3E1A2A4!9995B4A559A5!9996A4B99B4!9996G88D4!9995C1A2A88A2A4!9999A2A88A2A1C!9999D88G1!9999B99B4A1!99991A559A4B')

ลองออนไลน์


คำถาม[t]railing spacesนี้ใช้ได้แม้ว่าโซลูชันของคุณจะเว้นช่องว่างไว้บ้าง
Jonathan Frech

การอนุญาตให้ใช้ช่องว่างต่อท้ายหมายความว่าฉันไม่จำเป็นต้องเอาท์พุท ถูกต้องไหม มันจะประหยัดไบต์ในแนวทางที่สองของฉัน ในคนแรกมันเสร็จแล้วเพราะฉันลบช่องว่างต่อท้ายในขณะที่บันทึกไฟล์ของฉัน ...
Simon

ฉันไม่ทราบแน่ชัด แต่ฉันตีความว่าเป็นการอนุญาตช่องว่างเพิ่มเติมไม่อนุญาตให้มีช่องว่างที่ขาดหายไป
Jonathan Frech

x=='!'->x<'#'
Jonathan Frech

if x.isdigit()->if"/"<x<"@"
Jonathan Frech

3

Mathematica, 112 90 ไบต์

ขอบคุณ Jonathan Frech ที่ช่วยประหยัด 2 ไบต์!

""<>Nest[{{(r=Reverse)@#,r/@#},{" "+0#,#}}~Flatten~{{1,3},{2,4}}&,{{"#"}},6]~Riffle~"
"

ลองออนไลน์! (Mathics)

ด้วยเหตุผลบางประการ Mathics จะพิมพ์ช่องว่างนำหน้าในทุกบรรทัดยกเว้นอันแรกเมื่อพิมพ์สตริงหลายบรรทัด นอกจากนี้ยัง Mathics ไม่สนับสนุนผู้ประกอบการ

คำอธิบาย:

  • {{Reverse@#,Reverse/@#},{" "+0#,#}}: เป็นตัวแทนของทั้งสองแนวนอนย้อนกลับในแนวตั้งแทนที่ - ทั้งหมด - โดย - " "และขนย้าย ( เป็นผู้ดำเนินการขนย้ายใน Mathematica) สอดคล้องกับวิธีที่แตกต่างกันในการสะท้อนหรือหมุนภาพ
  • ~Flatten~{{1,3},{2,4}} : แบนในขนาดที่เฉพาะเจาะจง
  • Nest[ ... ,{{"#"}},6]: ใช้ฟังก์ชั่นภายใน{{"#"}}6 ครั้ง
  • ~Riffle~"<literal newline character>" : Riffle อักขระขึ้นบรรทัดใหม่ระหว่างแต่ละบรรทัด
  • ""<> : เข้าร่วมสายทั้งหมดเข้าด้วยกัน

คุณสามารถกำหนดแทนที่Reverseด้วยRและกำหนดR=Reverse;เพื่อบันทึกสองไบต์
Jonathan Frech

2

C # (.NET Core) , 1016 1002 980 955 ไบต์

บันทึกแล้ว 14 ไบต์ขอบคุณ Kevin Cruijssen!
บันทึกแล้ว 47 ไบต์ขอบคุณ Jonathan Frech!

o=>{foreach(var l in new[]{35223185965568,52841249260288,0xf00c0c277f00,0x9004043ee900,0x977c7c200900,0xfee4e4300f00,0xc22727f00c00,73934616658944,0xc2000020097c,73667282210788,0x7f0000f00c27,0xe9000090043e,9895614577696,0xf0000fee430,0xc0000c227f0,4398050918032,325982355457<<21,1092065689603<<20,835235872783<<20,291765223433<<20,0x7c20090000970000,-15289957744513<<17,21955973480545<<17,68788263321667<<16,68799053409<<17,206425089091<<16,0xf00c27277f0000,618546478825<<16,650622541833<<16,0xfee430300f0000,208473439235<<18,72203117569<<18,1<<21,3<<20,15<<20,9<<20,9895936,127<<17,97<<17,67<<16,15969<<17,3829596160,662634496,16105<<16,8201<<16,806289408,4027318272,9217L<<18,537463164,806293476,4027321383,2416182334,2541517856,4276413488,3257346032,1128152720,3254779936,1124073520,2130706672,3909091472,150995095,251658494,201326786,67108931})System.Console.WriteLine(System.Convert.ToString(l,2).PadLeft(64,'0').Replace('0',' ').Replace('1','#'));}

ลองออนไลน์!


คำอธิบาย

รูปแบบของการส่งออกจะถูกเก็บไว้ในอาร์เรย์ของตัวเลข 64- บิตลงนามซึ่งเหมาะอย่างสมบูรณ์เนื่องจากแต่ละบรรทัดมีความยาว 64 ตัวอักษร พื้นที่ว่างโดยมีตัวแทน0และเป็นตัวแทนจาก#1

The numbers are then converted to their binary string, zeros are padded left until the string is 64 characters wide and then the 0 and 1 characters are replaced with   and #.

The code is stored inside a lamba function, more specifically a System.Func<string>.

Some constants in the long[] are shortened by performing some bit-shifting.


Is there not an unnecessary space in long[] n=new[]?
Jonathan Frech

@JonathanFrech Ah you are right, apparently it snuck in there somehow.
Ian H.

1
You would save 4 bytes by not having to specify the padding character.
Neil

1
Well, if the trailing l is not needed, you can probably save even more bytes.
Jonathan Frech

1
Looks like the bottom of this is bugged.
Shaggy

2

Charcoal, 42 bytes

#↓##FE⁵X²ι«‖↑J⁻×³ι¹±⁰ψ⟲OO⁴ײι⟲CJ⁰±φT×⁴ι×⁴ι

Try it online! Link is to verbose version of code. Would be 25 bytes if this worked:

#FE⁷X²ι«‖↑⟲C→⁴⟲CJ⁰±φTιι

Explanation:

#↓##

Manually generate the first recursion, since it's not possible to rotate around (1, 0.5). (Such a rotation would only make sense if it was 180°.)

FE⁵X²ι«

Loop over the first five powers of 2 (1, 2, 4, 8, 16).

‖↑

Reflect the canvas vertically. This completes the top left quarter of the result.

J⁻×³ι¹±⁰ψ⟲OO⁴ײι

Rotate the canvas 180° around a point half-way up the right-hand side. The copy ends up in the correct position for the top right quarter of the result.

⟲C

Rotate the canvas 90° around the bottom right corner. The copy of the top right corner ends up in the correct position for the bottom right corner of the result. The copy of the top left corner is extraneous.

J⁰±φT×⁴ι×⁴ι

Trim the canvas to the size we want. The trim starts at the cursor or the top left of the canvas, whichever is bottom rightmost. The cursor is therefore sent to (0, -1000) to ensure that it doesn't interfere with the trim.




1

Perl 5, 452 bytes

451 bytes code + 1 for -p.

Packs all the data into the string, rather than stealing @Neil's correct answer.

$_=unpack"B*","\x00\x00\x20\x09\x09\x7c\xc2\x33\x00\x30\x0f\x0f\xe4\x43\x33\x00\xf0\x0c\x0c\x27\x7f\x33\x00\x90\x04\x04\x3e\xe9\x33\x00\x97\x7c\x7c\x20\x09\x33\x00\xfe\xe4\xe4\x30\x0f\x33\x00\xc2\x27\x27\xf0\x0c\x33\x00\x43\x3e\x3e\x90\x04\x33\x00\xc2\x00\x00\x20\x09\x7c\x00\x00\x43\x00\x00\x30\x0f\xe4\x00\x00\x7f\x00\x00\xf0\x0c\x27\x00\x00\xe9\x00\x00\x90\x04\x3e\x00\x00\x09\x00\x00\x97\x7c\x20\x00\x00\x0f\x00\x00\xfe\xe4\x30\x00\x00\x0c\x00\x00\xc2\x27\xf0\x00\x00\x04\x00\x00\x43\x3e\x90\x09\x7c\xc2\x00\x00\x20\x00\x00\x0f\xe4\x43\x00\x00\x30\x00\x00\x0c\x27\x7f\x00\x00\xf0\x00\x00\x04\x3e\xe9\x00\x00\x90\x00\x00\x7c\x20\x09\x00\x00\x97\x00\x00\xe4\x30\x0f\x00\x00\xfe\x00\x00\x27\xf0\x0c\x00\x00\xc2\x00\x00\x3e\x90\x04\x00\x00\x43\x33\x00\x20\x09\x7c\x7c\xc2\x33\x00\x30\x0f\xe4\xe4\x43\x33\x00\xf0\x0c\x27\x27\x7f\x33\x00\x90\x04\x3e\x3e\xe9\x33\x00\x97\x7c\x20\x20\x09\x33\x00\xfe\xe4\x30\x30\x0f\x33\x00\xc2\x27\xf0\xf0\x0c\x33\x00\x43\x3e\x90\x90\x04\x37\x00\x20\x37\x00\x30\x37\x00\xf0\x37\x00\x90\x37\x00\x97\x37\x00\xfe\x37\x00\xc2\x37\x00\x43\x36\x00\x7c\xc2\x36\x00\xe4\x43\x36\x00\x27\x7f\x36\x00\x3e\xe9\x36\x00\x20\x09\x36\x00\x30\x0f\x36\x00\xf0\x0c\x36\x00\x90\x04\x36\x00\x20\x09\x09\x7c\x34\x00\x30\x0f\x0f\xe4\x34\x00\xf0\x0c\x0c\x27\x34\x00\x90\x04\x04\x3e\x34\x00\x97\x7c\x7c\x20\x34\x00\xfe\xe4\xe4\x30\x34\x00\xc2\x27\x27\xf0\x34\x00\x43\x3e\x3e\x90\x34\x00\xc2\x00\x00\x20\x34\x00\x43\x00\x00\x30\x34\x00\x7f\x00\x00\xf0\x34\x00\xe9\x00\x00\x90\x34\x00\x09\x00\x00\x97\x34\x00\x0f\x00\x00\xfe\x34\x00\x0c\x00\x00\xc2\x34\x00\x04\x00\x00\x43"=~s/[3-9](.)/$1x$&/ger;y/01/ #/;s/.{64}/$&
/g

Reversible output from xxd for 451 byte file:

00000000: 245f 3d75 6e70 6163 6b22 422a 222c 2200  $_=unpack"B*",".
00000010: 0020 0909 7cc2 3300 300f 0fe4 4333 00f0  . ..|.3.0...C3..
00000020: 0c0c 277f 3300 9004 043e e933 0097 7c7c  ..'.3....>.3..||
00000030: 2009 3300 fee4 e430 0f33 00c2 2727 f00c   .3....0.3..''..
00000040: 3300 433e 3e90 0433 00c2 0000 2009 7c00  3.C>>..3.... .|.
00000050: 0043 0000 300f e400 007f 0000 f00c 2700  .C..0.........'.
00000060: 00e9 0000 9004 3e00 0009 0000 977c 2000  ......>......| .
00000070: 000f 0000 fee4 3000 000c 0000 c227 f000  ......0......'..
00000080: 0004 0000 433e 9009 7cc2 0000 2000 000f  ....C>..|... ...
00000090: e443 0000 3000 000c 277f 0000 f000 0004  .C..0...'.......
000000a0: 3ee9 0000 9000 007c 2009 0000 9700 00e4  >......| .......
000000b0: 300f 0000 fe00 0027 f00c 0000 c200 003e  0......'.......>
000000c0: 9004 0000 4333 0020 097c 7cc2 3300 300f  ....C3. .||.3.0.
000000d0: e4e4 4333 00f0 0c27 277f 3300 9004 3e3e  ..C3...''.3...>>
000000e0: e933 0097 7c20 2009 3300 fee4 3030 0f33  .3..|  .3...00.3
000000f0: 00c2 27f0 f00c 3300 433e 9090 0437 0020  ..'...3.C>...7. 
00000100: 3700 3037 00f0 3700 9037 0097 3700 fe37  7.07..7..7..7..7
00000110: 00c2 3700 4336 007c c236 00e4 4336 0027  ..7.C6.|.6..C6.'
00000120: 7f36 003e e936 0020 0936 0030 0f36 00f0  .6.>.6. .6.0.6..
00000130: 0c36 0090 0436 0020 0909 7c34 0030 0f0f  .6...6. ..|4.0..
00000140: e434 00f0 0c0c 2734 0090 0404 3e34 0097  .4....'4....>4..
00000150: 7c7c 2034 00fe e4e4 3034 00c2 2727 f034  || 4....04..''.4
00000160: 0043 3e3e 9034 00c2 0000 2034 0043 0000  .C>>.4.... 4.C..
00000170: 3034 007f 0000 f034 00e9 0000 9034 0009  04.....4.....4..
00000180: 0000 9734 000f 0000 fe34 000c 0000 c234  ...4.....4.....4
00000190: 0004 0000 4322 3d7e 732f 5b33 2d39 5d28  ....C"=~s/[3-9](
000001a0: 2e29 2f24 3178 2426 2f67 6572 3b79 2f30  .)/$1x$&/ger;y/0
000001b0: 312f 2023 2f3b 732f 2e7b 3634 7d2f 2426  1/ #/;s/.{64}/$&
000001c0: 0a2f 67                                  ./g

Try it online!


1

Jq 1.5, 538 535 488 476 bytes

This is a straightforward representation. I haven't attempted any fancy encodings yet. Replaced 0,0 pairs with Z function.

Thanks again to Jonathan Frech for helping eliminate 3 bytes!

def B:recurse(if.>0then./2|floor else empty end)|.%2;def S:256+.|[B]|reverse[2:]|map(if.>0then"#"else" "end)|join("");def Z:0,0;[[Z,3,1,1,4,5,2],[1,4,5,2,2,3,Z],[Z,Z,2,3,Z],[Z,Z,3,1,1,4]]as$m|[[],[9,15,12,4,124,228,39,62],[Z,Z,Z,Z,124,228,39,62,32,48,240,144],[32,48,240,144,151,254,194,67,194,67,127,233,9,15,12,4],[124,228,39,62,32,48,240,144,32,48,240,144,151,254,194,67],[194,67,127,233,9,15,12,4,9,15,12,4,124,228,39,62]]as$c|$m[]|range(16)as$l|map($c[.][$l]|S)|join("")

Character count

$ wc -c picture.jq
 476 picture.jq

Sample run

$ jq -Mnr -f picture.jq
                  #         #  #    #  # #####  ##    #         
                  ##        ####    #######  #   #    ##        
                ####        ##      ##    #  ### #######        
                #  #         #       #    ##### ### #  #        
                #  # ### #####   #####    #         #  #        
                ####### ###  #  ###  #    ##        ####        
                ##    #   #  ###  #  #######        ##          
                 #    ##  #####   ##### #  #         #          
                ##    #                   #         #  # #####  
                 #    ##                  ##        #######  #  
                 #######                ####        ##    #  ###
                ### #  #                #  #         #    ##### 
                    #  #                #  # ### #####    #     
                    ####                ####### ###  #    ##    
                    ##                  ##    #   #  #######    
                     #                   #    ##  ##### #  #    
    #  # #####  ##    #                   #                     
    #######  #   #    ##                  ##                    
    ##    #  ### #######                ####                    
     #    ##### ### #  #                #  #                    
 #####    #         #  #                #  # ###                
###  #    ##        ####                #######                 
  #  #######        ##                  ##    #                 
  ##### #  #         #                   #    ##                
          #         #  # #####   #####  ##    #                 
          ##        #######  #  ###  #   #    ##                
        ####        ##    #  ###  #  ### #######                
        #  #         #    #####   ##### ### #  #                
        #  # ### #####    #       #         #  #                
        ####### ###  #    ##      ##        ####                
        ##    #   #  #######    ####        ##                  
         #    ##  ##### #  #    #  #         #                  
                                          #                     
                                          ##                    
                                        ####                    
                                        #  #                    
                                        #  # ###                
                                        #######                 
                                        ##    #                 
                                         #    ##                
                                 #####  ##    #                 
                                ###  #   #    ##                
                                  #  ### #######                
                                  ##### ### #  #                
                                  #         #  #                
                                  ##        ####                
                                ####        ##                  
                                #  #         #                  
                                  #         #  #    #  # #####  
                                  ##        ####    #######  #  
                                ####        ##      ##    #  ###
                                #  #         #       #    ##### 
                                #  # ### #####   #####    #     
                                ####### ###  #  ###  #    ##    
                                ##    #   #  ###  #  #######    
                                 #    ##  #####   ##### #  #    
                                ##    #                   #     
                                 #    ##                  ##    
                                 #######                ####    
                                ### #  #                #  #    
                                    #  #                #  # ###
                                    ####                ####### 
                                    ##                  ##    # 
                                     #                   #    ##

1
Three omittable spaces in B: rec and 16) as $l|.
Jonathan Frech

1
if.==0then" "else"#"end -> if.>0then"#"else" "end.
Jonathan Frech



0

JavaScript (Node.js), 1233 bytes

_=>` 18# 9# 2# 4# 2# #5 2#2 4#
 18#2 8#4 4#7 2# 3# 4#2
 16#4 8#2 6#2 4# 2#3 #7
 16# 2# 9# 7# 4#5 #3 # 2#
 16# 2# #3 #5 3#5 4# 9# 2#
 16#7 #3 2# 2#3 2# 4#2 8#4
 16#2 4# 3# 2#3 2# 2#7 8#2
 17# 4#2 2#5 3#5 # 2# 9#
 16#2 4# 19# 9# 2# #5
 17# 4#2 18#2 8#7 2#
 17#7 16#4 8#2 4# 2#3
 16#3 # 2# 16# 2# 9# 4#5
 20# 2# 16# 2# #3 #5 4#
 20#4 16#7 #3 2# 4#2
 20#2 18#2 4# 3# 2#7
 21# 19# 4#2 2#5 # 2#
 4# 2# #5 2#2 4# 19#
 4#7 2# 3# 4#2 18#2
 4#2 4# 2#3 #7 16#4
 5# 4#5 #3 # 2# 16# 2#
 #5 4# 9# 2# 16# 2# #3
#3 2# 4#2 8#4 16#7
 2# 2#7 8#2 18#2 4#
 2#5 # 2# 9# 19# 4#2
 10# 9# 2# #5 3#5 2#2 4#
 10#2 8#7 2# 2#3 2# 3# 4#2
 8#4 8#2 4# 2#3 2# 2#3 #7
 8# 2# 9# 4#5 3#5 #3 # 2#
 8# 2# #3 #5 4# 7# 9# 2#
 8#7 #3 2# 4#2 6#2 8#4
 8#2 4# 3# 2#7 4#4 8#2
 9# 4#2 2#5 # 2# 4# 2# 9#
 42#
 42#2
 40#4
 40# 2#
 40# 2# #3
 40#7
 40#2 4#
 41# 4#2
 33#5 2#2 4#
 32#3 2# 3# 4#2
 34# 2#3 #7
 34#5 #3 # 2#
 34# 9# 2#
 34#2 8#4
 32#4 8#2
 32# 2# 9#
 34# 9# 2# 4# 2# #5
 34#2 8#4 4#7 2#
 32#4 8#2 6#2 4# 2#3
 32# 2# 9# 7# 4#5
 32# 2# #3 #5 3#5 4#
 32#7 #3 2# 2#3 2# 4#2
 32#2 4# 3# 2#3 2# 2#7
 33# 4#2 2#5 3#5 # 2#
 32#2 4# 19#
 33# 4#2 18#2
 33#7 16#4
 32#3 # 2# 16# 2#
 36# 2# 16# 2# #3
 36#4 16#7
 36#2 18#2 4#
 37# 19# 4#2`.replace(/(.)(\d+)/g,(_,c,n)=>c.repeat(n))

Try it online!


Ooh, what's the problem now? Erm... Am I missing something?
totallyhuman

1
I didn't downvote, but, fyi, it can be compressed much more using this.

I didn't either, but this isn't in the spirit of the question. The pattern was generated, presumably, by some simple recursive procedure. The challenge is determine the rule, at which point your solution will be extremely short.
Jonah

1
Convert to base 36 to save ~50 bytes.
Shaggy

2
I am completely aware that this is not the optimal solution or the shortest solution or a clever one. I simply tried using an algorithm and it ended up being this. This is, however, a perfectly valid solution and hence doesn't deserve downvotes. Boring solutions should not be upvoted but they shouldn't be downvoted either.
totallyhuman

0

C# (.NET Core), 976 969 bytes

o=>{foreach(var l in new[]{35223185965568,52841249260288,0xf00c0c277f00,0x9004043ee900,0x977c7c200900,0xfee4e4300f00,0xc22727f00c00,73934616658944,0xc2000020097c,73667282210788,0x7f0000f00c27,0xe9000090043e,9895614577696,0xf0000fee430,0xc0000c227f0,4398050918032,0x97cc20000200000,0xfe44300003<<20,0xc277f0000f<<20,0x43ee900009<<20,0x7c20090000970000,-0x1bcff0ffff020000,0x27f00c0000c20000,0x3e90040000430000,9017629528424448,0x300fe4e4430000,0xf00c27277f0000,0x90043e3ee90000,0x977c2020090000,0xfee430300f0000,0xc227f0f00c0000,0x433e9090040000,2097152,3145728,15728640,9437184,9895936,16646144,12713984,4390912,2093088768,3829596160,662634496,1055457280,537460736,806289408,4027318272,2416181248,537463164,806293476,4027321383,2416182334,2541517856,4276413488,3257346032,1128152720,3254779936,1124073520,2130706672,3909091472,150995095,251658494,201326786,67108931})System.Console.WriteLine(System.Convert.ToString(l,2).PadLeft(64).Replace('0',' ').Replace('1','#'));}

Try it online!


Hi, welcome to PPCG! This looks almost exactly the same as @IanH's C# .NET answer.. So if you have any improvements for his, make a comment instead of creating a new answer that is almost exactly the same. As for your question, you can use <s>969</s> to cross out the previous bytes.
Kevin Cruijssen

4
I do not have the reputation needed to comment.
my pronoun is monicareinstate

Please don't try to circumvent the rep requirements.
Shaggy

2
Does this mean that in PPCG I cannot try to help others if my reputation is too low?
my pronoun is monicareinstate

3
@Shaggy to be fair, stackexchange is a bit harsh on newcomers, let's not make it harder for them by assuming malice too quickly
ngn

0

C# (.NET Core), 739 bytes

_=>{var r="";for(int i=0,j,k=0;i<626;i++)for(j=0;j++<@"4#+#$#&#$##'$$&#=$*&&)$#%#&$:&*$($&#$%#):#$#+#)#&'#%##$#:#$##%#'%'&#+#$#:)#%$#$%$#&$*&:$&#%#$%$#$)*$=#&$$'%'##$#+#<$&#5#+#$##'5#&$4$*)$#5)2&*$&#$%2%##$#2#$#+#&'7#$#2#$##%#'&#;&2)#%$#&$:$4$&#%#$);#5#&$$'##$#*#$##'$$&#5#;)$#%#&$4$:$&#$%#)2&;#&'#%##$#2#$#7'&#+#$#2#$##%2%$#&$*&2)5#$)*$4$&#5'##$#+#5#&$<#+#$##'%'$$&#=$*)$#$%$#%#&$:&*$&#$%$#$%#):#$#+#&'%'#%##$#:#$##%#'&#)#+#$#:)#%$#&$($*&:$&#%#$)&&*$=#&$$'##$#&#$#+#^#a$^&^#$#^#$##%Z)[$&#\#&$S'$$&#S%$#%#&$T#$%#)T'#%##$#T#+#$#T$*&R&*$T#$#+#V#+#$#&#$##'F$*&&)$#D&*$($&#$%B#$#+#)#&'C#$##%#'%'&#G)#%$#$%$#&$F$&#%#$%$#$)G#&$$'%'##$#F$&#5#H#&$4$G)2&F%##$#2#$#J#$#2#$##%F&2)G$4$&#H#5#&$"[i]-34;){r+=i%2<1?' ':'#';if(++k%64<1)r+='\n';}return r;}

Try it online!

Uses the same approach is this other answer.


0

K (ngn/k), 32 31 27 bytes

6{,[|x;""x],'(+|+x),+x}/"#"

Try it online!

6{ }/ 6 times do

+x transpose

|x reverse vertically

+|+x reverse horizontally

, concatenate vertically

,' concatenate horizontally

,[A;B] is the same as A,B. it helps avoid parentheses around A and around the whole expression

""x use the elements of x as indices in the empty string. out-of-bounds indexing produces spaces, so this expression will return an all-spaces matrix, same size as x

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.