Hari ini, 11 November, dikenal sebagai Hari Peringatan , Hari Gencatan Senjata , atau Hari Veteran (tergantung pada negara), dan merupakan hari refleksi dan terima kasih kepada anggota militer dan layanan mereka, secara khusus mulai mencerminkan akhir dari permusuhan Eropa dalam Perang Dunia pertama. Mari kita renungkan itu dengan keluaran ASCII-art sederhana 11/11
.
Diberikan input n
, output rendisi ASCII-art 11/11
yang n
tinggi. Secara khusus, masing 1
- masing terdiri dari pipa vertikal ||
, garis miring terdiri dari garis miring //
, dan masing-masing karakter terpisah dua ruang. Perhatikan bahwa ini berarti berbagai lebar keluaran - misalnya, untuk di n=3
bawah ini, lihat bagaimana "bagian bawah" dari slash adalah dua spasi dari 1
ke kiri, tetapi empat spasi dari 1
kanan, sehingga bagian atas slash berbaris dengan tepat dan dua spasi dari 1
kanan.
n = 1
|| || // || ||
n = 2
|| || // || ||
|| || // || ||
n = 3
|| || // || ||
|| || // || ||
|| || // || ||
n = 4
|| || // || ||
|| || // || ||
|| || // || ||
|| || // || ||
n = 5
|| || // || ||
|| || // || ||
|| || // || ||
|| || // || ||
|| || // || ||
dan seterusnya.
Memasukkan
Sebuah bilangan bulat positif dalam format yang nyaman , n > 0
.
Keluaran
Representasi ASCII-art dari 11/11
, mengikuti aturan dan contoh di atas. Leading / trailing newlines atau spasi putih lainnya adalah opsional, asalkan karakternya berbaris dengan tepat.
Aturan
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
$'
dan$`
di dalam regex? Saya belum pernah melihat itu sebelumnya dan ingin memahaminya dengan lebih baik.$&
akan menjadi pertandingan itu sendiri).05AB1E , 24 byte
Cobalah online!
Penjelasan
Versi 26 byte sebelumnya
Cobalah online!
sumber
" "×"//"«.s¦R"|| || "s«vyû}»
, ternyata palendromize tidak cocok, untuk alasan yang lebih jelas sekarang ... dan Anda mengalahkan bytecount saya lebih cepat bagaimanapun heh.Perl, 45 byte
-9 byte berkat @Gabriel Benamy
47 byte kode + 1 byte untuk
-n
flag.Jalankan dengan
-nE
bendera:sumber
"|| ||"
ke"|| "x2
dan kemudian berbalik(2+$_)
menjadi hanya$_
+( .. )
sekitar$@
tugas. Paling tidak berfungsi di komputer saya.+( .. )
, terima kasih. Namun saya tidak dapat mengubah"|| ||"
untuk"|| "x2
karena saya membutuhkan dua ruang antara||
."|| "
memiliki dua spasi setelah pipa (itu hanya tidak render dengan benar di sini untuk beberapa alasan), dan Anda menduplikasi string itu ke"|| || "
mana mengurus 2 spasi tambahan dari$"x(2+$_)
||
ketika ada dua ruang.JavaScript (ES6),
8877 bytePendekatan rekursif
mungkintidak mungkin menjadi yang terpendek ..map
versi (88 byte):Pemahaman array (86 byte):
for
versi loop (89 byte):.replace
versi (85 byte):sumber
Retina, 29 byte
Port solusi JavaScript saya. Catat spasi setelah
$*
dan dua spasi sesudahnya||
.sumber
V , 30 byte
Cobalah online!
Seperti biasa, ini hexdump:
sumber
5i|| <esc>3b2r/
. Anda akan berada di tempat yang sedikit berbeda, dan saya tidak bisa membaca V jadi saya tidak yakin apakah itu penting.Batch, 130 byte
Bukan port dari solusi JavaScript saya. Karena
|
s sulit untuk dimanipulasi dalam Batch, saya menggunakanx
s sebagai penampung dan menggantinya pada output, ini juga mengurangi ukuran kode saya. Mulai dengan mengaturs
ke output yang diinginkan untukn=1
(n
dilewatkan pada baris perintah), kemudian menyisipkan spasi yang diperlukan untuk mendapatkan baris pertama untuk nilai aktualn
, kemudian loop melalui pencetakan string dan menggeser garis miring yang ditinggalkan oleh satu karakter setiap kali.sumber
BaCon , 71 byte
Program BASIC lengkap dalam satu baris.
sumber
1 TO
?Common Lisp, 216 byte
Saya akan segera menyatakan bahwa ini adalah solusi yang mengerikan untuk tantangan ini. Namun demikian, itu berhasil, dan saya lelah.
Pemakaian:
Untuk beberapa alasan, alih-alih melakukan sesuatu yang waras, saya memutuskan untuk melakukan pendekatan ini dengan loop di dalam
format
panggilan. Loop ini berulang melalui konten yang dikembalikan oleh konstruksi loop aktual lainnya di bagian paling akhir, dengan enam elemen terakhir dihapus (dengan demikian elemen berulangbutlast
). Isi nilai yang dikembalikan oleh konstruk lingkaran ini terdiri dari jumlah padding untuk bagian depan garis miring, karakter padding (spasi), jumlah padding untuk bagian belakang garis miring, dan akhirnya karakter padding yang sama.Saya agak baru di Lisp, dan saya mengerti pasti ada banyak ruang untuk perbaikan di sini.
sumber
Python 2,
767571 BytesMasih bekerja pada versi yang lebih pendek, tidak terlalu buruk.
terima kasih mbomb007 untuk menangkap kesalahan!
sumber
x='|| '*2;print x+(n-i)*' '+'//'+' '*i+x[::-1]
//
pada baris terakhir dan dua spasi setelah//
pada baris pertama. Seharusnya dua ruang dalam kedua kasus.R, 86 byte
Hanya
for
pendekatan loop sederhana :sumber
Retina , 40 byte
Cobalah online!
Penjelasan
Ini mengubah input
N
menjadiDimana
S
sesuai denganN
spasi.Ada dua hal yang terjadi di sini.
;{:
menunjukkan bahwa tahap ini dan yang terakhir harus dijalankan dalam satu lingkaran sampai mereka gagal mengubah string.:
menunjukkan bahwa hasil tahap ini harus dicetak setelah setiap iterasi dan;
menunjukkan bahwa hasil akhir dari loop (dan karenanya seluruh program) tidak boleh dicetak. Tahap itu sendiri hanya menggantikanx
s dengan|| ||
pada iterasi pertama (dan tidak melakukan apa-apa sesudahnya), sehingga kita sekarang memiliki baris pertama dari output yang diperlukan (dan mencetaknya).Akhirnya, ini menggeser
//
satu karakter ke kiri, asalkan masih ada setidaknya tiga ruang tersisa//
. Setelah itu kita kembali ke tahap sebelumnya (yang sekarang hanya mencetak garis saat ini, karena tidak ada lagix
) dan kemudian ulangi.sumber
Ruby, 60 byte
sumber
C,
116 9489 byteCobalah di Ideone
sumber
Ruby,
767473 byteSebagai fungsi dibutuhkan
7372 byte, menghitung definisi:sumber
Powershell, 66 byte
sumber
read-host
-param($a)1..$a|%{$s="|| ";$s*2+" "*($a-$_)+"// "+" "*$_+$s*2}
C #, 150 Bytes
Golf:
Tidak Terkumpul:
Pengujian:
Keluaran:
sumber
Groovy, 63 karakter / byte
Inilah upaya saya dengan Groovy, menggunakan penutupan anonim dan loop sederhana untuk mencetak seni ASCII ke output standar:
{n->n.times{println'|| '*2+' '*(n-it-1)+'//'+' '*it+' ||'*2}}
Anda dapat mencobanya online di sini . Cukup klik "Edit di konsol" dan kemudian "Laksanakan skrip".
Mencoba melakukan hal yang sama dan mengembalikan string alih-alih mencetak, saya tidak dapat mencapai di bawah 71 byte:
{n->a='';n.times{a+='|| '*2+' '*(n-it-1)+'//'+' '*it+' ||'*2+'\n'};a}
sumber
Python 3, 78 byte
Masih berusaha untuk ...
sumber
for
ke garis yang samadef
? (Seperti inidef m(n):for e in range(n):print(a," "*(n-e),"//"," "*(e+1),a)
:) Juga, Anda dapat menyimpan dua byte dengan menggantinya(e+1)
dengan-~e
.