Anda harus menulis program atau fungsi yang menerima volume mangkuk dan volume air di dalamnya sebagai input dan output atau mengembalikan representasi ASCII mangkuk dengan air di dalamnya dengan volume yang diinginkan.
Mangkuk memiliki struktur sebagai berikut:
\ /
\___/
Mangkuk memiliki setidaknya satu _
karakter. Hitungan \
's dan/
' juga positif dan mereka sama karena simetri.
Volume mangkuk adalah jumlah total _
dan space
karakter antara \
's dan /
ditambah satu untuk setiap pasangan \
dan /
. Ini berarti mangkuk di atas memiliki volume 10
:
\ / => xxxxx x (the last one is for the \/ pair)
\___/ xxx x (the last one is for the \/ pair)
Perhatikan bahwa dua mangkuk yang berbeda dapat memiliki volume yang sama. Misalnya kedua mangkuk berikut memiliki volume 18:
\ /
\ / \ /
\___/ \_______/
Kita bisa menuangkan air ke dalam mangkuk. Air direpresentasikan sebagai deretan ~
karakter, bukan spasi di dalam mangkuk. Baris bawah tidak memiliki spasi sehingga tidak dapat berisi ~
's. Ini berarti contoh kita dapat diisi dengan air hanya dengan satu cara:
\~~~~~/
\___/
Mangkuk lain dapat diisi dengan berbagai cara:
\~~~~~/ \ /
\ / \~~~/
\_/ \_/
Volume air dalam mangkuk adalah volume baris mangkuk bawah ini ~
karakter. Contoh di atas memiliki volume air 4, 6 and 2
masing - masing.
Memasukkan
- Dua bilangan bulat positif, volume mangkuk dan volume air.
- Anda dapat memilih urutan dua angka.
- Dua bilangan bulat dapat dimasukkan dalam format daftar umum apa saja (daftar, tupel, array, dll.) Atau sebagai dua bilangan bulat terpisah.
- Setidaknya satu konfigurasi mangkuk-air yang valid dijamin untuk nilai input.
Keluaran
- Representasi ASCII dari mangkuk dengan air di mana mangkuk dan volume air cocok dengan input.
- Jika Anda memilih untuk mengembalikan hasil alih-alih mencetak, hasilnya harus dikembalikan sebagai string tunggal (atau alternatif terdekat bahasa Anda).
- Setiap spasi spasi tambahan diperbolehkan.
- Tidak ada spasi putih terkemuka yang tidak perlu diizinkan.
- Jika ada beberapa konfigurasi yang benar, Anda bebas untuk memilih mana yang Anda hasilkan tetapi Anda hanya bisa menampilkan salah satunya.
Contohnya
Setiap pasangan integer input diikuti oleh satu atau lebih output yang mungkin.
6 2
\~~~/
\_/
10 4
\~~~~~/
\___/
24 8
\ /
\~~~~~~/
\ /
\__/
42 12 //either of the two output is correct
\ /
\ /
\~~~~~~~/
\ /
\ /
\_/
\ /
\~~~~~~~~~~~~~/
\___________/
90 68
\~~~~~~~~~~~~~~~~~~~~~/
\ /
\ /
\ /
\_____________/
102 42
\ /
\ /
\~~~~~~~~~~~~~~~~~/
\ /
\ /
\___________/
Ini kode golf sehingga entri terpendek menang.
sumber
At least one valid bowl-water configuration is guaranteed for the input values.
- OPJavascript ES5, 364 byte
Inilah yang bisa saya dapatkan dengan cepat selama makan siang, bantu saya mainkan golf saat shift saya berakhir!
Sumber
Golf:
(dijalankan melalui minifier untuk kompres, shift makan siang berakhir)
sumber
Perl,
227172 byteJalankan dengan opsi -n:
Terima kasih kepada Dennis untuk bantuan bermain golf ini.
Menghitung volume mangkuk sebagai tinggi * (lebar + tinggi), di mana lebar adalah jumlah
_
karakter dan tinggi adalah jumlah\
karakter.Setiap kombinasi tinggi dan lebar diuji dalam sepasang loop bersarang sampai volume mangkuk yang benar ditemukan, kemudian dilakukan pengulangan terhadap level ketinggian air yang mungkin dilakukan untuk mengetahui apakah volume air yang benar dimungkinkan dengan lebar tersebut.
Dimungkinkan untuk menghapus loop ketiga dengan hanya menghitung ketinggian air menggunakan rumus kuadratik dengan 1, b sebagai lebar dan c sebagai negatif dari volume air yang diinginkan, dan memeriksa apakah itu bilangan bulat, tetapi itu membutuhkan lebih banyak byte dari sekedar melakukan satu putaran. Ini dia (183 byte):
sumber
Python 2, 162 byte
Agak berantakan, tapi ini usaha pertamaku. Ia mencoba semua kemungkinan jumlah baris
r
, mengatur jumlah garis bawah dasar menjadia = V/r-r
. Kemudian ia mencoba semua ketinggian permukaan air yang mungkink
dan memeriksa apakah mangkuk itu valid, mencetaknya jika demikian.sumber
Python 2.7,
284270260 BytesIni pada dasarnya menghitung tinggi dan lebar ember dan air dan mencetaknya.
Berusaha keras untuk menghapus bagian loop sementara jelek di awal (di mana saya menghitung ketinggian ember dan ketinggian dari mana air harus diambil. Saat ini, semua baris dalam kode kecuali untuk yang terakhir adalah untuk menghitung lebar dan tinggi). Masih mencoba: P
Mengujinya untuk berbagai kasus -
sumber