Gambarlah beberapa panah yang meluas

25

Tantangan ini adalah tentang mencetak serangkaian panah seni-ASCII yang sedang tumbuh. Saya akan menjelaskan polanya dalam kata-kata, tetapi mungkin akan lebih mudah untuk melihat seperti apa awal seri ini:

>
<
->
<-
-->
<--
--->
<---
---->
<----
----->
<-----
------>
<------
...

Panah dengan panjang n berisi panah ( <atau >) dan n-1garis putus - putus ( -). Panah yang menghadap kanan memiliki tanda hubung pertama, kemudian a >. Panah yang berhadapan dengan kiri dimulai dengan <, dan diikuti oleh tanda hubung. Serial ini terdiri dari npanah yang menghadap ke kanan panjang diikuti oleh panjang n panah yang menghadap ke kiri, dengan n dari 1 hingga tak terbatas.

Untuk menyelesaikan tantangan, tulis sebuah program atau fungsi yang mengambil satu input, integer i >= 1, dan output ipanah pertama . Panah bersifat individual, bukan berpasangan kiri-kanan, jadi untuk i=3Anda harus mengeluarkan:

>
<
->

Anda dapat mengembalikan daftar string, atau mencetaknya satu demi satu. Jika mencetak, panah harus dibatasi oleh pembatas yang konsisten, yang tidak harus berupa baris baru seperti pada contoh.

Ini adalah , byte paling sedikit menang.

Pavel
sumber
2
Terkait .
AdmBorkBork
Bisakah kita memiliki spasi sebelum / setelah setiap baris?
Olivier Grégoire
@ OlivierGrégoire Ya, tertinggal spasi tidak apa-apa.
Pavel
Dan menuju ruang kosong?
Olivier Grégoire
@ OlivierGrégoire Ya, tidak apa-apa.
Pavel

Jawaban:

9

Kanvas , 10 byte

⇵-×<n¹[↔}]

Coba di sini!

dzaima
sumber
Saya tidak tahu kanvas apa pun, tetapi apakah saya melihat gambar panah bawaan? agak terlihat seperti itu!
Pavel
2
adalah "reverse horizontal" built-in (juga swapping >& <), sayangnya tidak ada panah built-in: p
dzaima
8

R , 69 byte

