Codegolf Rainbow: วาดในขาวดำ


12

บทนำ:

ป้อนคำอธิบายรูปภาพที่นี่(ที่มา: Wikipedia )
เมื่อเราดูรุ้งมันจะมีสีจากบนลงล่างเสมอ:
สีแดง; ส้ม; สีเหลือง; เขียว; สีน้ำเงิน; คราม; ม่วง

ถ้าเราดูที่วงแหวนเหล่านี้แต่ละวงแหวนสีแดงย่อมใหญ่กว่าวงแหวนม่วง
นอกจากนี้ยังเป็นไปได้ที่จะมีรุ้งสองหรือสามตัวในเวลาเดียวกัน

ทั้งหมดนี้รวมกันจะถูกนำมาใช้ในการท้าทายนี้:

ท้าทาย:

ได้รับจำนวนเต็มnเอาท์พุทที่วงแหวนหลายวงของ 'สายรุ้ง' (อาจมากกว่าหนึ่ง) ที่เราจะใช้ตัวอักษรvibgyorสำหรับสี

ดูกรณีทดสอบด้านล่างเพื่อดูว่ามีการสร้างขึ้นจากด้านบนn=1อย่างไรและวิธีจัดการระยะห่าง (ที่n=8) อย่างที่คุณเห็นจะมีการเพิ่มช่องว่างหนึ่งอันระหว่างสองสายรุ้งรวมถึงระยะห่างที่ด้านบนก่อนที่เราจะเพิ่มวงแหวนของรุ้งถัดไป

กฏท้าทาย:

  • คุณได้รับอนุญาตให้ใช้เงินทุนVIBGYORแทนตัวพิมพ์เล็ก
  • ควรมีช่องว่างระหว่างรุ้งแต่ละตัว
  • จำนวนช่องว่างนำหน้าและ / หรือช่องว่าง / บรรทัดใหม่ใด ๆ ที่อนุญาตตราบใดที่สายรุ้งที่เกิดขึ้นจริง (ไม่ว่าจะอยู่ที่ใดก็ตามบนหน้าจอ) จะถูกต้อง
  • อินพุตจะเป็นจำนวนเต็มบวกเสมอ ( >= 1) พฤติกรรมเมื่อn=0ไม่ได้กำหนดดังนั้นและโปรแกรม / ฟังก์ชั่นสามารถทำสิ่งที่มันต้องการ ( n=1เอาท์พุทอะไร; เอาท์พุทรุ้งของ; เอาท์พุทแบบสุ่ม; ล้มเหลวด้วยข้อผิดพลาด ฯลฯ )
  • คุณได้รับอนุญาตให้ส่งออกรายการ / อาเรย์ของสตริงหรืออาเรย์ 2D / รายการของตัวละครหากคุณต้องการ (คุณสามารถเพิ่มรหัสการพิมพ์สวยจริงในส่วนท้ายของ TIO)
  • ไม่สนใจข้อเท็จจริงที่ว่าผลผลิตมีลักษณะเหมือนวัดของชาวมายันมากกว่าสายรุ้ง .. xD

กฎทั่วไป:

  • นี่คือดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ
    อย่าปล่อยให้ภาษารหัสกอล์ฟกีดกันคุณจากการโพสต์คำตอบด้วยภาษาที่ไม่ได้เข้ารหัส พยายามหาคำตอบสั้น ๆ ที่เป็นไปได้สำหรับภาษาโปรแกรม 'ใด ๆ '
  • กฎมาตรฐานจะใช้สำหรับคำตอบของคุณดังนั้นคุณจึงได้รับอนุญาตให้ใช้ STDIN / STDOUT ฟังก์ชัน / เมธอดพร้อมพารามิเตอร์ที่เหมาะสมและชนิดผลตอบแทนโปรแกรมเต็มรูปแบบ การโทรของคุณ
  • ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม
  • หากเป็นไปได้โปรดเพิ่มลิงค์พร้อมทดสอบรหัสของคุณ
  • นอกจากนี้ขอแนะนำให้เพิ่มคำอธิบายสำหรับคำตอบของคุณ

กรณีทดสอบ ( n=1ผ่านครั้งแรกn=10และn=25):

1:
 vvv
v   v

2:
  iii
 ivvvi
