มาออกแบบโมเสกหลักกัน


25

ท้าทาย

กำหนดจำนวนเต็มบวกซ้ำแต่ละตัวเลขของวันที่1 , d 2 , d 3 , , d nจำนวนครั้งที่สอดคล้องกับตำแหน่งในN กล่าวอีกนัยหนึ่งแต่ละหลักd kควรซ้ำkครั้ง (สำหรับแต่ละ1 k n , 1-indexed) ดังนั้นการสร้างหมายเลขใหม่:Nd1,d2,d3,,dnNdkk1kn

d1d2d2d3d3d3dndndndnn times¯

จากนั้นเขียนมันลงทั้งแนวนอนและแนวตั้งและเติมช่องว่างด้วยสำเนาของตัวเลขที่สอดคล้องกับดัชนีที่มากขึ้นระหว่างดัชนีคอลัมน์และดัชนีแถวของพื้นที่ว่าง ผลลัพธ์สุดท้ายควรมีลักษณะเช่นนี้:

[d1d2d2d3d3d3d2d2d2d3d3d3d2d2d2d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3]

รายละเอียด

คุณอาจใช้ เป็นจำนวนเต็มสตริงรายการของตัวเลขหรือรายการของตัวละครที่เป็นตัวแทนของตัวเลข เอาต์พุตสามารถเป็นสตริงที่คั่นด้วยบรรทัดใหม่รายการของสตริง / จำนวนเต็มหรือรายการของอักขระ / ตัวเลข แต่โปรดรวมเวอร์ชันที่พิมพ์สวยหากเป็นไปได้ หากเอาต์พุตเป็นสตริงที่คั่นด้วยบรรทัดใหม่ก็ยอมรับได้เช่นกัน:N

  • มีช่องว่างนำหน้า / ต่อท้ายตราบใดที่ลักษณะที่ปรากฏของเอาต์พุตไม่เปลี่ยนแปลง
  • แยกคอลัมน์โดยใช้ช่องว่างจำนวนที่สอดคล้องกันหรือแถวด้วยจำนวนบรรทัดใหม่ (ไม่เป็นศูนย์) ที่สอดคล้องกัน

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

กรณีทดสอบ

65:

655
555
555

---------------

203:

200333
000333
000333
333333
333333
333333

--------------

233:

233333
333333
333333
333333
333333
333333

---------------

5202:

5220002222
2220002222
2220002222
0000002222
0000002222
0000002222
2222222222
2222222222
2222222222
2222222222

---------------

12345:

122333444455555
222333444455555
222333444455555
333333444455555
333333444455555
333333444455555
444444444455555
444444444455555
444444444455555
444444444455555
555555555555555
555555555555555
555555555555555
555555555555555
555555555555555

เรามีหมายเลขอ้างอิงสองหลักเดียวกันถัดจากหมายเลขอื่นหรือไม่
Dom Hastings

@ DomHastings ใช่คุณต้องจัดการพวกเขา เพิ่มกรณีทดสอบที่แสดงสิ่งนี้
นาย Xcoder

คำตอบ:


9

JavaScript (ES7), 70 ไบต์

รับอินพุตเป็นสตริง ส่งคืนสตริงที่มี linefeed ต่อท้าย

s=>(g=x=>(c=s[(x>y?x:y)**.5-1>>1])?c+g(x+8):x>y?`
`+g(1,y+=8):'')(y=1)

ลองออนไลน์!

อย่างไร?

วิธี

เราสร้างอักขระเอาท์พุทโดยตัวละครโดยการเดินผ่านเมทริกซ์จตุรัสและแปลงแต่ละเซลล์ให้เป็นดัชนีผมx,Yเป็นสตริงการป้อนข้อมูล

พิกัดไปยังดัชนีสตริง

ขอบด้านบนของพื้นที่หลักn t h (จัดทำดัชนี 0) ตามแต่ละแกนที่กำหนดโดยA000096 :ยูnnเสื้อชั่วโมง

u0=0,u1=2,u2=5,u3=9,u4=14,u5=20,...

ยูn=n(n+3)2
ยู0=0,ยู1=2,ยู2=5,ยู3=9,ยู4=14,ยู5=20,...

ได้รับจำนวนเต็มเราสามารถหาในพื้นที่n = x+ 1นั้นจะอยู่โดยการแก้:kn=x+1

x²+3x-2k=0

นำไปสู่:

n=

x=1+8k-32
n=1+8k-32+1=1+8k-12