for(i in 1:scan()-1)cat('<'[i%%2],rep('-',i/2),'>'[!i%%2],'
',sep='')

Cobalah online!

  • -5 byte terima kasih kepada @Giuseppe
  • -3 byte terima kasih kepada @Robert S.
menggali semua
sumber
strreppaksakan argumen keduanya integeragar Anda dapat menggunakannya /sebagai pengganti%/%
Giuseppe
Anda juga dapat menyingkirkan aseluruhnya dengan mengindeks lebih dari 0...(n-1): Coba online!
Giuseppe
Saya idiot ... terima kasih! : D
digEmAll
@ Giuseppe: juga saya baru saja memperhatikan pertanyaan yang dihapus dari Robert S. Saya dapat menggunakan rep daripada strrep dan menyimpan 3 byte ... (facepalm)
digEmAll
8

Java (JDK) , 81 byte

n->{for(int i=0;i<n;)System.out.printf(i%2<1?"<%s%n":"%s>%n","-".repeat(i++/2));}

Cobalah online!

Penjelasan

n->{                  // int-accepting consumer
 for(int i=0;i<n;)    //  for each i from 0 to n-1 included
  System.out.printf(  //   output on stdout with a pattern
   i%2<1              //    if i is even:
    ?"<%s%n"          //     use the left-arrow pattern
    :"%s>%n",         //    else: use the right-arrow pattern
   "-".repeat(i++/2)  //    fill the "%s" in the pattern with i/2 dashes, and increment i
  );                  // 
}                     //
Olivier Grégoire
sumber
@candied_orange Itu tidak lengkap.
Olivier Grégoire
Bagaimana kalau dilakukan seperti ini ?
candied_orange
@candied_orange Sama saja: impor diperlukan dalam hitungan.
Olivier Grégoire
Kenapa tidak import java.util.function.*;dihitung?
candied_orange
8

Haskell, 41 40 byte

(`take`g">")
g p=p:('<':init p):g('-':p)

Cobalah online!

Rekursi lama biasa: mulai dengan string p= ">", kumpulkan p, <di depan semua kecuali karakter terakhir pdan panggilan rekursif dengan satu -diletakkan di depan p. Ambil nitem pertama dari daftar ini.

Sunting: -1 byte berkat @xnor.

nimi
sumber
1
Perubahan aneh untuk menyimpan byte.
xnor
6

Commodore BASIC V2 (C64), 94 byte

0inputn:fOi=1ton:oniaN1gO1:?"<";
1on-(i<3)gO2:fOj=1.5toi/2:?"-";:nE
2on-nOiaN1gO3:?">";
3?:nE

Tidak sepenuhnya yakin tentang jumlah byte, ini didasarkan pada representasi teks untuk mengetik program yang valid. Ini sedikit lebih pendek pada disk (91 byte) karena BASIC V2 menggunakan representasi program "tokenized".

Demo online

Sedikit "tidak berbulu":

0 inputn:fori=1ton:oniand1goto1:print"<";    :rem read n from user, loop to n, if odd skip "<"
1 on-(i<3)goto2:forj=1.5toi/2:print"-";:next :rem skip for i<3, print (i-1)/2 times "-"
2 on-notiand1goto3:print">";                 :rem if even skip ">"
3 print:next                                 :rem newline and next loop iteration
Felix Palmen
sumber
6

Brainfuck yang memodifikasi sendiri , 55 byte

Ambil input sebagai kode karakter.
Hanya mendukung input hingga 255.
Gunakan karakter nol untuk memisahkan baris.

Secara kebetulan, semua karakter panah-gambar digunakan sebagai perintah BF. Sayangnya, itu tidak menyimpan byte (saat ini).

>>,[<<[-<.>>+<]<<.>>.+>>-[<<<<<.>>>>[-<+<.>>].>-<]>]<>-

Cobalah online!

Penjelasan

 Code  |              Memory         | Output | Comment
-------+-----------------------------+--------+--------------------------
       | '<' '>' '-' [0]  0   0   0  |        |
>>,    | '<' '>' '-'  0   0  [x]  0  |        |
[      |                             |        |
       | '<' '>' '-'  l   0  [x]  0  |        | l = arrow length
<<[-<  |                             |        | copy l to next cell
.>>+<] |                             |        | and print '-'
       | '<' '>' '-' [0]  l   x   0  | -----  | there are l '-'s
<<.    | '<' [>] '-'  0   l   x   0  | >      |
>>.+   | '<' '>' '-' [1]  l   x   0  | <null> |
>>-    | '<' '>' '-'  1   l  [y]  0  |        | y=x-1
[      |                             |        | execute if y>0
<<<<<. | [<] '>' '-'  1   l   y   0  | <      |
>>>>   | '<' '>' '-'  1  [l]  y   0  |        |
[-<+<. |                             |        |
>>]    | '<' '>' '-'  L  [0]  y   0  | -----  | L=l+1
.      | '<' '>' '-'  L  [0]  y   0  | <null> |
>-<]>] |                             |        | decrement y
<>-    |                             |        | do nothing, used as data
pengguna202729
sumber
6

Python 2 , 54 byte

terima kasih kepada dan Jo King untuk memperbaiki bug.

k=0
exec"print k%2*'<'+k/2*'-'+~k%2*'>';k+=1;"*input()

Cobalah online!

ovs
sumber
3
Panah Anda memiliki garis putus-putus terlalu banyak; hanya setiap yang lain harus diperpanjang dengan tanda hubung.
xnor
1
54 byte
tsh
5

Pyth, 17 byte

m_W%d2+*\-/d2@"><

Output adalah daftar string. Cobalah online di sini .

m_W%d2+*\-/d2@"><"dQ   Implicit: Q=eval(input())
                       Trailing "dQ inferred
m                  Q   Map [0-Q), as d, using:
          /d2            Floored division of d by 2
       *\-               Repeat "-" the above number of times
      +                  Append to the above...
             @"><"d      Modular index d into "><" - yields ">" for even d, "<" for odd
                         - examples: d=4 gives "-->", d=7 gives "---<"
 _W                      Reverse the above if...
   %d2                   ... (d % 2) != 0
                       Implicit print result of the map
Sok
sumber
5

PowerShell , 62 56 50 byte

param($n)(0..$n|%{($j='-'*$_)+'>';"<$j"})[0..--$n]

Cobalah online!

Loop dari 0hingga input $n, setiap iterasi membuat dua string panah. Itu kemudian diindeks dengan 0..--$nuntuk menarik jumlah elemen yang benar.

Disimpan 6 byte berkat KGlasier.

AdmBorkBork
sumber
Mengacaukan dengan solusi saya sendiri, saya menemukan cara untuk memotong beberapa byte pada Anda: Dapat menyimpan 4 byte dengan membungkus lingkaran dalam tanda kurung dan pengindeksan langsung. yaitu param($n)(0..$n|%{($j='-'*$_++)+'>';"<$j"})[0..--$n]. Jadi sekarang Anda tidak perlu menulis $xdua kali.
KGlasier
Juga Anda dapat menyimpan dua byte lainnya tidak menggunakan ++di ($j='-'*$_++)saat Anda tidak menggunakan $_tempat lain.
KGlasier
1
@ KGlasier Luar Biasa - terima kasih untuk golf yang jelas! :)
AdmBorkBork
5