iv   vi

3:
   bbb
  biiib
 bivvvib
biv   vib

4:
    ggg
   gbbbg
  gbiiibg
 gbivvvibg
gbiv   vibg

5:
     yyy
    ygggy
   ygbbbgy
  ygbiiibgy
 ygbivvvibgy
ygbiv   vibgy

6:
      ooo
     oyyyo
    oygggyo
   oygbbbgyo
  oygbiiibgyo
 oygbivvvibgyo
oygbiv   vibgyo

7:
       rrr
      rooor
     royyyor
    roygggyor
   roygbbbgyor
  roygbiiibgyor
 roygbivvvibgyor
roygbiv   vibgyor

8:
         vvv
        v   v
       v rrr v
      v rooor v
     v royyyor v
    v roygggyor v
   v roygbbbgyor v
  v roygbiiibgyor v
 v roygbivvvibgyor v
v roygbiv   vibgyor v

9:
          iii
         ivvvi
        iv   vi
       iv rrr vi
      iv rooor vi
     iv royyyor vi
    iv roygggyor vi
   iv roygbbbgyor vi
  iv roygbiiibgyor vi
 iv roygbivvvibgyor vi
iv roygbiv   vibgyor vi

10:
           bbb
          biiib
         bivvvib
        biv   vib
       biv rrr vib
      biv rooor vib
     biv royyyor vib
    biv roygggyor vib
   biv roygbbbgyor vib
  biv roygbiiibgyor vib
 biv roygbivvvibgyor vib
biv roygbiv   vibgyor vib

25:
                            ggg
                           gbbbg
                          gbiiibg
                         gbivvvibg
                        gbiv   vibg
                       gbiv rrr vibg
                      gbiv rooor vibg
                     gbiv royyyor vibg
                    gbiv roygggyor vibg
                   gbiv roygbbbgyor vibg
                  gbiv roygbiiibgyor vibg
                 gbiv roygbivvvibgyor vibg
                gbiv roygbiv   vibgyor vibg
               gbiv roygbiv rrr vibgyor vibg
              gbiv roygbiv rooor vibgyor vibg
             gbiv roygbiv royyyor vibgyor vibg
            gbiv roygbiv roygggyor vibgyor vibg
           gbiv roygbiv roygbbbgyor vibgyor vibg
          gbiv roygbiv roygbiiibgyor vibgyor vibg
         gbiv roygbiv roygbivvvibgyor vibgyor vibg
        gbiv roygbiv roygbiv   vibgyor vibgyor vibg
       gbiv roygbiv roygbiv rrr vibgyor vibgyor vibg
      gbiv roygbiv roygbiv rooor vibgyor vibgyor vibg
     gbiv roygbiv roygbiv royyyor vibgyor vibgyor vibg
    gbiv roygbiv roygbiv roygggyor vibgyor vibgyor vibg
   gbiv roygbiv roygbiv roygbbbgyor vibgyor vibgyor vibg
  gbiv roygbiv roygbiv roygbiiibgyor vibgyor vibgyor vibg
 gbiv roygbiv roygbiv roygbivvvibgyor vibgyor vibgyor vibg
gbiv roygbiv roygbiv roygbiv   vibgyor vibgyor vibgyor vibg

3
บางทีคุณอาจจะรู้เรื่องนี้และมันก็เป็นไปตามการออกแบบ (ฉันรู้ว่ารุ้งกินน้ำไม่ใช่รูปสี่เหลี่ยมขนมเปียกปูนหรือ ascii เช่นกันและตำแหน่งที่สูงขึ้นของคำสั่งซื้อก็มีความซับซ้อนมากขึ้น) แต่สีในรุ้งที่ 2 ไม่ใช่หรือ
Chris M

1
@ChrisM Ah คุณพูดถูกจริงๆ มีรุ้งสองตัวที่สองกลับด้านแน่นอนแต่มีเพียงสามด้านนอกเท่านั้นที่กลับด้านและสี่ด้านนอกทั้งสองกลับด้าน อืมสายเกินไปที่จะเปลี่ยนตอนนี้ บางทีฉันอาจจะนึกถึงความท้าทายที่สามเกี่ยวกับสิ่งนี้ในภายหลัง :)
Kevin Cruijssen