สำหรับแต่ละเซลล์เรากำหนด:(x,Y)

โวลต์x,Y=สูงสุด(1+8x,1+8Y)

ค่าเหล่านี้ถูกแปลงเป็นดัชนีi x , yเป็นสตริงอินพุตโดยทำ:โวลต์x,Yผมx,Y

ผมx,Y=โวลต์x,Y-12
 v(x,y) |  0  1  2  3  4  5  6  7  8  9        i(x,y) |  0  1  2  3  4  5  6  7  8  9
--------+-------------------------------      --------+-------------------------------
    0   |  1  9 17 25 33 41 49 57 65 73           0   |  0  1  1  2  2  2  3  3  3  3
    1   |  9  9 17 25 33 41 49 57 65 73           1   |  1  1  1  2  2  2  3  3  3  3
    2   | 17 17 17 25 33 41 49 57 65 73           2   |  1  1  1  2  2  2  3  3  3  3
    3   | 25 25 25 25 33 41 49 57 65 73           3   |  2  2  2  2  2  2  3  3  3  3
    4   | 33 33 33 33 33 41 49 57 65 73   -->     4   |  2  2  2  2  2  2  3  3  3  3
    5   | 41 41 41 41 41 41 49 57 65 73           5   |  2  2  2  2  2  2  3  3  3  3
    6   | 49 49 49 49 49 49 49 57 65 73           6   |  3  3  3  3  3  3  3  3  3  3
    7   | 57 57 57 57 57 57 57 57 65 73           7   |  3  3  3  3  3  3  3  3  3  3
    8   | 65 65 65 65 65 65 65 65 65 73           8   |  3  3  3  3  3  3  3  3  3  3
    9   | 73 73 73 73 73 73 73 73 73 73           9   |  3  3  3  3  3  3  3  3  3  3

สภาพหยุดพัก

เรารู้ว่าเราไปถึงแล้ว:

  • ขอบเขตด้านขวาของเมทริกซ์เมื่ออักขระที่ไม่มีอยู่และเรามีx > yผมx,Yx>Y

  • ขอบเขตด้านล่างของเมทริกซ์เมื่อไม่มีตัวอักษรและเรามีxY


7

J , 16 15 ไบต์

-1 ไบต์ขอบคุณ FrownyFrog!