Python 3, 53 byte

Jawaban codegolf pertama saya.

lambda x:[i%2*"<"+i//2*"-"+~i%2*">"for i in range(x)]

-10 byte terima kasih kepada Jo King

Stef van der Zon
sumber
5

Haskell , 51 44 byte

-7 byte terima kasih kepada xnor (menggunakan iteratelebih dari daftar-pemahaman)!

(`take`do b<-iterate('-':)"";[b++">",'<':b])

Cobalah online!

Penjelasan / Tidak Diundang

Menggunakan do-notation menyelamatkan kita concat, dan menggunakan infix-notation memungkinkan fungsi pointfree dengan take, membatalkan ini akan memberi:

f n = take n $ concat [ [b++">", '<':b] | b <- iterate ('-':) "" ]
ბიმო
sumber
5

Japt -m, 16 15 13 12 bytes

Disimpan 1 byte berkat Shaggy

g<i>)iUUz ç-

Uji secara online

Penjelasan:

-m            // Map the program through [0...Input); U becomes the iterative number
g<i>)iUUz ç-  
 <i>          // ">" prepended with "<", creating "><"
g             //   Get the char at index U, with index-wrapping
    i         // Insert:
     U        //   At index U, with index-wrapping
         ç-   //   "-" repeated:
      Uz      //     U/2 times
Oliver
sumber
1
12 byte
Shaggy
@Shaggy Ha! Sangat pintar, terima kasih!
Oliver
4

MathGolf , 17 15 byte

Disimpan 2 byte berkat Jo King dan Kevin Cruijssen