โอ้เยี่ยมมากคนดี: ¬)
Chris M

คำตอบ:




3

05AB1E , 32 31 23 ไบต์

.•VvÈ©•¹∍¬„ v:Rηε¬ý}.c

ลองออนไลน์!

-1 ต้องขอบคุณ Kevin Cruijssen และ -8 ขอบคุณ Adnan


คำอธิบาย (ตัวอย่างสแต็กที่มีอินพุต 3):

.•VvÈ©•                  # Push 'aibgyor'           | ['aibgyor']
       ¹∍                # Extend to input length.  | ['aib']
         ¬               # Push head.               | ['aib','a']
          „ v:           # Replace with ' v'.       | [' vib']
              R          # Reverse.                 | ['biv ']
               η         # Prefixes.                | ['b', 'bi', 'biv', 'biv ']
                ε   }    # For each....             | []
                 ¬ý     # Bifurcate, join by head. | ['b','b']       ->    ['bbb']
                                                    | ['bi','ib']     ->   ['biiib']
                                                    | ['biv','vib']   ->  ['bivvvib']
                                                    | ['biv ',' vib'] -> ['biv   vib']
                     .c # Center the result.        | Expected output.

1
"vibgyor"สามารถแข็งแรงเล่นกอล์ฟโดย 1 .•2Bãθ(•ไบต์ ( นี่คือคำอธิบายสำหรับมันในส่วน " วิธีการบีบอัดสตริงที่ไม่ได้เป็นส่วนหนึ่งของพจนานุกรม ") นอกจากนี้คุณ„vr…v r:ð«ยังสามารถตีกอล์ฟ'v„v .:ได้ ดังนั้น28 ไบต์ คำตอบที่ดี +1 จากฉัน
Kevin Cruijssen

2
@KevinCruijssen โอ้ฉันรู้ทุกอย่างเกี่ยวกับการบีบอัดสตริง - ฉันเพิ่งคิด (ตามปกติจะเป็นกรณีที่มีสตริงขนาดเล็กสุด) ที่ 3-byte bloat ของ.••จะไม่บันทึกไบต์ ตัวเลขหนึ่งครั้งที่ฉันไม่ได้ตรวจสอบจริง ๆ คือเวลาที่จะช่วยประหยัดไบต์ xD จับได้ดี
Magic Octopus Urn

3
สำหรับ 23 ไบต์:.•VvÈ©•¹∍¬„ v:Rηε¬ý}.c
Adnan

1
@Adnan ยุติธรรมพอไม่มีกระจกทำให้มันเป็น refactor สำคัญในสายตาของฉันแม้ว่า (และฉันสงสัยว่าฉันได้ไปถึงที่นั่นด้วยตัวเอง: P)
Magic Octopus Urn

1
@Adnan ยัง¬ýเป็นอัจฉริยะ ... Jeez ... คุณคิดต่างกันและมันยอดเยี่ยม
Magic Octopus Urn

3

Canvas , 29 28 26 ไบต์

7÷U+{ <ibgyor@¹×/n}⇵K2*∔─↶

ลองที่นี่!

คำอธิบาย:

7÷U+                          ceil(input/7) + input
    {             }         for n in 1..the above
      <ibgyor@                in the string " <ibgyor", pick the nth character
              ¹×              repeat n times
                /             create a diagonal of that
                 n            and overlap the top 2 stack items (the 1st time around this does nothing, leaving an item for the next iterations)
                   ⇵        reverse the result vertically
                    K       take off the last line (e.g. " <ibgyor <ib")
                     2*     repeat that vertically twice
                       ∔    and append that back to the diagonals
                        ─   palindromize vertically
                         ↶  and rotate 90° anti-clockwise. This rotates "<" to "v"

25 24 22 ไบต์หลังจากแก้ไขที่ m เก่าควรวนรอบหากความยาวที่ต้องการมากกว่าความยาวของอินพุตและกำหนดเช่นเดียวกับเวลาที่ 10


ด้วยความอยากรู้ทำไมvด้านข้าง ( <) คืออะไร? คือvแล้วคำหลักที่สงวนไว้ในผ้าใบถ้าอย่างนั้นทำไมไม่ใช้<เป็นคำหลักที่ตรงกันข้ามแทน?
Kevin Cruijssen

