กราฟิกอักษรเบรลล์


46

ตัดเมทริกซ์บูลใน 4x2 บล็อกและทำให้พวกเขาเป็นตัวอักษรเบรลล์...U+2800U+28FF

[[0,1,0,0,1,0],
 [1,0,0,0,0,0],
 [1,0,0,0,1,0],
 [1,1,1,1,0,0]]

⣎⣀⠅

แผ่นที่มี 0-s หากขนาดไม่ได้เป็นทวีคูณของ 4 และ 2

[[0,1,0],
 [1,0,0],
 [1,1,1]]

⠮⠄

ใช้กฎการเล่นกอล์ฟตามปกติมีความยืดหยุ่นในรูปแบบอินพุต เอาต์พุตควรมีโครงสร้างของเมทริกซ์หรือดูเหมือนเมทริกซ์เช่นรายการสตริง สายเดียวกับการขึ้นบรรทัดใหม่

คำแนะนำ: chr(0x2800 + 128*b7 + 64*b6 + 32*b5 + 16*b4 + 8*b3 + 4*b2 + 2*b1 + b0)เป็นรูปแบบจุด

b0 b3
b1 b4
b2 b5
b6 b7

ทดสอบที่ใหญ่กว่า:

[[0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,0],
 [0,1,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1],
 [0,1,1,0,0,1,1,1,0,0,0,1,1,1,1,0,0,1,1,0,0,0,1],
 [1,1,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1],
 [1,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,1,1,1,0,1,0],
 [1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0],
 [1,1,0,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0],
 [1,1,0,1,1,1,1,1,0,0,1,1,0,0,1,0,0,1,1,1,1,1,1],
 [1,1,0,1,1,1,1,0,0,1,1,1,1,0,1,0,1,1,1,1,1,1,0],
 [1,1,0,1,0,1,1,0,1,1,0,1,1,0,1,0,0,0,0,1,1,0,0],
 [1,1,0,0,0,1,1,0,1,0,0,0,1,0,1,1,0,0,0,1,1,0,0],
 [1,1,0,0,0,1,1,0,1,0,0,0,1,0,1,1,1,0,0,1,1,0,0],
 [0,1,1,0,1,1,1,0,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0],
 [0,1,1,1,1,1,0,0,1,1,1,1,1,0,0,1,1,0,1,1,1,0,0],
 [0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,0,1,1,1,1,0]]

⣰⠟⠻⣦⠀⠠⠾⡇⢠⡞⢛⡆
⣿⢠⣬⣥⠄⣀⠀⡇⢈⣻⣈⡀
⣿⠘⢹⡇⡞⠙⡇⣧⡉⢹⡏⠀
⠘⠷⠟⠁⠳⠾⠃⠘⠇⠾⠧⠀

ขอแสดงความยินดีกับความท้าทายที่สอง
อดัม

5
คำอธิบายที่ดีกว่า: คุณมีอาร์เรย์แบบบูล 2 มิติของค่าบูลีนที่มีแถวแทนเส้นแรสเตอร์แนวนอนของบัฟเฟอร์เฟรมแบบเฟรมขาวดำ (1 บิตต่อพิกเซล) หรือพื้นที่วาดกราฟิก เข้ารหัสบล็อคสี่เหลี่ยมขนาด 4x2 ทั้งหมดของผืนผ้าใบนี้เป็นอักขระ Unicode Braille ในการจัดการบล็อกเศษส่วนที่ขอบให้วางความกว้างของผืนผ้าใบเป็น 2 เท่าและความสูงเป็นหลายเท่าของสี่โดยใช้ศูนย์ (หรือให้แน่ใจว่าเอาต์พุตที่เทียบเท่าให้การรักษาข้อมูลราวกับว่ามันมีเบาะ)
Kaz

3
@Kaz ฉันไม่รู้ฉันเองซาบซึ้งจริงๆว่าโพสต์นี้กระชับ IMO, ความชัดเจนไม่มากจะถูกเพิ่มโดยการเขียนใด ๆ เพิ่มเติม (นอกเหนือจากการชี้แจงเล็ก ๆ น้อย ๆ เช่นสังเกตว่าความสูงควรเป็น mult ของ 4 และความกว้าง 2); คำแนะนำของคุณยากสำหรับฉันที่จะอ่านกว่าโพสต์ปัจจุบัน
Quelklef