{ï½'-*'>ï¥╛Å⌡\n

Cobalah online!

Penjelasan

Pendekatan 15-byte berbeda dibandingkan dengan solusi asli saya, saya tidak bisa mengambil kredit apa pun untuk implementasi.

{                 start block or arbitrary length
 ï                index of current loop, or length of last loop
  ½               pop a : push(a//2 if int else a/2)
   '-             push single character "-"
     *            pop a, b : push(a*b)
      '>           push single character ">"
        ï         index of current loop, or length of last loop
         ¥        modulo 2
          ╛       if without else
           Å      start block of length 2
            ⌡     decrement twice
             \    swap top elements
              n   newline char, or map array with newlines
maks
sumber
Bagaimana cara if/elsekerjanya di MathGolf? Saya tahu bagaimana pernyataan if-without-else dan else-without-if bekerja, tetapi bagaimana membuat if {...} else {...} di MathGolf with ¿? (Mungkin saya harus memposting ini dalam obrolan, bukan di sini .. Tapi saya mungkin memiliki penghematan 1 byte jika saya dapat memperbaiki if-else.)
Kevin Cruijssen
1
@KevinCruijssen Saya pikir ini bekerja dengan dua perintah / blok berikutnya mis. ¿12akan mendorong 1 jika benar, atau 2, ¿Å3*Å1+akan menambahkan satu jika benar lain tiga kali lipat elemen berikutnya
Jo King
@KevinCruijssen The if / else muncul dua operator atau blok dari kode. Jo King benar dalam contohnya, tetapi Anda juga bisa melakukan ¿{"foo"}{"bar"}atau ¿1{2}.
Maks
@JoKing, saya akan menambahkan TODO untuk memperbaiki dokumen untuk operator pengiris.
Maks
1
15 byte menggunakan solusi @ KevinCruijssen
Jo King
4

Japt -m , 14 byte

"<>"¬hUUz ç-)q

Cobalah online!

Diperbarui dengan metode yang sama sekali baru.

Penjelasan:

                  #Implicitly map over the range [0..input) as U
"<>"              #The string "<>"
    ¬             #Split into the array ["<",">"]
     hU     )     #Replace the element at index U with wrapping:
           -      # The character '-'
          ç       # Repeated a number of times equal to
       Uz         #  U integer divided by 2
             q    #Join the array to a string
Kamil Drakari
sumber
1
çauto-cast parameter pertama ke dalam string, sehingga Anda dapat menjatuhkannya '.
Oliver
1
Anda tidak perlu umetode ini berkat pembungkus indeks sehingga ini bisa menjadi 14 byte.
Shaggy
4

C (gcc) , 80 77 76 74 71 byte

g(n,i,j){--n&&g(n);for(j=n%2,i=n/=2;putchar(~n?n---i*j?45:62-j*2:0););}

Cobalah online!

-3 byte dengan ide dari ASCII-only .

-1 dengan \0alih - alih\n

-5 mengatur ulang bagian


Output termasuk trailing \0.

g(n,i,j){
    --n&&g(n);              //draw smaller arrows first (if n>1)
    for(j=n%2,i=n/=2;       //j:!(input parity); i:arrow len-1=ceil(input)/2-1
        putchar(~n          //if n>=0, arrow is not yet completed
                ? n---i*j   //if not first (j==1) or last (j==0) char of arrow:
                  ? 45      // output '-'
                  : 62-j*2  // otherwise, output the appropriate arrow head
                : 0););     //\0 after arrow complete. putchar returns 0; loop terminates
}
attinat
sumber
ini mungkin lebih jelas? idk
ASCII
begitu dekat: /
ASCII-satunya
@ Hanya ASCII Ya, itu harus lebih jelas, bahkan jika itu tidak membuat perbedaan untuk bytecount. Adapun poin kedua .. terima kasih untuk idenya! Berhasil memangkas ke 78 dengan itu.
Atap
XD Anda masih memiliki !n--kode kunci pertama
ASCII
3

JavaScript (ES6), 58 byte

Mengembalikan string yang dipisahkan ruang.

n=>(g=p=>n--?k++&1?`<${p} `+g(p+'-'):p+'> '+g(p):'')(k='')

Cobalah online!

Arnauld
sumber
3

SNOBOL4 (CSNOBOL4) , 123 122 118 byte

	N =INPUT - 1
P	H =X / 2
	Y =DUPL('-',H)
	OUTPUT =EQ(H,X - H) Y '>'	:S(I)
	OUTPUT ='<' Y
I	X =LT(X,N) X + 1	:S(P)
END	

Cobalah online!

Giuseppe
sumber
3

V , 22 byte

i>
<Àñäkjjé-já-ñÀGjdG

Cobalah online!

DJMcMayhem
sumber
5
Ini terlihat seperti beberapa bahasa skandinavia yang aneh
Pavel
3

Arang , 16 byte

NθFθ«⊘ι↓>‖T»Fθ‖T

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Saya memiliki tiga solusi 17-byte sebelum akhirnya menemukan yang satu ini. Penjelasan:

Nθ

Masukan n.

Fθ«

Ulangi nkali, diindeks 0.

⊘ι

Gambarkan garis -dengan panjang setengah indeks (terpotong).

↓>

Gambarlah panah dan pindah ke baris berikutnya.

‖T»

Refleksikan semuanya, membalikkan panah.

Fθ‖T

Loop di atas memiliki nrefleksi, tetapi kita membutuhkan sejumlah refleksi, jadi lakukan nrefleksi lain .

Neil
sumber
3

Bersih , 76 73 byte

import StdEnv,StdLib
$n=take n[s\\i<-inits['--'..],s<-[i++['>'],['<':i]]]

Cobalah online!

Menggunakan fakta rapi yang ['-','-'..]sama ['--'..]dengan menghemat sedikit.

Suram
sumber
3

JavaScript, 49 byte

f=n=>--n?f(n,l='')+(n%2?`
<`+l:`
${l+='-'}>`):'>'

Cobalah online!

tsh
sumber
Wow, cukup keren
Limbo
... tapi ini terus 10000berlanjut, sementara itu solusi ES6 saya masih berfungsi: D Bagaimanapun juga, solusi Anda sangat keren)
Limbo
2