1
อักขระจะถูกใช้ในแนวตั้งและหมุนแล้วและผ้าใบก็ฉลาดพอที่จะเข้าใจว่าการ<หมุนทวนเข็มนาฬิกาเท่ากับ 90 ° v: P ASCII ทั้งหมดเป็นส่วนหนึ่งของสตริงใน Canvas btw
dzaima

อ่าถ้าคุณจะใช้vที่นี่แล้วคุณหมุน 90 องศาทวนเข็มนาฬิกามันจะกลายเป็น>แทน ฉันเห็น. : D
Kevin Cruijssen

@KevinCruijssen นั่นก็มีผลอื่น ๆเช่นกัน
dzaima

อาคุณมีกระจกอยู่ที่นั่นบ้างไหม? ฉันอ่าน Canvas tbh ไม่ได้ดังนั้นฉันรอคอยคำอธิบายรหัส ;)
Kevin Cruijssen


3

Dyalog APL , 41 39 38 ไบต์

↑{⌽(⌽,⊃,A↑⊢)⍵↑A' vibgyor'}¨-⍳A←⌈⎕×8÷7

ลองออนไลน์!

วิธีการที่คล้ายกันกับผู้อื่น: A←⌈⎕×8÷7ค้นหาความสูงของสายรุ้ง (เช่นความกว้างของ 'ครึ่งแถว' ที่ยาวที่สุดไปทางซ้าย / ขวาของกึ่งกลาง) และกำหนดให้กับมันเพื่อAใช้ในภายหลังในขณะที่¨-⍳วนซ้ำผ่านค่า 1..A, กวนให้พวกเขาเลือกในด้านที่ถูกต้องเมื่อใช้กับ

A⍴' vibgyor'สร้าง 'ครึ่งแถว' และ⍵↑เลือกสตริงย่อยความยาวที่ถูกต้อง (⌽,⊃,A↑⊢)สร้างแถวเต็มในสิ่งที่ตรงกันข้าม (ซึ่งใช้อักขระน้อยลงในการทำ) เริ่มต้นด้วยครึ่งแถวที่กลับด้าน ( ) จากนั้นอักขระกึ่งกลางที่นำมาจากจุดเริ่มต้นของสตริงครึ่งแถว ( ) และสุดท้ายเป็นรุ่นที่ถูกต้องของแถวครึ่งA↑⊢) สุดท้ายจะย้อนกลับแถวไปสู่การวางแนวที่ถูกต้องและเปลี่ยนเวกเตอร์ของแถวไปเป็นอาร์เรย์ 2D

แก้ไข: -2 ขอบคุณdzaima

แก้ไข: -1 ขอบคุณngn


คุณสามารถแทนที่⍕⍪ด้วย- อนุญาตให้ส่งออกอาเรย์ของตัวละคร 2D ได้
dzaima


1+÷7->8÷7
ngn


2

ถ่าน 30 ไบต์

↶≔… vibgyor⁺²÷×⁸⊖N⁷θθ⸿Eθ✂θκ‖O←

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

เปลี่ยนทิศทางการวาดขึ้นไป

≔… vibgyor⁺²÷×⁸⊖N⁷θ

คำนวณความสูงของรุ้งและทำซ้ำสตริงตามความยาวนั้น

θ⸿

พิมพ์เส้นกลางของรุ้ง

Eθ✂θκ

พิมพ์ครึ่งสีรุ้งที่เหมาะสมด้วยการถ่ายภาพต่อเนื่องและพิมพ์แต่ละภาพด้วย "เส้น" ของมันเอง

‖O←

สะท้อนให้เห็นถึงรุ้งที่สมบูรณ์



2

เยลลี่ขนาด 28 ไบต์

:7+‘“ vibgyor”ṁµṫJZz⁶U;"⁸ŒBṚ

ลิงก์ monadic ยอมรับจำนวนเต็มซึ่งให้รายการของอักขระ

ลองออนไลน์! (ส่วนท้ายรวมกับอักขระขึ้นบรรทัดใหม่)

หรือดูการทดสอบในตัว

อย่างไร?