คำตอบ:


10

เยลลี่ ,  31  30 ไบต์

sz0Z
ç€2ZF€ç€8Zœ?@€€-36Ḅ+⁽$ṁỌY

ลองออนไลน์!

อย่างไร?

sz0Z - Link 1, split & right-pad with zeros: list, items; number, chunkSize
s    - split items into chunks of length chunkSize
 z0  - transpose with filler zero
   Z - transpose

ç€2ZF€ç€8Zœ?@€€-36Ḅ+⁽$ṁỌY - Main link: list of lists of numbers (1s & 0s), M
ç€2                       - call the last link (1) as a dyad for €ach (left=M, right=2)
                          -  ((left,right) bits read left-right then top-bottom)
   Z                      - transpose the resulting list of lists of lists
                          -  ((left, right) bits read top-bottom then left-right)
    F€                    - flatten €ach
      ç€8                 - call the last link (1) as a dyad for €ach (left=^, right=8)
         Z                - transpose the resulting list of lists of lists
                          -  ("blocks" each and all read left-right top-to bottom)
               -36        - literal -36
             €€           - for €ach (block-wise row) for €ach (block)
          œ?@             -   lexicographical permutation with reversed arguments
                          -    (get the permutation at index -36 (modular) in a list of
                          -     all permutations of the indexes sorted lexicographically.
                          -     That is the 8!-36 = 40284th - equivalently the values at
                          -     indexes [8,7,6,4,2,5,3,1])
                  Ḅ       - convert from binary list to integer (vectorises)
                    ⁽$ṁ   - base 250 literal = 10240
                   +      - add
                       Ọ  - cast to character (vectorises)
                        Y - join with newlines
                          - implicit print

ไม่สนับสนุน "ตัวเลข" มากกว่า 1? แทนที่จะเพิ่ม 10240 (0x2800 - สองไบต์) ลงในผลลัพธ์คุณสามารถเพิ่ม 40 (0x28 - หนึ่งไบต์) ไปยังเวกเตอร์ของเลขฐานสอง ฉันไม่ค่อยรู้เกี่ยวกับเยลลี่มากนักดังนั้นฉันไม่แน่ใจว่านี่จะใช้งานได้จริงหรือไม่
ngn

จริง ๆ แล้วจะแปลงเลขนำหน้า 40 ตามที่คุณแนะนำ แต่เราจำเป็นต้องเพิ่มแต่ละรายการดังกล่าว (ที่ระดับความลึก 2) ซึ่งฉันคิดว่าจะต้องใช้รหัสไบต์เพิ่มเติม ( ;@€€40Ḅ)
Jonathan Allan

6

JavaScript ES7 210 207 201 200 198 194 185 183 ไบต์

a=>eval('for(y=0,c="";A=a[y];y+=4,c+=`\n`)for(x=0;A[x]+1;x+=2)c+=String.fromCharCode(10240+eval("for(N=k=0;k<6;k++)N+=(g=(X,Y=3)=>(a[Y+y]||0)[X+x]|0)(k>2,k%3)*2**k")|g(0)+g(1)*2<<6)')

บันทึกได้ 4 ไบต์ด้วย ngn

บันทึกไปแล้ว 3 ไบต์ด้วยลุค

มันทำงานอย่างไร

ฉันจะแบ่งรหัสออกเป็นส่วน ๆ และพูดแยกกัน:

for(y=x=0, c=""; a[y]; x+=2)
    !((a[y] || [])[x]+1) && (y+=4,x=0,c+=`\n`)

นี่คือที่ที่ทุกตัวแปรได้รับการประกาศ xและyเป็นตำแหน่งของ "เคอร์เซอร์" (ขอบซ้ายบนของอักษรเบรลล์ปัจจุบัน) พิกัด x เพิ่มขึ้น 2 ทุกการวนซ้ำและจะหยุดเมื่อไม่มีแถวที่มีดัชนีy(a [x] จะส่งกลับundefinedหากไม่มีอยู่ซึ่งจะถูกแปลงเป็นเท็จ)