Powershell, 51 byte

param($n)0..$n|%{'-'*$_+'>';'<'+'-'*$_}|?{$n---gt0}
mazzy
sumber
2

6502 kode mesin (C64), 49 byte

00 C0 20 9B B7 A2 00 8A 4A A8 90 05 A9 3C 20 D2 FF A9 2D C0 00 F0 06 20 D2 FF 
88 D0 FA 8A 4A B0 05 A9 3E 20 D2 FF A9 0D 20 D2 FF E8 E4 65 D0 D7 60

Masih agak lebih pendek dari BASIC ;) Yang ini hanya memiliki rentang angka hingga255 karena ukuran integer alami mesin hanya memiliki 8 bit.

Demo online

Penggunaan: SYS49152,[n](misalnya SYS49152,3untuk contoh dari tantangan)

Komentar pembongkaran :

         00 C0       .WORD $C000        ; load address
.C:c000  20 9B B7    JSR $B79B          ; get unsigned byte from commandline
.C:c003  A2 00       LDX #$00           ; main loop counter
.C:c005   .loop:
.C:c005  8A          TXA                ; loop counter to accumulator
.C:c006  4A          LSR A              ; divide by 2, shift lowest bit to C
.C:c007  A8          TAY                ; result to Y
.C:c008  90 05       BCC .toright       ; C clear -> counter even, skip '<'
.C:c00a  A9 3C       LDA #$3C           ; load character '<'
.C:c00c  20 D2 FF    JSR $FFD2          ; output character
.C:c00f   .toright:
.C:c00f  A9 2D       LDA #$2D           ; load character '-'
.C:c011  C0 00       CPY #$00           ; counter/2 == 0 ? then no dashes
.C:c013  F0 06       BEQ .skipdashes
.C:c015   .printdashes:
.C:c015  20 D2 FF    JSR $FFD2          ; output character
.C:c018  88          DEY                ; decrement Y
.C:c019  D0 FA       BNE .printdashes   ; not 0 yet -> repeat
.C:c01b   .skipdashes:
.C:c01b  8A          TXA                ; loop counter to accumulator
.C:c01c  4A          LSR A              ; shift lowest bit to C
.C:c01d  B0 05       BCS .toleft        ; C set -> counter odd, skip '>'
.C:c01f  A9 3E       LDA #$3E           ; load character '>'
.C:c021  20 D2 FF    JSR $FFD2          ; output character
.C:c024   .toleft:
.C:c024  A9 0D       LDA #$0D           ; load newline character
.C:c026  20 D2 FF    JSR $FFD2          ; output character
.C:c029  E8          INX                ; next loop iteration
.C:c02a  E4 65       CPX $65            ; compare to command line argument
.C:c02c  D0 D7       BNE .loop          ; not reached yet -> repeat main loop
.C:c02e  60          RTS                ; exit
Felix Palmen
sumber
2

Perl 6 , 39 byte

{map {'<'x$_%2~'-'x$_/2~'>'x$_%%2},^$_}

Cobalah online!

Blok kode anonim yang mengembalikan daftar baris.

Jo King
sumber
2

K (ngn / k) , 31 29 byte

{"<->"x#2,x{(1=*x)_1,2-|x}\0}

Cobalah online!

pertama-tama kita membuat daftar dengan 0 bukan "<", 1 bukannya "-", dan 2 bukannya ">":

{ } berfungsi dengan argumen x

x{... }\0terapkan waktu fungsi dalam x, dimulai dengan nilai awal 0dan pertahankan hasil antara

|x membalikkan

2- ganti 0 dengan 2 dan sebaliknya, pertahankan 1s sebagaimana adanya

1, tambahkan sebuah 1

(1=*x)_Apakah yang pertama xsama dengan 1? jika ya, jatuhkan satu elemen, jika tidak drop 0 elemen (tidak melakukan apa-apa)

2,tambahkan 2 untuk ">"panah awal

x#kami memiliki sedikit terlalu banyak daftar, sehingga mengambil hanya yang pertama xdari mereka

"<->" gunakan elemen daftar '(0/1/2) sebagai indeks dalam string ini

ngn
sumber
Saya ingin meminta penjelasan (saya belum mulai belajar K, saya belum tahu versi mana yang dimulai dengan ...)
Galen Ivanov
1
@ GalenIvanov saya mencoba menulis penjelasan, saya harap ini masuk akal. terima kasih atas minat Anda pada bahasa favorit saya :) ada beberapa implementasi dengan kelebihan dan kekurangan yang berbeda (asli kx , kona , oK dan saya bekerja sendiri). Anda ingin bergabung dengan ruang obrolan apl agar saya dapat memberi Anda detail lebih lanjut?
ngn
Terima kasih, saya sudah ada di sana
Galen Ivanov
2

