Memasukkan:
- Integer , yang dijamin sebagai .
- Integer , yang merupakan salah satu .
Keluaran:
Jalan dengan ukuran , yang akan berada di arah barat laut jika ; arah utara jika ; atau arah timur laut jika . Jalan akan selalu menjadi tiga ruang lebar (atau lima secara umum jika kita akan memasukkan batas luar). Selain itu, akan ada garis pemisah jalan di bagian bawah, dan setelah itu bergantian saat naik ke atas.
Beberapa contoh:
Input:
Output:
/ / /
/ /
/ / /
/ /
/ / /
/ /
/ / /
Input: Output:
\ \
\ \ \
\ \
\ \ \
Aturan tantangan:
- Jumlah ruang depan / belakang dan / atau baris baru dapat diterima, asalkan mencetak jalan yang diperlukan di suatu tempat di layar.
- Alih-alih opsi Anda juga diperbolehkan menggunakan opsi atau . Anda juga dapat memilih mana dari tiga opsi peta yang mana dari tiga arah. (Pastikan menyebutkan opsi mana yang Anda gunakan jika berbeda dari untuk masing - masing yang digunakan dalam deskripsi tantangan ini!)
[north-west, north, north-east]
- Format output yang masuk akal dapat diterima. Yang paling umum tentu saja untuk mencetaknya ke STDOUT, tetapi mengembalikannya sebagai string atau daftar karakter 2D juga baik-baik saja.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda dengan aturan I / O default , sehingga Anda diizinkan untuk menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda (yaitu TIO ).
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Kasus uji:
Dua contoh di atas, dan:
Input:
Output:
| |
| | |
| |
| | |
| |
| | |
| |
| | |
| |
| | |
Jawaban:
Kanvas ,
2322 byteCoba di sini!
Menggunakan input arah 0, 1 dan 2.
Penjelasan:
sumber
Python 2 ,
79787372 byteCobalah online!
Dibutuhkan
[1,0,-1]
untuk[north-west, north, north-east]
-1 byte, terima kasih kepada Neil
sumber
i%2*c or' '
menghemat satu byte.Python 2 , 66 byte
Cobalah online!
Penggunaan
d=-1
untuk NE,d=0
untuk N, dand=1
untuk NW. Mengambil keuntungan dari ruang utama diizinkan. Aturan bahwa bagian bawah jalan memiliki pemisah membuatnya sulit untuk mendapatkan paritas yang tepat; itu dicapai dengan mengiris(s*n)[n:]
mengambil paruh kedua dari2n
pergantian antara ruang dan karakter jalan.sumber
1. Python 3.5,
122120 byteScript mengambil dua params: n, d.
d: 0, 1, 2 -> \ | /
tio.run
keluaran:
Penjelasan
sunting: -2 byte terima kasih kepada Kevin Cruijssen
sumber
n-1-i
bisan+~i
( tip relevan ) danj%2==0
bisaj%2<1
. Jika Anda belum melihatnya, Tips untuk bermain golf dengan Python dan Tips untuk bermain golf di <semua bahasa> mungkin menarik untuk dibaca.n+~i
belum pernah melihat ini , tetapi terlihat sangat membantu. Juga terima kasih atas sorotan kode.j%2*" "or c
menyimpan beberapa byte lagi.PowerShell ,
8882807471 byte-8 bytes berkat Mazzy
-6 bytes berkat AdmBorkBork dan Mazzy
-3 bytes berkat AdmBorkBork
Cobalah online!
Menggunakan [0,1,2] untuk NW, NE, N. Menggunakan
d
sebagai indeks daftar dua kali untuk pertama kali mendapatkan metode penspasian (Drops dari daftar saat menggunakan 2 yang mengembalikan 0) dan kemudian karakter yang digunakan ketika menggambar garis. Tambahkan daftar ke string ruang (yang secara bawaan memiliki ruang antara anggota ketika ditambahkan seperti itu) yang membangun jalan. Juga bertukar antara jalur terbuka atau tanda hubung berdasarkan modulo matematika.sumber
C (gcc) ,
10090 byteCobalah online!
Versi yang ditulis dengan baik
sumber
Arang ,
332923 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Sekarang semua bug Arang yang mendasarinya sepertinya sudah diperbaiki, saya dapat mengiklankan kode yang optimal. Penjelasan:
Putar arah kursor berlawanan arah jarum jam sesuai dengan input pertama, sehingga 1 menjadi timur laut, 2 utara dan 3 barat laut.
Masukkan panjang jalan.
Cetak setengah panjang jalan dan kemudian rentangkan memberikan pemisah jalan.
Cetak sisi jalan.
@KevinCruijssen kemudian mengirimkan versi yang lebih sulit dari pertanyaan ini yang sejak dihapus tetapi pengguna dengan cukup rep dapat melihatnya di sini: Jalan (Keras) ke Kode Trik peregangan yang saya gunakan dalam jawaban ini tidak berlaku untuk pertanyaan itu, jadi alih-alih saya menulis program
4745 byte berikut:Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Loop di sisi dan pemisah.
Lompat ke awal sisi.
Buat array yang berisi a
1
dan spasi, tetapi hapus spasi lagi jika kita menggambar sisi daripada pemisah.Lewati setiap bagian jalan.
Putar sesuai arah kursor.
Lewati satu kurang dari panjang bagian jalan ...
... dan cetak elemen bolak-balik array. Pergantian dicapai dengan pengindeksan siklik ke dalam array dengan koordinat Y dari kursor.
Cetak baris terakhir dari bagian jalan ini, tetapi tanpa memindahkan kursor ...
... sehingga kursor dapat dipindahkan siap untuk bagian selanjutnya sebagai gantinya.
Putar kembali posisi kursor ke bagian selanjutnya.
sumber
Kotlin ,
9692 byteTerima [0, 1, 2] alih-alih [-1, 0, 1]
Ini berfungsi mirip dengan solusi dalam bahasa lain, tetapi sayangnya Kotlin tidak benar-benar bersinar dalam bahasa ini.
val c=“\\|/“;
mengambil char untuk digunakan dalam pembangunan jalan dengan mengambil keuntungan dari fakta bahwa Kotlin memperlakukan String seperti Array of chars (sebagaimana mestinya, melihat Anda Jawa)Cobalah online!
sumber
4
dengan contoh saya4
untuk melihat perbedaan yang saya maksud. Saya tidak begitu mengenal Kotlin, tetapi saya pikir Anda dapat menyelesaikannya (dan golf 4 byte pada saat yang sama) dengan mengubahnya[(it+1)%2]
menjadi[it%2]
. :) Selain itu, ini jawaban yang bagus, jadi +1 dari saya.Kode TSQL,
171117 byteSaya menyadari ini bisa ditulis lebih pendek sebagai kode.
Permintaan TSQL, 137 byte
Master USE tidak diperlukan, jika database Anda sudah menjadi master. Namun beberapa pengguna memiliki database default yang berbeda.
Skrip saat mencobanya sedikit berbeda. Saya harus mengganti ruang ascii-32 dengan ascii-160, spasi tidak ditampilkan.
Cobalah
Membuat beberapa penyesuaian dan menyadari bahwa saya bisa menggantikannya
dengan
sumber
order by 1/0
tidak menyebabkan kesenjangan dengan kesalahan nol?JavaScript (ES8),
90 8785 byte(direction)(length)
Cobalah online!
JavaScript (ES6), 90 byte
Yang ini menggambar karakter keluaran dengan karakter dengan lebih banyak matematika daripada
.padStart()
metode.(direction)(length)
Cobalah online!
sumber
Jelly ,
3130 byteTautan diad yang menerima panjang di kiri dan arah-dinegasikan * di sebelah kanan yang menghasilkan array karakter 2d.
*
[north-west, north, north-east]=[1, 0, -1]
Cobalah online! (footer memanggil Link, bergabung dengan karakter baris baru dan mencetak hasilnya)
Bagaimana?
sumber
Python 2, 127 byte
Cobalah online!
Dua baris pertama diambil dari @TFeld.
sumber
D,N=input()
(dan menggunakan Python 2 bukannya 3) untuk memperbaikinya. Atau Anda bisa mengubahnya ke fungsi lambda dengan mengambil dua parameter ini." ".join(..)
agak berlari.format
i%2*c or' '
menghemat beberapa byte lagi, meskipun saya perhatikan bahwa separator salah untuk jalan panjang yang aneh.Python 2 , 93 byte
Cobalah online!
sumber
+' %s '+
untuk,'%s',
menyimpan 2 byte'%s'%
sepenuhnya.J , 64 byte
Cobalah online!
Akan mencoba golf nanti
sumber
C # (Visual C # Interactive Compiler) ,
12910710393 byte-1 untuk utara-timur, 1 untuk utara-barat, 0 untuk utara
Cobalah online!
sumber
Merah , 157 byte
Cobalah online!
sumber
Japt, 53 byte
Cobalah secara Online!
sumber
Swift 4.2 ,
112108 byte-4 byte, terima kasih kepada Sriotchilism O'Zaic
[0,1,2] bukannya [-1,0,1].
Cobalah online!
Penjelasan
Menentukan tanda jalan yang akan digunakan. (Aku yakin ini bisa disingkat entah bagaimana)
Berputar-putar di sepanjang jalan.
Menambahkan spasi di depan jalan.
Menambahkan tanda tengah ke setiap baris lainnya.
Pertama saya ☝️, saya senang dengan saran optimasi apa pun. Belajar sebagian besar dari utas itu: Tips untuk bermain golf di Swift .
sumber
in
dan" "
dalam kode Anda meskipun Anda telah menghapusnya dalam contoh Anda.\(c)
dalam kedua kasus). Anda akan menghemat byte hanya dengan menggabungkannyac
ke string. Cobalah online!Perl 6 , 66 byte
Cobalah online!
Mengembalikan daftar garis.
Penjelasan
sumber
Ruby , 90 byte
Cobalah online!
UPDATE: Terima kasih, Kevin, untuk menunjukkan bahwa kiriman asli saya kehilangan ruang antara tepi jalan dan spidol (yaitu, jalan 3-lebar, bukan 5-lebar.) Yang mengatakan, mungkin ada perbaikan yang lebih pendek untuk itu daripada
c+' '+...+' '+c
.Informasi arah:
-1, 0, 1
peta ke{ north-west, north, north-east }
Argumen: ini membaca argumen baris perintah seperti
4 -1
(jalan empat baris, miring ke barat laut).Catatan tambahan: Ini diuji secara lokal dengan Ruby v2.6.1, dan tampaknya Try It Online menggunakan Ruby v2.5.3. Saya tidak punya alasan untuk berpikir itu tidak akan berfungsi dengan semua versi Ruby lainnya.
sumber
|||
atau|<sp>|
, tetapi harus|<sp>|<sp>|
atau|<sp><sp><sp>|
(di mana<sp>
ada ruang). Saya tidak tahu Ruby, tetapi sepertinya Anda dapat menyelesaikannya dengan mengubahc+[' ',c][i%2]+c
kec+' '+[' ',c][i%2]+' '+c
. :)Java (JDK) , 116 byte
Cobalah online!
Diambil
d
sebagai salah satu dari0
,1
atau2
.sumber
Japt
-R
, 40 byteCobalah online!
Penjelasan:
sumber
Stax , 23 byte
Jalankan dan debug itu
Input adalah dua bilangan bulat yang dipisahkan oleh spasi.
Yang pertama adalah
d
. -1 menentukan timur laut. 0 untuk utara. 1 untuk barat laut. Parameter kedua adalahn
. Kedua nilai ini akan diuraikan secara implisit dari input dan ditempatkan pada tumpukan input dengann
di atas. Selain itud
akan dapat diakses dari register staxx
karena ini adalah nilai yang diuraikan secara implisit pertama.Misalnya, masukan "1 7"
Jalankan yang ini
sumber
perl -M5.010 -Mfeature = tanda tangan, 97 byte
sumber