มีลูกเล่นมากมายในแถวที่สอง (a[y] || [])[x]ตรวจสอบให้แน่ใจว่าการค้นหาค่าที่(x, y)ตำแหน่งไม่ทำให้เกิดข้อผิดพลาด &&เป็นปกติและผู้ประกอบการและจะตรวจสอบเฉพาะทางด้านขวาของการแสดงออกถ้าซ้ายเป็นความจริง สิ่งนี้สามารถแปลเป็น

if (!((a[y] || [])[x] + 1)) 
    y+=4,x=0,c+=`\n`

ส่วนต่อไป:

c+=String.fromCharCode(10240+eval("for(N=k=0;k<6;k++)N+=(g=(x,y)=>(a[y]||[])[x]||0)(~~(k/3)+x,k%3+y)*2**k,N")+g(x,y+3)*64+g(x+1,y+3)*128)

String.fromCharCodeเพียงแปลงหมายเลขที่ส่งผ่านไปเป็นอักขระ Unicode ด้วยรหัสอักขระเดียวกัน การแสดงออกในวงเล็บคำนวณดัชนีของตัวอักษรเบรลล์:

for(N=k=0;k<6;k++)N+=(g=(x,y)=>(a[y]||[])[x]||0)(~~(k/3)+x,k%3+y)*2**k

ต้องผ่านตำแหน่งใน

1 4
2 5
3 6

คำสั่งซื้อคูณค่าที่ตำแหน่งเหล่านั้นด้วย 2 iโดยที่ i คือดัชนีและรวมเข้าด้วยกัน

g=(x,y)=>(a[y]||[])[x]||0

ส่วนประกาศฟังก์ชั่นแลมบ์ดาที่เรียกว่าgซึ่งได้รับxและyประสานงานส่งกลับค่าที่(x, y)ตำแหน่งหรือ 0 ถ้าตำแหน่งอยู่นอกขอบเขตของอาร์เรย์

+g(x,y+3)*64+g(x+1,y+3)*128

ส่วนนี้จะรวมสองตำแหน่งสุดท้ายพร้อมกับน้ำหนักที่ถูกต้องโดยใช้ฟังก์ชั่นที่กำหนดไว้ก่อนหน้านี้เล็กน้อย

สุดท้าย แต่ไม่ท้ายสุด

a=>eval('...')