{~#\<:@>./~@##\

ลองออนไลน์!

ใช้เวลา Nเป็นสตริง

คำอธิบายของวิธีแก้ปัญหาเบื้องต้น:

              #\   finds the length of the successive prefixes of the input (1 2 3...)
            #~     copies each digit as many times (1 2 2 3 3 3...)  
       >./~@       and creates a table of the max of the row/col numbers
  [:<:@            then subtract 1 from each element (for indexing)
{~                 select the corresponding digit from the input

ทดสอบเซสชันด้วยอินพุต203:

   #\ '203'
1 2 3

   #~#\ '203'
1 2 2 3 3 3

   >./~@#~#\ '203'
1 2 2 3 3 3
2 2 2 3 3 3
2 2 2 3 3 3
3 3 3 3 3 3
3 3 3 3 3 3
3 3 3 3 3 3

   <:@>./~@#~#\ '203'
0 1 1 2 2 2
1 1 1 2 2 2
1 1 1 2 2 2
2 2 2 2 2 2
2 2 2 2 2 2
2 2 2 2 2 2

   ({~[:<:@>./~@#~#\) '203'
200333
000333
000333
333333
333333
333333

1
นอกเหนือจากตำแหน่งของ)คำตอบ APL ของคุณก็เหมือนกับของฉันที่ต้องการ
Erik the Outgolfer

ฉันไม่รู้จริงๆเลย J แต่[:<:@ดูเหมือนว่าจะค่อนข้างแพง คุณสามารถเพิ่มบางสิ่งลงในรายการที่คุณกำลังจัดทำดัชนีเพื่อพิจารณาการจัดทำดัชนี 1 รายการ (เช่นเติม 0 เพื่อย้ายตำแหน่งที่จำเป็น 1 องค์ประกอบไปทางขวา) หรือไม่
นาย Xcoder

@ Mr.Xcoder ฉันกำลังคิดเกี่ยวกับสิ่งนั้น ฉันจะลองดูว่ามันจะช่วยประหยัดไบต์
Galen Ivanov

@EriktheOutgolfer {⍵[∘.⌈⍨(/⍨)⍳⍴⍵]} ?
Galen Ivanov

@ GalenIvanov ใช่แล้ว
Erik the Outgolfer



6

R , 59 ไบต์

function(a){m=outer(x<-rep(g<-seq(a),g),x,pmax);m[]=a[m];m}

ลองออนไลน์!

  • ฉันสังเกตเห็นว่าการยอมรับเวกเตอร์ของตัวเลขนั้นเป็นที่ยอมรับและสิ่งนี้ทำให้ฉันสามารถบันทึก 21 ไบต์ :)
  • -2 ไบต์ขอบคุณคำแนะนำ @Giuseppe เพื่อยอมรับเฉพาะเวกเตอร์ของตัวอักษร
  • -2 ไบต์ที่กำหนดในการกำหนดอาร์กิวเมนต์

1
คุณสามารถใช้aเป็นเวกเตอร์ของตัวละครเพื่อให้คุณตั้งค่าg=seq(a)ได้โดยตรง
Giuseppe

@Giuseppe: ถูกต้อง!
digEmAll


5

05AB1E , 14 11 10 ไบต์

บันทึกแล้ว 1 ไบต์ขอบคุณMagic Octopus Urn / Adnan

ƶJDv¬N×?=¦

ลองออนไลน์!

คำอธิบาย

ƶ            # repeat each element its index (1-based) times 
 J           # join to string
  Dv         # for N in [0 ... len(string)-1] do
    ¬N×      # push the head repeated N times
       ?     # print without newline
        =    # print the rest of the string without popping
         ¦   # remove the head


1
ไม่มีเครดิตให้ฉัน แต่เครดิตคือ Adnans: codegolf.stackexchange.com/a/87074/59376
Magic Octopus Urn

@MagicOctopusUrn: อ่าเยี่ยมมาก! ขอขอบคุณคุณทั้งคู่;)
Emigna



3

Excel VBA ขนาด 95 ไบต์

funtion VBE ของหน้าต่างที่ไม่ระบุชื่อแบบทันทีที่รับอินพุตจาก[A1]และเอาต์พุตไปยังคอนโซล

n=[len(A1)]:For y=1To n:For l=1To y:?:For x=1To n:?String(x,Mid([A1],IIf(x>y,x,y)));:Next x,l,y

Ungolfed และแสดงความคิดเห็น

n=[len(A1)]                         ''  Get Length
For y=1To n                         ''  Iterate down input
For l=1To y                         ''  Iterate down repeat lines
?                                   ''  Print Newline
For x=1To n                         ''  Iterate accross input
?String(x,Mid([A1],IIf(x>y,x,y)));  ''  Print x of the `max(x,y)`th digit in input
Next x,r,y                          ''  Loop, Loop, Loop

2

MATL , 15 12 ไบต์

tftY"t!2$X>)

ลองออนไลน์!

ฉันคิดว่ามันสั้นลงได้ แต่มันก็ไม่เลว ...

          % implicit input, '230'
t         % duplicate input. Stack: ['230','230']
f         % indices of nonzero values. Stack: ['230',[1,2,3]]
t         % duplicate. Stack: ['230',[1,2,3],[1,2,3]]
Y"        % run-length decoding. Stack: ['230',[1,2,2,3,3,3]]
t         % duplicate. Stack: ['230',[1,2,2,3,3,3],[1,2,2,3,3,3]]
!         % transpose. Stack: ['230',[1,2,2,3,3,3],[1;2;2;3;3;3]]
2$X>      % elementwise maximum of 2 inputs, with broadcast.
          % Stack:
          % ['230',
          % [1, 2, 2, 3, 3, 3;
          %  2, 2, 2, 3, 3, 3;
          %  2, 2, 2, 3, 3, 3;
          %  3, 3, 3, 3, 3, 3;
          %  3, 3, 3, 3, 3, 3;
          %  3, 3, 3, 3, 3, 3]]
 )        % index into G
          % implicit end, display stack contents

2

เพิ่ม ++ , 35 ไบต์

L,bLRdBcB]£X¦Ω+d‽b>1€Ω_A€Ω:AbLR¦+$T

ลองออนไลน์!

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

เรารับข้อมูลเป็นรายการตัวเลขขณะเดียวกันก็ป้องกันไม่ให้เราก) ต้องแปลงเป็นตัวเลขด้วย BDและไม่ต้องบันทึกตัวเลขซึ่งจะใช้เวลาสองไบต์

อันดับแรกเราสร้างช่วงจาก[1 ... len (อินพุต)]ด้วยbLRจากนั้นเราทำซ้ำแต่ละองค์ประกอบn ในช่วง nครั้ง เนื่องจากไม่มี vectorisation อัตโนมัติใน Add ++ เราจึงซิปมันด้วยตัวเองdBcB]เพื่อสร้างรายการคู่[[1,1],[2,2]...[n,n]]. จากนั้นเราจะใช้starmapควบคู่ไปกับการทำซ้ำทั้งคู่: £Xก่อนที่จะทำการต่อเข้ากับอาเรย์แบนเดียว¦Ω+ )