05AB1E , 23 20 byte

FNÉD„><è'-N;∍«s_iR},

Cobalah online!

Pertama kali menggunakan 05AB1E atau bahasa golf lainnya. Ada ide yang menyambut.

-3 dari Kevin Cruijssen

nedla2004
sumber
1
Selamat datang di dunia 05AB1E, dan jawaban pertama yang bagus. +1 dari saya. :) "><"bisa „><untuk menyimpan byte. Ada builtin untuk string 1, 2, dan 3 char, menjadi ', dan masing-masing. Berikut ini adalah alternatif 18 byte yang saya buat, tapi mungkin bisa sedikit lebih golf. Jika Anda belum melihatnya, kami memiliki kiat untuk bermain golf di halaman 05AB1E , dan juga merasa bebas untuk bertanya apa pun dalam obrolan .
Kevin Cruijssen
1
@KevinCruijssen Terima kasih banyak atas ide Anda. Saya merasa tidak benar hanya dengan menggunakan kode Anda, karena rasanya cukup berbeda dari saya, tetapi saya memang menggunakan gagasan modulo 2 sebagai memeriksa apakah nomor tersebut aneh. Saya juga menggunakan ide dua karakter string. Saya tidak keberatan sama sekali jika Anda memposting versi 18 byte sendiri.
nedla2004
Saya sudah memposting jawaban saya dalam kasus itu. :)
Kevin Cruijssen
2

C # (.NET Core) , 90 byte

a=>{for(int i=0;i<a;i++){var s=new String('-',i/2);Console.WriteLine(i%2<1?s+">":"<"+s);}}

Cobalah online!

Menggunakan delegasi Action untuk menarik input dan tidak membutuhkan pengembalian.

Tidak Disatukan:

a => {
    for(int i = 0; i < a; i++)          // from [0, a)
    {
        var s = new String('-', i / 2);     // create string of dashes of length (a / 2)
        Console.WriteLine(i % 2 < 1 ?       // write arrow
                                s + ">" :       // if i is even: dashes plus ">"
                                "<" + s);       // if i is odd: "<" plus dashes
    }
}
Meerkat
sumber
89 byte
Perwujudan Ketidaktahuan
@EmbodimentofIgnorance Tidak berfungsi, melewatkan string keluaran ">" pertama.
Meerkat
Bagaimana dengan ini?
Perwujudan Ketidaktahuan
2

ES6, 96 82 79 70 byte

Cobalah online! (Terima kasih kepada @Oliver)

n=>[...Array(n)].map((_,i)=>(i%2?"<":"")+"-".repeat(i/2)+(i%2?"":">"))
Limbo
sumber
1
Selamat datang di PPCG! Secara default, mengambil input sebagai variabel tidak diizinkan; Anda harus membuatnya menjadi fungsi (cukup taruh i=>di depan kode Anda!) atau dari argumen baris perintah atau STDIN atau sesuatu.
HyperNeutrino
@HyperNeutrino oke, jawabannya diedit. Namun, jawaban yang paling banyak berisi hanya berisi fungsi, tetapi ok. Pokoknya saya orang luar)
Limbo
Bisakah Anda menautkannya? Saya tidak berpikir salah satu dari mereka tidak valid, setidaknya bukan yang teratas.
HyperNeutrino
1
Beberapa byte lagi: Cobalah online
Oliver
1
Beberapa byte lagi jika Anda mengatur ulang operator ternary terakhir dan menghapus tanda kurung pusat: Coba online
Oliver
2

Merah , 109 108 byte

-1 byte terima kasih kepada NK1406

func[n][repeat i n[print reduce[pick[pad/with pad/left/with]k: i% 2 + 1
pick copy"<>"k i / 2 + k - 1 #"-"]]]

Cobalah online!

Galen Ivanov
sumber
1
-1 untuk menghapus spasi
NK1406
@ NK1406 Terima kasih! Saya tidak tahu ini valid.
Galen Ivanov