Tugas Anda adalah menulis program atau fungsi yang mencetak segitiga ASCII. Mereka terlihat seperti ini:
|\
| \
| \
----
Program Anda akan mengambil input numerik tunggal n
, dengan kendala 0 <= n <= 1000
. Segitiga di atas memiliki nilai n=3
.
Segitiga ASCII akan memiliki n
garis miring terbalik ( \
) dan garis vertikal ( |
), n+1
garis dan garis ( -
), dan setiap garis akan memiliki jumlah ruang yang sama dengan nomor garis (berbasis 0, yaitu baris pertama adalah garis 0) selain garis pamungkas .
Contoh:
Memasukkan:
4
Keluaran:
|\
| \
| \
| \
-----
Memasukkan:
0
Keluaran:
Dalam kasus pengujian ini, output harus kosong. Tidak ada spasi putih.
Memasukkan:
1
Keluaran:
|\
--
Input & output harus persis seperti yang saya tentukan.
Ini kode-golf , jadi usahakan kode sesingkat mungkin!
code-golf
ascii-art
code-golf
rubiks-cube
code-golf
path-finding
maze
regular-expression
code-golf
math
rational-numbers
code-golf
kolmogorov-complexity
graphical-output
code-golf
tips
code-golf
string
permutations
code-golf
sorting
base-conversion
binary
code-golf
tips
basic
code-golf
number
number-theory
fibonacci
code-golf
date
code-golf
restricted-source
quine
file-system
code-golf
code-golf
math
code-golf
ascii-art
code-golf
math
primes
code-golf
code-golf
math
matrix
code-golf
string
math
logic
factorial
code-golf
palindrome
code-golf
quine
stateful
code-golf
interactive
code-golf
board-game
code-golf
math
arithmetic
code-golf
string
code-golf
math
matrix
code-golf
math
abstract-algebra
polynomials
code-golf
date
code-golf
string
array-manipulation
sorting
code-golf
game
code-golf
string
code-golf
ascii-art
decision-problem
code-golf
number
sequence
code-golf
code-golf
code-golf
sequence
fibonacci
code-golf
math
geometry
random
code-golf
code-golf
math
decision-problem
fractal
rational-numbers
code-golf
number
number-theory
code-golf
combinatorics
permutations
card-games
code-golf
math
sequence
array-manipulation
fibonacci
code-golf
sequence
decision-problem
graph-theory
code-golf
ascii-art
parsing
lisp
code-golf
string
math
natural-language
logic
code-golf
math
logic
code-golf
string
alphabet
code-golf
string
code-golf
string
Okx
sumber
sumber
0
dapat memiliki keluaran yang tidak terduga karenaJawaban:
Jelly , 14 byte
Cobalah online!
Bagaimana itu bekerja.
sumber
C, 58 byte
-
Terima kasih kepada @Steadybox yang mengomentari jawaban ini membantu saya mencukur beberapa byte dalam solusi saya di atas
sumber
2*n
di sana dua kali dan itu mengganggu saya, adakah yang bisa memikirkan cara cerdas untuk mempersingkatnya entah bagaimana?Javascript (ES6),
9785817574 byteTernyata saya tidak menggunakan rekursi yang hampir cukup
sumber
05AB1E ,
161516 byteMenyimpan satu byte, terima kasih kepada Adnan
Cobalah online!
Penjelasan
sumber
ð×.svy¦…|ÿ\}¹>'-×»
, tebak ide saya.s
tidak sebagus yang saya kira. Penggunaan yang bagusÿ
, belum pernah melihat itu sebelumnya..s
untuk memulai<Ýð×
tetapi mengalami masalah dengan kasus khusus dengan metode tersebut.FðN×…|ÿ\}Dg'-×»
untuk 15 byteDg
! Terima kasih :).s
juga menghasilkan array bersarang dan perataan yang membutuhkan lebih banyak byte.V ,
181716 byte1 byte disimpan berkat @ nmjcman101 karena menggunakan cara lain untuk menghasilkan apa-apa jika inputnya
0
Cobalah online!
Hexdump:
Penjelasan (kedaluwarsa)
Pertama-tama kita memiliki loop untuk memeriksa apakah argumennya benar
0
. Jika demikian, kode di bawah ini dijalankan (|\
tertulis). Kalau tidak, tidak ada yang ditulis dan buffer kosong.Sekarang kita sudah mendapatkan bagian atas segitiga, kita perlu membuat tubuhnya.
Sekarang kita punya satu baris tambahan di bagian bawah buffer. Ini harus diganti dengan
-
s.Jawaban ini akan lebih pendek jika kita dapat apa pun yang kita inginkan untuk input
0
V ,
1413 byteCobalah online!
sumber
«
tentu saja. Pintar! :)C #, 93 byte
Fungsi anonim yang mengembalikan segitiga ASCII sebagai string.
Program lengkap dengan ungolf, fungsi komentar dan kasus uji:
sumber
Python 2 , 69 byte
Cobalah online!
sumber
"".join
dan menggantinya dengan*
operator dansep
argumen dalam fungsi sleep, jadilambda x:print(*['|'+' '*n+'\\'for n in range(x)]+['-'*-~x*(x>0)],sep="\n")
CJam ,
242221 byteDisimpan 1 byte berkat Martin Ender
Cobalah online!
Penjelasan
sumber
SmileBASIC, 51 byte
sumber
PowerShell ,
5167 byteCobalah online!
(Byte naik ke akun tanpa baris baru)
Mengambil input
$n
dan memverifikasi itu bukan nol. Kemudian loop untuk membangun segitiga, dan selesai dengan garis-
. TersiratWrite-Output
terjadi pada penyelesaian program.sumber
Retina , 39 byte
Cobalah online
Konversi input desimal ke unary. Ganti masing
1
- masing dengan|<N-1 spaces>\¶
, cetak, dan batalkan ganti. Ganti masing1
- masing dengan tanda hubung, dan tanda hubung terakhir dengan 2 tanda hubung. Tadaa!sumber
Gangguan umum,
8986 byteMenciptakan fungsi anonim yang mengambil input n dan mencetak segitiga ke
*standard-output*
(stdout, secara default).Golf
Tidak disatukan
Saya yakin saya bisa membuat ini lebih pendek.
sumber
C
1019375 byteVersi tidak disatukan
@Steadybox Terima kasih telah menunjukkan, sangat masuk akal.
sumber
printf("%c",'_');
begitu bertele-tele?i;f(n){for(i=0;i++<n;)printf("%c%*c\n",124,i,92);for(;n--+1;)printf("-");}
i;f(n){for(i=0;i++<n;)printf("|%*c\n",i,92);for(;n--+1;)printf("-");}
n--+1
dapat disingkat menjadi~n--
Arang , 15 byte
Cobalah online!
Kerusakan
sumber
»
bisa dihilangkan.Japt , 20 byte
Disimpan 2 byte berkat produk @ETH
Cobalah online!
Penjelasan
sumber
o@'|+SpX +'\Ãp'-pUÄ)·
dan karena bug (benar-benar efek samping yang tidak disengaja dari fungsi-otomatis), Anda dapat menghapus'
in'-
.p
. Sehingga Anda dapat melakukan mism*2
untuk menggandakan setiap elemen, ataump2
untuk mengkuadratkan masingJ, 20 byte
-13 byte terima kasih kepada bob
Cobalah online!
asli: 33 byte
ungolfed
Cobalah online!
sumber
*,&'-' '|',.'\'{."0~_1-i.
*,&'-' '|',.' \'{~=@i.
Pyke,
1817 byteCoba di sini!
sumber
Python2, 73 byte
Program lengkap. Saya juga mencoba interpolasi string untuk baris terakhir, tetapi ternyata beberapa byte lagi: /
Solusi lain pada 73 byte:
Uji kasus
sumber
MATL , 19 byte
Cobalah online!
sumber
QBIC , 41 byte
Penjelasan
sumber
R, 101 byte
Kode ini sesuai dengan
n=0
test case jika Anda hanya mempertimbangkanSTDOUT
!Memang,
stopifnot(n>0)
sebagian berhenti eksekusi script, menampilkan apa-apa untukSTDOUT
tetapi menulisError: n > 0 is not TRUE
untukSDTERR
.Tidak Disatukan:
sumber
Python 2 , 62 byte
Cobalah online!
Mencetak baris demi baris, setiap kali menambahkan spasi lain sebelum garis miring terbalik. Jika suatu fungsi yang tidak tercetak akan diizinkan, itu kemungkinan akan lebih pendek.
sumber
JavaScript (ES6), 71 byte
Output ke konsol. Simpan 6 byte jika mencetak ke shell JavaScript SpiderMonkey dapat diterima. Hemat 13 byte jika mengembalikan output dapat diterima.
sumber
$`
polanya, tetapi tidak tahu apakah saya masih akan memikirkannya. Bagus.Python 2 , 67 byte
Fungsi lain di Python 2, menggunakan
rjust
.Cobalah online!
sumber
Python 3 , 60 byte
Cobalah online!
Dua solusi lagi dengan jumlah byte yang sama.
sumber
Perl, 63 byte
Tidak Disatukan:
$"
adalah pemisah daftar, yang defaultnya "".$/
adalah pemisah rekaman keluaran, yang standarnya adalah "\ n".$_
adalah variabel loop implisit.sumber
$n=<>
?Haskell ,
8265 byteCobalah online! Pemakaian:
Atau lebih baik lagi:
sumber
Pyth,
2318 byteTest suite tersedia online.
Terima kasih Ven untuk bermain golf 5 byte.
Penjelasan
sumber
|
untuk byte tambahan.Javascript 101 (Program Lengkap), 94 (Output Fungsi), 79 (Kembali) byte
Program Lengkap
Tidak akan berjalan di Chrome (karena proses tampaknya tidak ada)
Tidak akan berjalan di TIO (karena prompt tampaknya tidak diizinkan)
Berfungsi dengan cetakan EXACT
Cobalah secara Online
Berfungsi dengan string kembali
Cobalah secara Online
Mengulang karakter dalam Javascript adalah bodoh dan juga menekan baris baru pada output
sumber
Python 2 , 82 byte
Cobalah online!
Lebih lama jawaban Python yang lain tetapi fungsi rekursif hanya untuk menjadi berbeda.
Rasanya boros menggunakan dua
print
pernyataan tetapi saya tidak dapat menemukan cara yang lebih singkat untuk melakukannya. Jugaexit()
limbah 7 untuk menghentikannya mencetak menurunnya jumlah di-
bawah segitiga.sumber
-~c*(c>0)
di baris terakhir untuk menghemat 3 byte :)c and-~c
.