d‽b>ต่อไปเราจะทำซ้ำอาร์เรย์นี้และตารางได้โดยสูงสุด คือแต่ละองค์ประกอบในอาเรย์นั้นถูกจับคู่กับอิลิเมนต์อื่นจากอาเรย์ที่สองและคำสั่งสูงสุดของ dyadicจะถูกรันบนทั้งคู่ สำหรับตัวอย่างอินพุตของ[6 5]สิ่งนี้จะสร้างอาร์เรย์[1 2 2 2 2 2 2 2 2]ซึ่งเป็นกระเบื้องโมเสครุ่นแบนซึ่งเป็นดัชนีสำหรับอาร์เรย์ น่าเสียดายที่ Add ++ ใช้อาร์เรย์ 0 ที่จัดทำดัชนีดังนั้นเราจำเป็นต้องลดค่าแต่ละองค์ประกอบ:1€Ω_การจัดทำดัชนีดังนั้นเราจึงจำเป็นต้องพร่องแต่ละองค์ประกอบ:

จากนั้นเราสร้างดัชนีลงในรายการอินพุตโดยกดอินพุตอีกครั้ง ( A) ซึ่งจะบันทึกไบต์อีกครั้งโดยรับอินพุตเป็นรายการ ทำดัชนีลงในรายการ€Ω:ก่อนที่จะตัดอาร์เรย์เป็นชิ้นยาวที่เหมาะสม หากจำนวนหลักในการป้อนข้อมูลจะถูกแทนด้วยxจากนั้นขนาดชิ้นส่วนคือ

x(x-1)2

หรือ xเสื้อชั่วโมง จำนวนรูปสามเหลี่ยม เราสร้างที่ผลักดันโดยความยาวของการป้อนข้อมูลของการคำนวณช่วงตั้งแต่1AbLR¦+ค่าที่แล้วการรวมกับ ตอนนี้กองสำหรับการป้อนข้อมูลของ[6 5]ดูเหมือนว่า[[6 5 5 5 5 5 5 5 5 ] 3] Tสับอาร์เรย์เป็นชิ้นขนาดnแต่การขัดแย้งอยู่ในขณะนี้คำสั่งที่ไม่ถูกต้องดังนั้นเราจึงสลับพวกเขาด้วยก่อนที่จะสับและกลับมาพร้อมกับ$T


1

ถ่าน 17 ไบต์

F⮌…LθUO⊕⊘×ι⁺³ι§θι

ลองออนไลน์!คำอธิบาย:

F⮌…Lθ

วนรอบดัชนีของอักขระในลำดับที่กลับกัน

⊕⊘×ι⁺³ι

คำนวณขนาดของตาราง

UO...§θι

วาดสี่เหลี่ยมโดยใช้อักขระปัจจุบัน




1

ถ่าน 14 ไบต์

E⭆θ×⊕κι×⊕κι‖O↗

ลองออนไลน์!

อย่างไร?

E⭆θ×⊕κι×⊕κι‖O↗ - implicitly print the result of...
E                - map:
  ⭆              -   over: string map:       
    θ             -     over: first input
     ×            -     using: repeat
        ι         -       what: ι (loop value)
      ⊕κ          -       by: incremented κ (loop counter)
         ×        -   using: repeat
            ι     -     what: ι (loop value)
          ⊕κ      -     by: incremented κ (loop counter)
             ‖O  - Reflect with overlap:
                ↗ -   direction: up-right

... วิธีนี้สามารถเล่นกอล์ฟได้หรือไม่?


"... วิธีนี้สามารถเล่นกอล์ฟได้หรือไม่" แม้แต่ทางออกของนีลก็ยาวกว่าฉันจึงไม่เห็นความหวังใด ๆ ที่นี่ : P
Erik the Outgolfer

×⊕κιแม้ว่าสองครั้ง
Jonathan Allan