:7+‘“ vibgyor”ṁµṫJZz⁶U;"⁸ŒBṚ - Link: integer
:7                           - integer divide by seven (number of full rainbows)
   ‘                         - increment (the input integer)
  +                          - add (gets the number bands)
    “ vibgyor”               - list of characters = " vibgyor"
              ṁ              - mould like the result above (as a range)
               µ             - start a new monadic chain
                 J           - range of length
                ṫ            - tail (vectorises) (gets the suffixes)
                  Z          - transpose
                   z⁶        - transpose with filler space character
                             -   (together these pad with spaces to the right)
                     U       - reverse each
                             -   (now we have the left side of the rainbow upside down)
                        ⁸    - chain's left argument, as right argument of...
                       "     -   zip with:
                      ;      -     concatenation
                             -   (adds the central character)
                         ŒB  - bounce (vectorises at depth 1)
                             -   (reflects each row like [1,2,3,4] -> [1,2,3,4,3,2,1])
                           Ṛ - reverse (turn the rainbow up the right way)

2

R , 130 ไบต์

function(n,k=n%/%7*8+1+n%%7,a=el(strsplit(' vibgyor'/k,'')))for(i in k:1)cat(d<-' '/(i-1),a[c(k:i,i,i:k)],d,sep='','
')
"/"=strrep

ลองออนไลน์!

  • -6 ไบต์ขอบคุณ @JayCe

คุณสามารถบันทึก 6 ไบต์ นอกจากนี้ยังทำให้คุณสามารถ upvote รับการเสนอชื่อของ R สำหรับภาษาของเดือน :)
Jayce

@ JayCe: ขอบคุณ! อัปเดตและอัปโหลดแล้ว!
digEmAll

2

Haskell , 106 113ไบต์

ฉันยังไม่สามารถแสดงความคิดเห็นโพสต์อื่น (เช่นนี้ ) ดังนั้นฉันต้องโพสต์คำตอบแยกต่างหาก

เลื่อนออกไป 7 ไบต์โดย ovs

p x=reverse x++x!!0:x
u m|n<-m+div(m-1)7=[(' '<$[z..n])++p(drop(n-z)$take(n+1)$cycle" vibgyor")|z<-[0..n]]

ลองออนไลน์!

( รุ่นเก่า 113 ไบต์)


คำตอบที่ดี ฉันไม่รู้จัก Haskell แต่รหัสดูเหมือนจะแตกต่างจากคำตอบ Haskell อื่น ๆ PS: ว่าคำตอบ Haskell อื่น ๆ ที่เป็นจริง110 ไบต์หลังจากที่กอล์ฟเคล็ดลับใน@ คิดเห็น นี่เป็นคำตอบทางเลือกที่ดี Haskell ดังนั้น +1 จากฉัน
Kevin Cruijssen

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

2

PowerShell , 108 98 89 85 ไบต์

param($x)($x+=$x/7-replace'\..*')..0|%{' '*$_+-join(" vibgyor"*$x)[$x..$_+$_+$_..$x]}

ลองออนไลน์!

อันนี้รู้สึกไม่เป็นไรตอนนี้ การปัดเศษของนายธนาคารยังคงเป็นมารและฉันก็หาวิธีที่จะเข้าร่วมที่ไม่ใช่คนโง่ ฉันลองลิงด้วยเงินจำนวน $ เพื่อประสบความสำเร็จไม่มาก เมื่อพูดถึงผลลัพธ์ที่ไม่ได้เข้าร่วมก็ดูดีทีเดียว

         vvv
        v     v
       v   rrr   v
      v   r ooo r   v
     v   r o yyy o r   v
    v   r o y ggg y o r   v
   v   r o y g bbb g y o r   v
  v   r o y g b iii b g y o r   v
 v   r o y g b i vvv i b g y o r   v
v   r o y g b i v     v i b g y o r   v

[int] $ x + = $ x / 7?
mazzy

@mazzy นั่นล้มเหลวสำหรับ x = 25 คุณต้องตัดทอน แต่หล่อไปรอบ int
Veskah

ใช่. และตัดทอนเป็นงาน
mazzy

1
@ มาซี่ฉันรู้วิธีเดียวที่ฉันรู้ที่จะตัดทอนคือ [math] :: truncate () หรือเคล็ดลับ regex ที่ใช้ด้านบน [int] $ x ปัดเศษตัวเลข ถ้าคุณรู้วิธีที่ดีกว่าฉันหูทั้งหมด
Veskah

