Musim semi baru-baru ini tiba, dan hampir tiba saatnya bunga mulai tumbuh. Jadi saya ingin Anda membantu mereka tumbuh.
Tugas Anda:
Diberi dua angka,,, m
dan n
, output m
bunga ditempatkan secara acak di n*n
kisi.
Bunga tunggal terlihat seperti ini:
&
|
Posisi bunga ditentukan oleh tempatnya &
. Saat menempatkan dua bunga secara acak, tidak ada dua yang berada di tempat yang sama. Jika satu bunga &
tumpang tindih dengan bunga lain |
, perlihatkan &
. Baris bawah bunga mungkin tidak mengandung apapun &
.
Input dapat berupa angka atau string, melalui salah satu metode standar.
Output dapat berupa daftar string, masing-masing string mewakili satu baris grid, atau string yang dibatasi mengikuti pedoman yang sama dengan daftar. Metode keluaran standar. Whatevers trailing diperbolehkan, dan Anda dapat menggunakan tab untuk memisahkan bunga Anda. Perhatikan bahwa setiap kisi harus diisi penuh, dengan spasi atau sesuatu.
Perhatikan bahwa input akan selalu valid, Anda akan selalu dapat masuk secara hukum m
bunga ke dalam n
oleh n
jaringan.
Kasus uji:
Karena hanya test case yang sangat ketat yang dapat dijamin, karena seluruh bit "penempatan acak", itu akan menjadi satu-satunya jenis test case dengan jawaban yang disediakan. Tetapi saya akan mencoba semua pengiriman secara online untuk memastikan bahwa mereka sah menggunakan beberapa kasus uji juga.
Masukan untuk kasus uji diberikan dalam formulir m, n
.
Input: 2, 2
Output:
&&
||
--------------
Input: 6, 3
Output:
&&&
&&&
|||
Perhatikan bahwa baris baru setelah kata Output:
dalam kasus uji adalah opsional.
Kasus uji lainnya:
- 1, 10
- 0, 100
- 5, 8
- 6, 3
Golf kode sehingga kode terpendek menang!
Terima kasih kepada ComradeSparklePony untuk membuat tantangan ini dan mempostingnya di kotak hadiah Secret Santa !. Posting kotak pasir
Jawaban:
Jelly , 33 byte
Cobalah online!
Bagaimana?
sumber
m
dann
atau mengapa Anda melakukannyasquare m
? dengan nilad ?rotate
. Kerja bagus; kerusakan luar biasa!PHP (> = 7.1),
135 131 128 116 110110 bytemengambil input dari argumen baris perintah; jalankan dengan
-nr
atau coba online .kerusakan
sumber
-r
gratis ; ia memberi tahu PHP untuk menjalankan kode dari argumen baris perintah.-n
me-reset PHP ke pengaturan default.Python 2 , 150 byte
Cobalah online!
Bagaimana?
Diambil
input()
dari STDIN dan membongkar tuple yang disediakan (string dipisahkan koma bilangan bulat desimal seperti3,6
) ken
danm
.Menciptakan
n*(n-1)
"bunga petak" yang teratur, satu dimensib
, dengan menggabungkan:- daftar yang berisi "bunga"
[1]
berulangm
kali; dan- daftar yang berisi "spasi"
[0]
berulangn*~-n-m
kali *.* Operator kecebong
~
(~x=-1-x
) menyimpan 2 byte dengann*~-n-m
menggantikan tampilan yang lebih normaln*(n-1)-m
.Mengocok (menggunakan
random
'sshuffle
fungsi) ini petak bunga untuk menempatkan bunga-bunga dan ruang secara acak di antaran*(n-1)
posisi.Langkah-langkah melalui baris 0-diindeks
r
,, danprints
masing - masing pada gilirannya untuk membuat petak bunga dua dimensi dari ...Bunga dua dimensi terakhir (
n*n
) memiliki tangkai,,s
satu baris di bawah kepala bungaf
,, jika dan hanya jika tidak ada kepala bunga untuk ditampilkan. Hal ini dicapai dengan XORing (^
)f
dengan-s
manaf
dans
adalah1
s dan0
s dari sebelum dan menggunakan hasilnya untuk indeks ke dalam panjang 3 tali' &|'
:Untuk mendapatkan
f
dans
yangzip
fungsi yang digunakan dengan dua salinan dari satu petak bunga dimensi, satu dengann
spasi tambahan (kepala bunga) dan satu dengann
ruang terkemuka (batang). Semuanya dibuat untuk setiap baris (untuk menyimpan byte), dan baris yang diperlukan diiris menggunakan[r*n:r*n+n]
.sumber
Python 2 ,
184179 byteCobalah online!
sumber
Python 2 , 129 byte
Cobalah online!
Menghasilkan string keluaran satu karakter pada satu waktu. Secara acak memilih apakah sel saat ini adalah bunga dengan probabilitas sama dengan jumlahnya
m
bunga yang tersisa dibagi dengan jumlah ruang yang tersisa. Menambahkan baris baru setiapn
karakter. Sel kosong diisi dengan batang|
jika simboln
dari ujung adalah a&
.sumber
PHP, 111 Bytes
Versi Online
-1 Byte untuk Newline fisik
solusi 115 Bytes menggunakan maks
Cara ini dengan 137 Bytes mengocok bagian pertama dari string
sumber
JavaScript (ES6), 157 byte
Penjelasan: Membuat array yang mewakili kisi-kisi bunga plus baris baru. Secara acak mencari kotak kosong di mana untuk menempatkan bunga sampai jumlah bunga yang diinginkan tercapai. Akhirnya batang bunga dihasilkan di mana ada ruang untuk mereka.
sumber
Arang , 27 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Masukan
n
.Ubah arah pencetakan standar ke bawah.
Masukan
m
dan putar itu berkali-kali.Lompat ke lokasi acak di grid.
Jika sudah ada bunga, teruslah melompat ke lokasi acak sampai tempat yang cocok ditemukan.
Cetak kepala bunga.
Cetak tangkai jika belum ada kepala bunga di bawah ini.
sumber