สิ่งนี้คือมันไม่ง่ายเลยที่จะกำหนดให้กับตัวแปรเนื่องจากค่าของιและκการเปลี่ยนแปลงในทุกการวนซ้ำของลูป everyach
Erik the Outgolfer

จำเป็นต้องมีฟังก์ชั่น แต่ฉันไม่รู้ว่ามันเป็นไปได้หรือไม่
Jonathan Allan

คำถามที่ถามคือถ้าเป็นไปได้ใน 3 (หรือ 5 ขึ้นอยู่กับวิธีกำหนดฟังก์ชัน) ไบต์หรือน้อยกว่า ;) (คำตอบที่ชัดเจนคือไม่แน่นอน)
Erik the Outgolfer

1

Stax , 12 ไบต์

ü°√¿«│⌠º₧@\τ

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

ใช้อัลกอริทึมนี้นี้

คำอธิบาย:

c%R:BXm]i*xit+ Full program, implicit input
c%             Length of input
  R            1-based range
   :B          Repeat each element according to the range ("123" -> "122333")
     X         Save to X register
      m        Map:
       ]         Character -> string
        i*       Repeat by iteration index
          xit    Trim first <iteration index> elements from X
             +   Concatenate
                 Implicit output with newline

สแตกซ์ , 20 19 18 16 ไบต์

ù↔‼i,ÑΓæ☺=╘‼æ↕4╝

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

คำอธิบาย:

