Diberikan input dari dua bilangan bulat n dan m , output tangga ASCII panjang n dan ukuran m .
Ini adalah tangga ASCII dengan panjang 3 dan ukuran 3:
o---o
| |
| |
| |
+---+
| |
| |
| |
+---+
| |
| |
| |
o---o
Ini adalah tangga ASCII dengan panjang 5 dan ukuran 1:
o-o
| |
+-+
| |
+-+
| |
+-+
| |
+-+
| |
o-o
Ini adalah tangga ASCII dengan panjang 2 dan ukuran 5:
o-----o
| |
| |
| |
| |
| |
+-----+
| |
| |
| |
| |
| |
o-----o
Untuk lebih spesifik:
Panjang ( n ) mewakili berapa banyak kotak tangga dibuat.
Ukuran ( m ) mewakili lebar dan tinggi interior — yaitu, tidak termasuk "batas" —masing-masing persegi.
Setiap bujur sangkar terdiri dari area interior yang diisi dengan ruang-ruang, dikelilingi oleh
-
s di atas dan bawah,|
s di kiri dan kanan, dan+
s di keempat sudut.Perbatasan antara kotak bergabung bersama, jadi dua baris berturut-turut dengan
+--...--+
bergabung menjadi satu.Sudut-sudut seluruh tangga diganti dengan karakter
o
.Anda secara opsional dapat menampilkan baris tambahan.
Panjang tangga ( n ) akan selalu ≥ 2, dan ukuran ( m ) akan selalu ≥ 1.
Input dapat diambil sebagai string whitespace- / dipisahkan koma, array / daftar / dll, atau dua fungsi / baris perintah / dll. argumen. Argumen dapat diambil dalam urutan mana yang paling nyaman / golf.
Karena ini adalah kode-golf , kode terpendek dalam byte akan menang.
Tip: Contoh di atas juga dapat digunakan sebagai kasus uji.
Jawaban:
Pyth, 34 byte
Suite uji
Membawa argumen baris baru dipisahkan pada STDIN.
Menggunakan fungsi pembantu
:
,, yang membangun setiap jenis string vertikal dari tiga karakter, kemudian mereplikasi seperlunya, mentransposisi dan bergabung pada baris baru.sumber
Ruby, 71
ungolfed dalam program tes
sumber
;
setelahh=0
, butuh ruang setelahputs
. Tapi skor Anda hanya tumbuh dengan 1 karakter karena ada ruang ekstra sebelumnyaputs
.CJam,
4342 byteSaya tidak puas dengan skor. Tapi aku bukan Dennis, kan?
Input adalah 2 item yang dipisahkan ruang. Panjang dulu
Penjelasan
sumber
JavaScript (ES6), 89
... ulangi, ulangi, ulangi ...
Uji
sumber
document.getElementById('elem').
bisa digantikan olehelem.
! +1 untuk ini, tapi tolong, bisakah Anda menunjukkan beberapa dokumen tentang ini?C #, 1412 byte
... Upaya CodeGolf pertamaku, Tidak mungkin menang tetapi berhasil, jadi inilah dia:
sumber
using System;class P{static int m;static void Main(){int n = int.Parse(Console.ReadLine());m = int.Parse(Console.ReadLine());M('o','-');for(int k=0;k<n;k++){for(int i=0;i<m;i++){M('|',' ');}if(k!=n-1){M('+','-');}}M('o','-');Console.ReadKey();}static void M(char x,char y){Console.WriteLine(x+new string(y,m)+x);}}
using System;class P{static int m;static void Main(){int n=int.Parse(Console.ReadLine());m=int.Parse(Console.ReadLine());M('o','-');for(int k=0;k<n;k++){for(int i=0;i<m;i++){M('|',' ');}if(k!=n-1){M('+','-');}}M('o','-');Console.ReadKey();}static void M(char x,char y){Console.WriteLine(x+new string(y,m)+x);}}
using C=System.Console;class P{static void Main(){int i,k,n=int.Parse(C.ReadLine()),m=int.Parse(C.ReadLine());System.Action<char,char> M=(x,y)=>C.WriteLine(x+new string(y,m)+x);M('o','-');for(k=0;k<n;k++){for(i=0;i<m;i++){M('|',' ');}if(k<n-1){M('+','-');}}M('o','-');}}
. Namun, ada kemungkinan lebih banyak potensi di sini, hanya dengan mengubah cara melakukan sesuatu sedikit.Julia, 87 byte
Ini adalah fungsi yang menerima dua bilangan bulat dan mengembalikan string.
Tidak Terkumpul:
sumber
pb - 147 byte
Ini adalah jenis tantangan yang, menurut hak, pb harus benar-benar bagus. Menggambar gambar sederhana dengan karakter adalah persis apa pb dirancang untuk. Sayangnya, itu hanya bahasa bertele-tele kurasa.
Mengambil panjang input terlebih dahulu, diikuti oleh ukuran. Mengambil input dalam bentuk nilai byte, misalnya:
python -c 'print(chr(5) + chr(7))' | ./pbi.py ladder.pb
Lihat, animasi yang menyenangkan!
Dengan komentar:
sumber
Bash murni,
132 130 128127 byteYa saya bisa menjatuhkan 1 byte lagi menggantikan yang terakhir
${p% *}
, tapi saya lebih suka ini:Mencicipi:
sumber
Haskell,
10097 byteContoh penggunaan:
Bagaimana itu bekerja:
Sunting: @Christian Irwan ditemukan 3 byte. Terima kasih!
sumber
m=init$[1..l]>>("|"!" "<$u)++["+"!"-"]
=>(_:m)=[1..l]>>["+"!"-"]++("|"!" "<$u)
_:m=[1..l]>>["+"!"-"]++("|"!" "<$u)
bekerjabrainfuck - 334 byte
Saya berharap ini jauh lebih pendek.
Ini mengatur "string" yang terlihat
| (...) |
dan satu yang terlihat seperti+----(...)----+
, mencetak masing-masing sesuai kebutuhan, dengan beberapa casing khusus untuk hurufo
s di bagian atas dan bawah.Membutuhkan juru bahasa yang menggunakan sel 8-bit dan memungkinkan Anda untuk pergi kiri dari sel 0 (baik itu ke dalam sel negatif atau perulangan). Dalam pengalaman saya, ini adalah pengaturan default yang paling umum.
Dengan komentar:
sumber
PowerShell, 77
80sumber
Jolf, 36 byte
Coba di sini!
Penjelasan
sumber
Perl, 98 byte
sumber
+
tanda - tanda dalam kode Anda, apakah Anda menganggap bahwa anak tangga antara memiliki+
tanda - tanda di setiap akhir?($n,$m)=@ARGV;
dan dengan asumsi mereka sudah ditetapkan - tidak yakin apakah itu semangat atau tidak. Saya harus mencarinya.@ARGV
. Juga, ketika membalas seseorang, ingatlah untuk memasukkan @namapengguna agar mereka mendapatkan peringatan. Saya tidak perlu melakukannya karena ini adalah posting Anda.C, 122 byte
Cobalah online .
sumber
Tcl, 187 byte
Kode ini dibuat untuk dimasukkan ke dalam file dengan input argumen pada baris perintah. berikan jumlah kotak dan lebar dalam urutan itu.
sumber
PHP, 81 byte
Mengharapkan 2 argumen, diteruskan saat memanggil perintah PHP secara langsung. Yang pertama adalah ukuran dan yang kedua adalah jumlah langkah.
Mungkin memerlukan beberapa perbaikan.
sumber
Python 2, 94 byte
'Tidak Disatukan':
sumber
Perl 5 , 91 + 1 (-a) = 92 byte
Cobalah online!
sumber
Pip
-l
, 35 byteCobalah online!
Penjelasan
Beberapa versi lain
Saya mencoba banyak pendekatan berbeda mencoba menangkap Pyth ...
Saya sangat menyukai
t**b
yang, yang menggunakan matematika untuk menghasilkan pola vertikal tangga:The
1000200020001
kemudian dapat digunakan untuk menghasilkan polao|||+|||+|||o
dan- - - -
, yang membentuk tangga. Sayangnya, saya tidak bisa membuat pendekatan ini lebih pendek dari pendekatan join / wrap.sumber