1

Python 2 , 132 131 ไบต์

def f(n):
 t=n+n/7;s=('vibgyor '*n)[:t];r=[s[~i:]+t*' 'for i in range(t)]
 for l in zip(*r+3*[' '+s]+r[::-1])[::-1]:print''.join(l)

ลองออนไลน์!


ที่บันทึกไว้:

  • -1 ไบต์ขอบคุณ Jonathan Frech

ทำไม//ใน Python 2
Jonathan Frech

@JonathanFrech เพราะฉันเป็นคนโง่: P
TFeld

@dzaima ใช่ ควรได้รับการแก้ไขแล้ว
TFeld

1

สีแดง 153 ไบต์

func[n][r: take/last/part append/dup copy"""roygbiv "n l: 9 * n + 8 / 8
repeat i l[print rejoin[t: pad/left take/part copy r i l last t reverse copy t]]]

ลองออนไลน์!

อ่านง่ายขึ้นเล็กน้อย:

f: func[ n ] [
    r: copy ""
    append/dup r "roygbiv " n
    r: take/last/part r l: 9 * n + 8 / 8
    repeat i l [
        print rejoin [ t: pad/left take/part copy r i l
                       last t 
                       reverse copy t ]
    ]
]

1

Java (JDK 10) , 184 ไบต์

n->{int h=n+n/7,i=h+1,w=i*2+1,j,k=0;var o=new char[i][w];for(;i-->0;o[i][w/2]=o[i][w/2+1])for(j=w/2;j-->0;)o[i][j]=o[i][w+~j]=i<h?j<1?32:o[i+1][j-1]:" vibgyor".charAt(k++%8);return o;}

ลองออนไลน์!

พิมพ์พื้นที่ชั้นนำและต่อท้ายพิเศษสำหรับหลาย ๆ ค่าจาก 7

คำอธิบาย

n->{                             // IntFunction
 int h=n+n/7,                    //  Declare that height = n + n/7
     i=h+1,                      //          that index  = h + 1
     w=i*2+1,                    //          that width  = (h+1)*2+1
     j,                          //          j
     k=0;                        //          that k      = 0
 var o=new char[i][w];           //  Declare a 2D char array
 for(;                           //  Loop
   i-->0;                        //    Until i is 0
   o[i][w/2]=o[i][w/2+1]         //    After each run, copy the middle letter.
 )
  for(j=w/2;                     //   Loop on j = w/2
   j-->0;                        //     Until j = 0
  )                              //
   o[i][j]                       //    copy letters to the left side,
    =o[i][w+~j]                  //      and the right side
    =i<h                         //      if it's not the last line
     ?j<1                        //        if it's the first (and last) character
      ?32                        //          set it to a space.
      :o[i+1][j-1]               //          else set it to the previous character on the next line.
     :" vibgyor".charAt(k++%8);  //      else assign the next letter.
 return o;                       //  return everything
}

เครดิต


คุณสามารถบันทึก 2 ไบต์โดยเปลี่ยน,w=-~h*2+1,i=h+1เป็น,i=h+1,w=i*2+1
Kevin Cruijssen

ว้าวฉันไม่ควรตีกอล์ฟตอนเที่ยงคืน! ขอบคุณสำหรับสิ่งนี้ @KevinCruijssen! :)
Olivier Grégoire

แนะนำi-~iแทนi*2+1
ceilingcat

1

Stax , 23 ไบต์

⌡G'5h!M╩EV[Ez ▼>≈<S⌡⌡0`

เรียกใช้และแก้ไขข้อบกพร่อง

คลายกล่อง ungolfed และแสดงความคิดเห็นมันมีลักษณะเช่นนี้

" vibgyor"  string literal
,8*7/^      input * 8 / 7 + 1
:m          repeat literal to that length
|]          get all prefixes
Mr          rectangularize, transpose array of arrays, then reverse
            this is the same as rotating counter-clockwise
m           map over each row with the rest of the program, then implicitly output
            the stack starts with just the row itself
  _h        push the first character of the row
  _r        push the reversed row
  L         wrap the entire stack in a single array

เรียกใช้อันนี้

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