c%R:BX%mYx%{y|Mvx@m Full program, implicit input
c%                  Length of input
  R                 1-based range
   :B               Repeat each element according to the range ("123" -> "122333")
     X              Save to X register
      %             Length
       m            Map over 1-based range:
        Y             Save index to Y register
         x%           Push length of X register
           {      m   Map over 1-based range:
            y|M         Maximum of both indices
               v        1-based -> 0-based (decrement)
                x@      Index into X register
                      Implicit output with newline

1

ทูต 34 ไบต์

{_[Table[Max,Flat!{_&_}=>1:#_]-1]}

ลองออนไลน์!

คำอธิบาย

ทำงานคล้ายกับเลน Ivanov คำตอบของ

{_[Table[Max,Flat!{_&_}=>1:#_]-1]}
{                                }   anonymous function: _ is input, array of digits
                                     example: _ := [2, 0, 3]
                         1:#_        the range 1 to Size[_]
                                     > e.g.: [1, 2, 3]
                  {   }=>            over each number N:
                   _&_                   map to N repeated N times
                                     > e.g.: [[1], [2, 2], [3, 3, 3]]
             Flat!                   flatten it
                                     > e.g.: [1, 2, 2, 3, 3, 3]
   Table[Max,                ]       create a "max" table with it
                                     > e.g.:
                                       1 2 2 3 3 3
                                       2 2 2 3 3 3
                                       2 2 2 3 3 3
                                       3 3 3 3 3 3
                                       3 3 3 3 3 3
                                       3 3 3 3 3 3
                              -1     subtract 1 from each
                                     > e.g.:
                                       0 1 1 2 2 2
                                       1 1 1 2 2 2
                                       1 1 1 2 2 2
                                       2 2 2 2 2 2
                                       2 2 2 2 2 2
                                       2 2 2 2 2 2
 _[                             ]    index the original array with this matrix
                                     > e.g.:
                                       2 0 0 3 3 3
                                       0 0 0 3 3 3
                                       0 0 0 3 3 3
                                       3 3 3 3 3 3
                                       3 3 3 3 3 3
                                       3 3 3 3 3 3



1

QBasic 1.1 , 127 bytes

INPUT S$
FOR X=1TO LEN(S$)
K=K+X
R$=R$+STRING$(X,MID$(S$,X,1))
NEXT
FOR C=1TO K
?STRING$(C-1,MID$(R$,C,1))RIGHT$(R$,K-C+1)
NEXT

-4 ขอบคุณที่DLosc

ใช้รุ่นที่ปรับเปลี่ยนXNOR ของงูหลาม 2 อัลกอริทึม

อินพุตเป็นสตริงที่ไม่มีเครื่องหมาย เอาต์พุตถูก\nคั่นโดยไม่มีช่องว่างหรือ\ns


1

QBasic , 111 ไบต์

ฟังก์ชันที่ไม่ระบุชื่อที่พร้อมต์รับอินพุตและเอาต์พุตไปยังคอนโซล

INPUT s$
n=LEN(s$)
FOR y=1TO n
FOR l=1TO y
?
FOR x=1TO n
z=x
IF y>x THEN z=y
?STRING$(x,MID$(s$,z));
NEXT x,l,y

ดูดี แต่คุณไม่ได้หมายถึง "โปรแกรมเต็มรูปแบบ" ใช่หรือไม่ ฉันไม่คิดว่า QBasic มี "ฟังก์ชั่นที่ไม่ระบุชื่อ"
DLosc

0

Php 7.1 , 163 bytes

Via CLI ระบุหมายเลขเป็นอาร์กิวเมนต์:

<?foreach(str_split($argv[1])as$k=>$d)$a[]=array_fill(0,$s+=$k+1,array_fill(0,$s,$d));foreach(array_replace_recursive(...array_reverse($a))as$v)echo join($v)."\n";

ไม่เล่นกอล์ฟ:

$n = 123;

foreach(str_split($n) as $k => $d) {
    $s += $k + 1;
    $a[] = array_fill(0, $s, array_fill(0, $s, $d));
}

foreach(array_replace_recursive(...array_reverse($a)) as $v)
    echo implode('', $v) . "\n";

เอาท์พุท:

122333
222333
222333
333333
333333
333333

วิธี:

โดยทั่วไปสร้างสแควร์อาเรย์หลายมิติซึ่งประกอบด้วยตัวเลขแล้วจึงใส่เข้าไปใหม่ทั้งหมด (array_replace_recursive)

(ใช่ฉันรู้ว่านี่นานน่าอาย)


หากอินพุตเป็นอาร์เรย์ของตัวเลขที่กำหนดไว้ล่วงหน้าและ echo implode / join ถูกลบ / แทนที่ด้วยการกำหนดให้กับรายการของตัวเลขหลักสิ่งนี้สามารถลดลงได้ประมาณ 119 ไบต์และยังคงยาว
Progrock


0

Japt, 12 ไบต์

รับอินพุตเป็นสตริงเอาต์พุตอาร์เรย์ของสตริง

Ë+pE
¬£h°YçX

ลองมัน


คำอธิบาย

            :Implicit input of string U
Ë           :Map each character D at 0-based index E
  pE        :  Repeat D E times
 +          :  Append to D
\n          :Reassign to U
¬           :Split to character array
 £          :Map each element X at 0-based index Y
   °Y       :  Increment Y
     çX     :  Repeat X Y times
  h         :  Replace the first Y characters in U with that

0

uBASICขนาด 120 ไบต์

ฟังก์ชันที่ไม่ระบุชื่อที่รับอินพุต foprm STDIN และส่งออกไปยัง STDOUT

0Input"",S$:N=Len(S$):ForY=1ToN:ForL=1ToY:ForX=1ToN:ForC=1ToX:Z=X:IfY>XThenZ=Y
1?Mid$(s$,z,1);:NextC:NextX:?:NextL:NextY

ลองออนไลน์!


0

Visual Basic .NET (VBC) , 198 ไบต์

Subประจำที่ต้องใช้ข้อมูลจาก STDIN และผลการ STDOUT

ดูเหมือนจะไม่สามารถทำให้ StrDup ทำงาน: /

Module M
Sub Main
Dim c,s,n,l,x,y
s=Console.readLine()
n=Len(s)
For y=1To n
For l=1To y
For x=1To n
For c=1To x
Console.Write(Mid(s,IIf(x>y,x,y),1)&IIf(c=n,vbLf,""))
Next c,x,l,y 
End Sub
End Module

ลองออนไลน์!


0

ลัวะ 149 140 ไบต์

ฟังก์ชั่นที่ยอมรับรายการของสตริงหลักและพิมพ์ผลลัพธ์ไปที่ stdout นี่เป็นความพยายามครั้งแรกของฉันที่การตีกอล์ฟ

ลองออนไลน์!

function(a)F,s=0,""for b=1,#a do s=s..a[b]:rep(b)end;for b=1,#a do io.write((s.."\n"):rep(b))F,z=F+b,a[b+1]or""s=z:rep(F)..s:sub(F+1)end end

Ungolfed:

G = function(p)
    F,s = 0,""
    for i=1,#p do
        s=s..p[i]:rep(i)
    end
    for i=1, #p do
        io.write((s.."\n"):rep(i))
        F,z = F+i, p[i+1]or""
        s = z:rep(F)..s:sub(F+1)
    end
end
-- allows to pass the argument list from stdin
-- example: {"1", "2", "3", "4", "5"}
G(load("return " .. io.read())())


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