Kebanyakan orang terbiasa dengan kiasan tentang menghitung domba untuk tertidur. Ada kawanan domba, beberapa dari mereka melompati pagar, dan Anda menghitung domba ketika mereka melompat. Seharusnya, ini membantu menenangkan pikiran Anda dan membuat Anda menjadi seperti tidur sehingga Anda akan tertidur.
Inilah domba ASCII yang menghadap ke kanan, menunggu untuk dihitung:
'00^>
||
Inilah seekor domba ASCII yang melompati pagar:
'00^>
/\
++
Ini satu menghadap ke kiri, yang sudah dihitung:
<^00'
||
Tantangan
Diberi dua bilangan bulat input, n
dan m
, dengan n > 2
menggambarkan berapa total domba, dan m > 0
mengatakan berapa banyak domba telah dihitung, mengeluarkan representasi seni ASCII untuk menghitung domba yang tertidur.
Sekarang untuk twist:
- Karena ukuran kandang domba, baris atas hanya dapat menampung maksimal
10
domba, tidak termasuk domba yang saat ini melompat yang juga harus selalu berada di baris atas. - Baris berikutnya tidak dapat memiliki domba di luar kandang masing-masing (Anda tidak dapat memiliki lebih banyak domba di kiri di baris kedua daripada yang Anda lakukan di baris pertama, dan sama untuk kanan).
- Jika ada
11
atau lebih domba total, baris paling atas harus10
ditambah dengan domba yang melompat di dalamnya. - Memimpin / mengikuti spasi, dan spasi putih antara domba tidak masalah, asalkan:
- Ada minimal satu karakter spasi putih antara domba
- Semua karakter berbaris dengan tepat.
Selama aturan-aturan ini dipenuhi, pengaturan domba yang sebenarnya terserah implementasi Anda.
Contohnya
Misalnya, ini adalah n=3
dan m=1
, kasus paling sederhana.
'00^>
'00^> /\ <^00'
|| ++ ||
Inilah n=11
dan m=6
, domba terbanyak yang dapat ditampung dalam satu garis horizontal.
'00^>
'00^> '00^> '00^> '00^> /\ <^00' <^00' <^00' <^00' <^00' <^00'
|| || || || ++ || || || || || ||
Berikut adalah contoh berbeda dari itu, dengan n=11
danm=1
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00'
|| || || || || || || || || ++ ||
Contoh yang lebih besar dengan n=30
danm=12
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00'
|| || || || || || || || ++ || ||
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> <^00' <^00'
|| || || || || || || || || ||
'00^> <^00' <^00'
|| || ||
<^00' <^00'
|| ||
<^00' <^00'
|| ||
<^00' <^00'
|| ||
Inilah contoh dengan n=17
danm=2
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00'
|| || || || || || || || ++ || ||
'00^> '00^> '00^> '00^> '00^> '00^>
|| || || || || ||
Inilah contoh dengan n=19
danm=3
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00' <^00'
|| || || || || || || ++ || || ||
'00^> '00^> '00^> '00^> '00^> '00^> '00^>
|| || || || || || ||
'00^>
||
Perhatikan bahwa semua ini adalah contoh . Untuk yang terakhir, Anda dapat membuat susunan domba vertikal di sisi kanan, yang memungkinkan sisi kiri masuk ke dua baris. Atau mungkin 2 x 2 kuadrat domba di sisi kanan, yang juga akan cocok domba sisi kiri ke dua baris. Dll
I / O dan Aturan
- Input dapat diambil dalam format apa pun yang masuk akal dan dengan metode apa pun yang praktis .
- Leading / trailing newlines atau spasi putih lainnya adalah opsional, asalkan karakternya berbaris dengan tepat.
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Output bisa ke konsol, dikembalikan sebagai daftar string, dikembalikan sebagai string tunggal, dll.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
n=11
m=9
n=11
itu0<m<=10
. Ini memaksa Anda untuk memiliki semua domba di baris atas dan jumlah dinamis domba di pagar kiri (n-1-m
) dan kanan (m
) dan tidak dapat menggunakan ukuran pena tetap.Jawaban:
APL (Dyalog Unicode) , 118 byte SBCS
Lambda infix Anonim. Dibawa
n
sebagai argumen kiri danm
sebagai argumen kanan. Mengembalikan hasil array bersarang, tetapi tampilan default array bersarang ini mengikuti spesifikasi. Menggunakan hingga sembilan kolom untuk domba yang dihitung dan kolom yang tersisa untuk domba yang menunggu.Cobalah online!
{
...}
lambda anonim;⍺
adalah argumen kiri,⍵
adalah argumen benarFungsi ini memiliki tiga bagian berbeda: Waiting , Jumping , and Counted . Masing-masing tanda kurung, menyebabkan hasilnya menjadi daftar tiga elemen.
Terhitung
(r⍴(×/r←9,⍨∘⌈⍵÷9)↑⍵⍴⊂S←⌽↑''(b←'''00^<')' ||')
''(
...)' ||'
tiga baris domba yang dihitung cermin, yang tengah adalah:b←'''00^<'
tubuh dan ditugaskanb
↑
mencampur daftar string menjadi matriks karakter (padding dengan spasi)⌽
cerminkan ituS←
assign toS
(big S heep)⊂
lampirkan sehingga kita bisa menghadapinya sebagai satu kesatuan⍵⍴
menggunakan jumlah domba yang dihitung untuk membentuk kembali secara siklis itu(
...)↑
ambil jumlah elemen berikut dari itu (padding dengan item prototipikal, yaitu array yang sama tetapi dengan semua karakter diganti dengan spasi)⍵÷9
kesembilan dari jumlah domba yang dihitung⌈
pembulatan9,⍨
tambahkan 9 untuk itur←
menetapkan ker
(apa yang kita akan r eshape dengan; baris dan kolom)×/
produk dari daftar itu (ini adalah berapa banyak elemen yang kita butuhkan, termasuk isi)r⍴
membentuk kembali itu ke array dengan panjang dimensir
Melompat
(↑(s←'>',⍨¯1↓b)' /\' ' ++')
(
...)' /\' ' ++'
tiga baris domba yang melompat, yang pertama adalah:¯1↓b
jatuhkan karakter terakhir darib
'>',⍨
tambahkan kepala yang menghadap ke kanans←
simpan dis
( s kecil heep)↑
mencampur daftar string menjadi matriks karakter (padding dengan spasi)Menunggu
(r⍴(×/r←d,⍨⌈w÷d←10-⍵⌊⊢/r)↑w⍴(w←⍺-⍵+1)⍴⊂s@2⌽S)
⌽S
cerminS
s@2
letakkans
di baris 2 itu (mengganti data saat ini di sana)⊂
lampirkan sehingga kita bisa menghadapinya sebagai satu kesatuan(
...)⍴
membentuk ulang secara siklis ke ukuran berikut:⍵+1
jumlah domba yang dihitung ditambah satu⍺-
kurangi dari totalw←
tetapkan kew
( w aiting)(
...)↑
ambil sejumlah elemen berikut dari itu (diisi dengan barang-barang prototipikal)⊢/r
elemen paling kananr
(yaitu jumlah kolom yang digunakan untuk domba yang dihitung)⍵⌊
minimum total dan itu10-
kurangi dari sepuluhd←
tetapkan ked
( d ifference; kolom yang hilang)w÷
dibagiw
dengan itu⌈
round up (memberikan jumlah baris yang dibutuhkan)d,⍨
menambahkand
r←
menetapkan ker
(apa yang kita akan r eshape dengan; baris dan kolom)×/
produk dari daftar itu (ini adalah berapa banyak elemen yang kita butuhkan, termasuk isi)r⍴
membentuk kembali itu ke array dengan panjang dimensir
sumber
n=11,m=9
dan aturan "baris paling atas harus memiliki 10 ditambah domba yang melompat di dalamnya."Javascript,
281,293, 288 BytesHati-hati saat menggunakan cuplikan di bawah ini, ada risiko besar narkolepsi yang diinduksi tiba-tiba.
sumber
m = n
Anda mendapatkan kesalahan.C, 392 byte
Terima kasih kepada @Jonathan Frech karena telah menghemat satu byte!
Cobalah online!
Belum dibuka:
sumber
y+=1+!t
bisay-=~!t
.Python 2 ,
222277 byteCobalah online!
sumber
n=11
danm=2
.AWK , 293 byte
Cobalah online!
Saya mencoba menggunakan pergantian string untuk menghindari beberapa loop, tetapi butuh lebih banyak kode.
Penjelasan
Saya harus mengatakan seni domba agak lucu. :)
sumber
Arang , 98 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Masukkan jumlah domba yang sudah dihitung.
Masukkan jumlah total domba dan hitung berapa yang masih perlu dihitung.
Buat array dua array. Setiap array memiliki elemen-elemen berikut:
Refleksikan kanvas dan cetak setengah domba yang melompat.
Loop melalui domba di sisi itu.
Cetak domba.
Jika ini adalah akhir dari baris maka cetak beberapa baris dan spasi baru untuk memulai domba berikutnya.
sumber