Terinspirasi oleh ini . Tidak ada avokad yang terluka dalam membuat tantangan ini.
Halo Saya punya tantangan Saya butuh bantuan untuk membuat alpukat jadi saya perlu program untuk memberi tahu saya berapa lama untuk membuat alpukat untuk
Perhatikan alpukat seni ASCII ini:
######
# #
# #### #
# # p# #
## #### #
# #
######
Alpukat ini terdiri dari bagian luar #
s (khusus urutan pertama dan terakhir dari #
s pada setiap baris) dan lubang (bentuk #
s dalam alpukat yang tidak menyentuh bagian luar alpukat).
Melalui eksperimen keras pada alpukat seni ASCII ini, saya telah menemukan yang berikut:
avocado juice in fluid ounces = number of spaces inside avocado but outside pit (the pit is marked with a p in the example) + 2 * number of spaces inside pit
time to juice avocado in minutes = 13 * number of spaces inside pit
Sebagai contoh, alpukat ini akan memakan waktu 26 (2 spasi di dalam lubang * 13) menit untuk jus dan akan memberikan 23 (19 ruang di dalam alpukat tetapi di luar lubang + 2 * 2 ruang di dalam lubang) fl oz jus.
Tantangan
Diberikan input tepat satu alpukat seni ASCII seperti yang di atas yang hanya terdiri dari #
dan spasi, output jumlah waktu dalam hitungan menit yang diperlukan untuk membuatnya dan jumlah jus yang akan diproduksi dalam urutan apa pun.
Anda dapat berasumsi bahwa alpukat input akan selalu memiliki tepat satu lubang dan alpukat serta lubang tersebut akan selalu tertutup. Pit dan alpukat akan selalu terhubung, dan setiap subset dari pit akan terhubung juga. Alpukat dan lubang selalu cembung. Perhatikan bahwa bagian luar alpukat mungkin sewenang-wenang tebal.
Input dan Output Sampel
######
# #
# #### #
# # # # -> 26 23
## #### #
# #
######
#######
# #
# ### ##
# # # # -> 26 35
# ## #
# #
##########
Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
Jawaban:
Pyth,
5951 byteCoba di sini!
Output waktu untuk juic advacado (bahasa Inggris yang benar-benar benar) pertama dan pada baris berikutnya jumlah juic.
Penjelasan
Kode - Tinjauan Umum
Penjelasan terperinci dari bagian perhitungan ukuran lihat di bawah.
Mendapatkan ukuran advacado
Mari kita lihat yang ini:
Pertama, spasi putih depan dan belakang dihapus. Setelah itu kami membungkus semuanya dalam satu baris, yang menghasilkan string ini:
Ini berisi semua spasi putih di advacado, jadi kita hanya harus menghitungnya (advacado akan selalu cembung, jadi ini berfungsi untuk semua input yang valid). Angka ini masih berisi spasi di pit, tapi untuk perhitungan jumlah juic kita hanya perlu spasi di dalam buah tanpa spasi. Jadi kita perlu menghitungnya juga.
Kode untuk itu dijelaskan secara rinci:
Mendapatkan ukuran lubang
Ini agak sulit. Pertama, kami menghapus garis yang tidak berkontribusi pada ukuran lubang. Ini dilakukan dengan memfilter semua garis yang memiliki kurang dari 4 kelompok hash (menggunakan regex
#+
dan menghitung kecocokannya). Dalam contoh di atas hanya satu baris yang akan bertahan proses ini:Ruang yang saya tandai dengan
-
sini adalah yang perlu kita hitung. Jadi kita hanya menghapus spasi, lalu hash dan kemudian spasi lagi yang meninggalkan kita dengan ini:Di sana kita hanya perlu menghitung spasi. Kami melakukan semua itu untuk setiap baris yang selamat dari proses penyaringan, jumlah semuanya dan kami selesai. Sisanya adalah matematika sepele.
Kode untuk itu dijelaskan secara rinci:
sumber
Retina , 70
Cobalah online.
sumber
$*
... masih terasa sangat golf meskipun ...$*_
? Itu bagus. Saya berhasil mendapatkan 70 byte .f
sangat pintar! Sayang sekali "argumen" yang tepat$*
hanya bisa berupa karakter dan bukan token ... mungkin jenis pengganti lain untuk masa depan? : 0Python,
141119 bytesumber
s
dengans=str.strip
, tubuh loop bisa menjadix=s(s(x),'#');y=s(x);o+=l(x)-l(y);i+=l(s(y,'#'))
. Juga, ada ruang non-fungsional di baris terakhir.