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-1
garis 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 n
panah 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 i
panah pertama . Panah bersifat individual, bukan berpasangan kiri-kanan, jadi untuk i=3
Anda 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 kode-golf , byte paling sedikit menang.
Jawaban:
Kanvas , 10 byte
Coba di sini!
sumber
↔
agak terlihat seperti itu!↔
adalah "reverse horizontal" built-in (juga swapping>
&<
), sayangnya tidak ada panah built-in: pR , 69 byte
Cobalah online!
sumber
strrep
paksakan argumen keduanyainteger
agar Anda dapat menggunakannya/
sebagai pengganti%/%
a
seluruhnya dengan mengindeks lebih dari0...(n-1)
: Coba online!Java (JDK) , 81 byte
Cobalah online!
Penjelasan
sumber
import java.util.function.*;
dihitung?Haskell,
4140 byteCobalah online!
Rekursi lama biasa: mulai dengan string
p
=">"
, kumpulkanp
,<
di depan semua kecuali karakter terakhirp
dan panggilan rekursif dengan satu-
diletakkan di depanp
. Ambiln
item pertama dari daftar ini.Sunting: -1 byte berkat @xnor.
sumber
Commodore BASIC V2 (C64), 94 byte
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":
sumber
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
sumber
Python 2 , 54 byte
terima kasih kepada dan Jo King untuk memperbaiki bug.
Cobalah online!
sumber
Pyth, 17 byte
Output adalah daftar string. Cobalah online di sini .
sumber
PowerShell ,
625650 byteCobalah online!
Loop dari
0
hingga input$n
, setiap iterasi membuat dua string panah. Itu kemudian diindeks dengan0..--$n
untuk menarik jumlah elemen yang benar.Disimpan 6 byte berkat KGlasier.
sumber
param($n)(0..$n|%{($j='-'*$_++)+'>';"<$j"})[0..--$n]
. Jadi sekarang Anda tidak perlu menulis$x
dua kali.++
di($j='-'*$_++)
saat Anda tidak menggunakan$_
tempat lain.Python 3, 53 byte
Jawaban codegolf pertama saya.
-10 byte terima kasih kepada Jo King
sumber
Haskell ,
5144 byte-7 byte terima kasih kepada xnor (menggunakan
iterate
lebih dari daftar-pemahaman)!Cobalah online!
Penjelasan / Tidak Diundang
Menggunakan
do
-notation menyelamatkan kitaconcat
, dan menggunakan infix-notation memungkinkan fungsi pointfree dengantake
, membatalkan ini akan memberi:sumber
Japt
-m
,16151312 bytesDisimpan 1 byte berkat Shaggy
Uji secara online
Penjelasan:
sumber
Jelly , 15 byte
Cobalah online!
sumber
MathGolf ,
1715 byteDisimpan 2 byte berkat Jo King dan Kevin Cruijssen
Cobalah online!
Penjelasan
Pendekatan 15-byte berbeda dibandingkan dengan solusi asli saya, saya tidak bisa mengambil kredit apa pun untuk implementasi.
sumber
if/else
kerjanya 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.)¿12
akan mendorong 1 jika benar, atau 2,¿Å3*Å1+
akan menambahkan satu jika benar lain tiga kali lipat elemen berikutnya¿{"foo"}{"bar"}
atau¿1{2}
.Japt
-m
, 14 byteCobalah online!
Diperbarui dengan metode yang sama sekali baru.
Penjelasan:
sumber
ç
auto-cast parameter pertama ke dalam string, sehingga Anda dapat menjatuhkannya'
.u
metode ini berkat pembungkus indeks sehingga ini bisa menjadi 14 byte.C (gcc) ,
8077767471 byteCobalah online!
-3 byte dengan ide dari ASCII-only .
-1 dengan
\0
alih - alih\n
-5 mengatur ulang bagian
Output termasuk trailing
\0
.sumber
!n--
kode kunci pertamaJavaScript (ES6), 58 byte
Mengembalikan string yang dipisahkan ruang.
Cobalah online!
sumber
SNOBOL4 (CSNOBOL4) ,
123122118 byteCobalah online!
sumber
V , 22 byte
Cobalah online!
sumber
Arang , 16 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Saya memiliki tiga solusi 17-byte sebelum akhirnya menemukan yang satu ini. Penjelasan:
Masukan
n
.Ulangi
n
kali, diindeks 0.Gambarkan garis
-
dengan panjang setengah indeks (terpotong).Gambarlah panah dan pindah ke baris berikutnya.
Refleksikan semuanya, membalikkan panah.
Loop di atas memiliki
n
refleksi, tetapi kita membutuhkan sejumlah refleksi, jadi lakukann
refleksi lain .sumber
Bersih ,
7673 byteCobalah online!
Menggunakan fakta rapi yang
['-','-'..]
sama['--'..]
dengan menghemat sedikit.sumber
JavaScript, 49 byte
Cobalah online!
sumber
10000
berlanjut, sementara itu solusi ES6 saya masih berfungsi: D Bagaimanapun juga, solusi Anda sangat keren)Powershell, 51 byte
sumber
6502 kode mesin (C64), 49 byte
Masih agak lebih pendek dari BASIC ;) Yang ini hanya memiliki rentang angka hingga
255
karena ukuran integer alami mesin hanya memiliki 8 bit.Demo online
Penggunaan:
SYS49152,[n]
(misalnyaSYS49152,3
untuk contoh dari tantangan)Komentar pembongkaran :
sumber
Perl 6 , 39 byte
Cobalah online!
Blok kode anonim yang mengembalikan daftar baris.
sumber
K (ngn / k) ,
3129 byteCobalah online!
pertama-tama kita membuat daftar dengan 0 bukan
"<"
, 1 bukannya"-"
, dan 2 bukannya">"
:{
}
berfungsi dengan argumenx
x{
...}\0
terapkan waktu fungsi dalamx
, dimulai dengan nilai awal0
dan pertahankan hasil antara|x
membalikkan2-
ganti 0 dengan 2 dan sebaliknya, pertahankan 1s sebagaimana adanya1,
tambahkan sebuah 1(1=*x)_
Apakah yang pertamax
sama dengan 1? jika ya, jatuhkan satu elemen, jika tidak drop 0 elemen (tidak melakukan apa-apa)2,
tambahkan 2 untuk">"
panah awalx#
kami memiliki sedikit terlalu banyak daftar, sehingga mengambil hanya yang pertamax
dari mereka"<->"
gunakan elemen daftar '(0/1/2) sebagai indeks dalam string inisumber
05AB1E ,
2320 byteCobalah online!
Pertama kali menggunakan 05AB1E atau bahasa golf lainnya. Ada ide yang menyambut.
-3 dari Kevin Cruijssen
sumber
"><"
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 .C # (.NET Core) , 90 byte
Cobalah online!
Menggunakan delegasi Action untuk menarik input dan tidak membutuhkan pengembalian.
Tidak Disatukan:
sumber
ES6,
96827970 byteCobalah online! (Terima kasih kepada @Oliver)
sumber
i=>
di depan kode Anda!) atau dari argumen baris perintah atau STDIN atau sesuatu.Merah ,
109108 byte-1 byte terima kasih kepada NK1406
Cobalah online!
sumber