ส่วนที่มี 2 ฟังก์ชั่น มันกำหนดแลมบ์ดานิรนามและสร้างความมั่นใจว่าสำหรับลูปนั้นไม่ได้ทำให้เกิดปัญหาใด ๆ (แลมบ์ดาบรรทัดเดียวเช่นอันนี้ไม่สามารถมีลูปเดียวสำหรับลูปเท่านั้นเท่านั้น


คำแนะนำง่ายๆสองสามข้อ: ||0-> |0; ~~(k/3)-> (k>2); *128-> <<7(แทนที่+-s ด้วย|-s)
ngn

ทำไมไม่ส่งรุ่น ES7 เป็นโซลูชันหลักของคุณ
Shaggy

@Shaggy ทุกคนไม่สามารถเรียกใช้ ES7 ได้ดังนั้นจึงเป็นข้อมูลสำรอง
Bálint

นั่นไม่เกี่ยวกับ 'ปัดส่วนเหล่านี้;) ตราบใดที่มีล่ามตัวเดียว (เบราว์เซอร์) ที่สามารถเรียกใช้โค้ดของคุณได้อย่างถูกต้องจะถือว่าใช้งานได้ที่นี่
Shaggy

ขอบคุณ @ngn สำหรับสองคนแรก แต่ขยับบิตมีความสำคัญต่ำกว่าพื้นอะไรเพื่อที่จะไม่ทำงาน
Bálint

6

Mathematica, 126 110 97 90

FromCharacterCode[10240+ListCorrelate[2^{{0,3},{1,4},{2,5},{6,7}},#,1,0][[;;;;4,;;;;2]]]&

โซลูชันนี้ใช้ประโยชน์จากListCorrelateการทำให้เคอร์เนล (กลับด้าน) เชื่อมั่นในเมทริกซ์ซึ่งโดยพื้นฐานแล้วคือการคูณเมทริกซ์แบบเลื่อน (หรือผลิตภัณฑ์ดอท) ดูคำอธิบายภาพที่นี่ การแพ็ดดิ้งทำได้โดยใช้0เป็นอาร์กิวเมนต์ที่สี่ ในตัวอย่างต่อไปนี้เราคาดว่าผลลัพธ์จะตรงกับคำใบ้ด้านบน:

ListCorrelate[
  2^{{0, 3}, {1, 4}, {2, 5}, {6, 7}},
  {{b0, b3}, {b1, b4}, {b2, b5}, {b6, b7}}
]

(* returns {{b0 + 2 b1 + 4 b2 + 8 b3 + 16 b4 + 32 b5 + 64 b6 + 128 b7}} *)

โปรดทราบว่าการListConvolveใด ๆ -1ที่ไม่สั้นตั้งแต่อาร์กิวเมนต์ที่สามจะเป็น

เนื่องจากสิ่งนี้ใช้เคอร์เนลในทุกตำแหน่งของเมทริกซ์เราจึงต้องแยกองค์ประกอบในแถวที่สี่และคอลัมน์ที่สอง เราใช้ shorthands สำหรับSpanและ:Part[[;;;;4,;;;;2]]

มีประโยชน์FromCharacterCodeสามารถใช้เมทริกซ์ของรหัสอักขระและส่งคืนรายการสตริง


โซลูชันนี้ส่งคืนรายการสตริงซึ่งเป็นหนึ่งในรูปแบบเอาต์พุตที่อนุญาต เพียงแค่เติมColumn@ผลลัพธ์ให้“ ดูเหมือนเมทริกซ์”


คุณสามารถเล่นกับสิ่งนี้ได้ในสมุดบันทึก Mathematica ออนไลน์ฟรี ไปที่นี่shift+enterคลิกสร้างโน๊ตบุ๊คใหม่รอสักครู่วางในรหัสนี้แล้วกด

m1={{0,1,0,0,1,0},{1,0,0,0,0,0},{1,0,0,0,1,0},{1,1,1,1,0,0}};
m2={{0,1,0},{1,0,0},{1,1,1}};
m3={{0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,0},{0,1,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1},{0,1,1,0,0,1,1,1,0,0,0,1,1,1,1,0,0,1,1,0,0,0,1},{1,1,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1},{1,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,1,1,1,0,1,0},{1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0},{1,1,0,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0},{1,1,0,1,1,1,1,1,0,0,1,1,0,0,1,0,0,1,1,1,1,1,1},{1,1,0,1,1,1,1,0,0,1,1,1,1,0,1,0,1,1,1,1,1,1,0},{1,1,0,1,0,1,1,0,1,1,0,1,1,0,1,0,0,0,0,1,1,0,0},{1,1,0,0,0,1,1,0,1,0,0,0,1,0,1,1,0,0,0,1,1,0,0},{1,1,0,0,0,1,1,0,1,0,0,0,1,0,1,1,1,0,0,1,1,0,0},{0,1,1,0,1,1,1,0,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0},{0,1,1,1,1,1,0,0,1,1,1,1,1,0,0,1,1,0,1,1,1,0,0},{0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,0,1,1,1,1,0}};

MatrixToBraille := Column@
  FromCharacterCode[10240+ListCorrelate[2^{{0,3},{1,4},{2,5},{6,7}},#,1,0][[;;;;4,;;;;2]]]&

MatrixToBraille/@{m1,m2,m3}

จากนั้นคุณควรเห็นสิ่งนี้:


5

Dyalog APL, 133 122 114 112 101 100 98 95 94 93 90 88 86 ไบต์

ถือว่า ⎕IO←0

{C⍴{⎕UCS 10240+2⊥(∊S⌷⍨⍵+⍳¨A)[⍎¨⍕76531420]}¨(,b)/,⍳⍴b←{0 0≡A|⍵}¨⍳⍴S←⍵↑⍨A×C←⌈(⍴⍵)÷A←4 2}

- 8 9 12 ไบต์ขอบคุณ @ Adámในการแชท

-2 ไบต์ต้องขอบคุณ @ngn

ลองออนไลน์!

อย่างไร (อินพุต)

  • A←4 2เก็บเวกเตอร์4 2ในตัวแปรA
  • (⍴⍵)÷ขนาดของหารด้วยA
  • เพดาน
  • C←เก็บไว้ใน C
  • คูณด้วย A
  • ⍵↑⍨ให้พอดีกับมิติเหล่านั้น
  • S←เก็บไว้ใน S
  • ⍳⍴ดัชนีของ S
  • {0 0≡A|⍵}¨, 1ที่ด้านบนซ้ายของเซลล์คือ0ทุกที่อื่น
  • (,b)/,⍳⍴b←ดัชนีความจริง
  • {⎕UCS 10240+2⊥(∊S⌷⍨⍵+⍳¨A)[⍎¨⍕76531420]}¨เปลี่ยนแต่ละองค์ประกอบเป็นอักษรเบรลล์
  • C⍴ปรับขนาดให้เป็น C

พิจารณา+/(2*0 3 1,A,4+⍳3)×something2⊥something[⍎¨⍕76524130]
ngn

อยากเป็นยังไงตอนนี้ที่ฉันเปลี่ยนมันเป็น⎕IO←0?
Zacharý

จริงๆแล้วมันจะทำงานเฉพาะใน⎕IO←0:)
ngn

ฉันลองแล้วฉันกำลังทำอะไรผิดหรือเปล่า? tio.run/…
Zacharý

ขออภัยฉันลืมเรื่องโง่ ๆ นี้⎕IOใน APL สำหรับ⎕IO←1แน่นอนคุณต้องเพิ่ม 1 หลักแต่ละหลักของ 76524130
ngn

4

จาวาสคริปต์, 136 ไบต์

a=>(b=a.map(x=>[]),a.map((l,i)=>l.map((c,j)=>b[i>>2][j>>1]|=c<<'01263457'[i%4+j*4%8])),b.map(l=>l.map(c=>String.fromCharCode(10240+c))))

ขอบคุณngn การใช้การเลื่อนบิตช่วยประหยัด 4 ไบต์


คุณสามารถใช้การเลื่อนบิตเช่นi/4|0->i>>2
ngn

c*2**ก็เปลี่ยนไปเช่นกัน :)
ngn

4

Python 2 + drawille , 141 125 120 116 ไบต์

บันทึกแล้ว 16 ไบต์ด้วย ngn และ L3viathan

บันทึก 5 ไบต์ด้วย L3viathan

บันทึกแล้ว 4 ไบต์ด้วย ngn

from drawille import*
def a(d,c=Canvas(),e=enumerate):[c.set(j,i)for i,x in e(d)for j,y in e(x)if y];print c.frame()

ลองออนไลน์!

tio ไม่มี drawille ติดตั้งอยู่จึงไม่ทำงาน


Python และแบตเตอรี่! :) ไม่ทำให้ฉันประหลาดใจ คุณสามารถย่อขนาดให้ต่ำกว่า 120 ไบต์หากคุณใช้enumerate()และรายการความเข้าใจ
ngn

บันทึกคู่ของไบต์โดยการทำให้ฟังก์ชั่นหนึ่งซับ:def b(d,c=l.Canvas()):print([c.set(j,i)for i,x in enumerate(d)for j,y in enumerate(x)if y]and c).frame()
L3viathan


คุณไม่ต้องการand cเคล็ดลับ - ความเข้าใจอาจเป็นข้อความของตัวเองตามมาด้วย;print c.frame()
ngn

3

APL (Dyalog) , 57 54 ไบต์ *

-3 ขอบคุณ OP พรอมต์สำหรับเมทริกซ์บูลีน พิมพ์เมทริกซ์อักขระ

1↓⎕UCS{240,⌽(,⍉3↑⍵),⊢⌿⍵}⌺(2 24 2)⊢0⍪⍣3⍪∘03⊢⎕,0

ลองออนไลน์!

⎕,0 ผนวกศูนย์ทางด้านขวา (ละเว้นหากจำนวนคอลัมน์เท่ากัน)

 ให้ผลผลิตนั้น (เพื่อแยก3และ)

⍪∘0⍣3 ผนวกค่าศูนย์ที่ด้านล่างสามครั้ง (เนื่องจากลดลงบางหน้าต่าง)

0⍪⍣3 ศูนย์สแต็คที่ด้านบนสามครั้ง (เพราะเริ่มที่มุมซ้ายบน)

 ให้ผลที่ (แยกวงเล็บและ0)

{}⌺(2 2⍴4 2) ในหน้าต่าง 4 คอลัมน์ 2 แถวแต่ละแถวมีแนวตั้ง 4 แถวและแนวนอน 2 แถว:

⊢⌿⍵ แถวสุดท้าย (การลดลงของแนวตั้งด้านขวา); [b6,b7]

(…การเติม), :

  3↑ เอาสามแถว; [[b0,b3],[b1,b4],[b2,b5]]

   ไขว้; [[b0,b1,b2],[b3,b4,b5]]

  , Ravel; [b0,b1,b2,b3,b4,b5]

 ตอนนี้เรามี [b0,b1,b2,b3,b4,b5,b6,b7]

 ย้อนกลับ; [b7,b6,b5,b4,b3,b2,b1,b0]

40, รวม 40 (สำหรับ 40 × 2 9 = 10240)[40,b7,b6,b5,b4,b3,b2,b1,b0]

2⊥ ประเมินเป็นฐาน 2 (ไบนารี)

⎕UCS แปลงเป็นตัวละคร

1↓ ปล่อยแถวแรก (ทั้งหมดเป็นศูนย์เนื่องจากช่องว่างภายในของ)


* ในคลาสสิกนับเป็น⎕U233A


มีวิธีง่าย ๆ ในการบันทึกสองสามไบต์ดูความคิดเห็นของฉันภายใต้โซลูชัน Jelly
NGN

ต้องมีข้อผิดพลาด - ลิงค์ TIO ไม่ตรงกับรหัสที่คุณโพสต์ไว้ที่นี่
NGN

มันเป็นรหัส zero-padding ใกล้ถึงจุดสิ้นสุด: 0⍪⍣3⍪∘0⍣3⊢⎕,0vs0⍪∘0⍣3⊢⎕,0
ngn

@ngn คงที่ แต่ฉันมีความรู้สึกว่า⍪∘0⍣3และ,0มีความจำเป็นเนื่องจากข้อบกพร่องและส่วนแรกไม่จำเป็นสำหรับกรณีทดสอบของคุณ
อดัม

กรณีทดสอบของฉันไม่ครบถ้วน - แน่นอนว่าโซลูชันควรใช้งานได้กับอินพุตที่ถูกต้อง คุณสามารถร่นไป0⍪⍣3⍪∘0⍣3⊢⍵,0 0(⊖⍪)⍣6⊢⍵,0
NGN



1

Python 3 , 169 ไบต์

a=[]
y=0
for l in eval(input()):
 y-=1;a+=y%4//3*[-~len(l)//2*[10240]];x=0
 for v in l:a[-1][x//2]|=v<<(6429374>>y%4*6+x%2*3&7);x+=1
for l in a:print(*map(chr,l),sep='')

ลองออนไลน์!


คุณสามารถเขียนif y%4<1:a+=-~len(l)//2*[10240],เป็นa+=(y%4<1)*[-~len(l)//2*[10240]]และเหมาะสมx=0;y+=1ในบรรทัดเดียวกัน ฉันคิดว่ามันช่วยประหยัดไบต์
ngn

@ngn บันทึกอีกไม่กี่ไบต์จากที่นั่นขอบคุณ!
Lynn

1

Perl 5 , 164 bytes

รหัส 163 ไบต์ของธง + 1 -p

@a=eval}{for(;$r<@a;$r+=4){for($c=0;$c<@{$a[0]};$c+=2){$n="0b";map$n.=0|$a[$r+3][$c+$_],1,0;for$y(1,0){map$n.=0|$a[$r+$_][$c+$y],2,1,0}$\.=chr 0x2800+oct$n}$\.=$/}

ลองออนไลน์!

นำแต่ละคอมมาแถวคั่นด้วยหนึ่งบรรทัด


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