Sepertinya baru-baru ini, ada banyak Jimmys jatuh ke kematian mereka, seperti dapat dilihat di sini , dan di sini di mana Anda diminta untuk menentukan apakah Jimmy akan jatuh. Sudah saatnya kita menghentikan kegilaan ini dan mencoba menyelamatkan Jimmy.
Jimmy memiliki tiga bagian tubuh /
, o
dan \
diatur seperti ini
/o\
Platform diwakili dengan -
. Jimmy akan jatuh dari platform mereka jika mereka memiliki dua atau lebih bagian tubuh yang tidak langsung di atas platform.
Beberapa contoh:
/o\
- -------
Jimmy akan menyeimbangkan karena semua bagian tubuh mereka di atas a -
.
/o\
------ ---
Jimmy akan seimbang karena dua bagian tubuh berada di atas -
s.
/o\
-- ---- --
Jimmy akan menyeimbangkan meskipun mereka terbagi antara dua platform
/o\
-
Jimmy tidak akan seimbang karena dua bagian tubuh tidak berada di atas platform.
Karena persediaan platform saya hampir habis, saya hanya memiliki platform dengan panjang 5, dan penting kami menggunakan sesedikit mungkin.
Tugas Anda adalah mengambil input Jimmys dan mengeluarkan serangkaian platform yang akan menyimpan semua Jimmys dalam input. Output Anda harus menggunakan platform sesedikit mungkin, tetapi setiap platform harus memiliki -
lebar 5 's.
Perhatikan bahwa aturan platform menjadi 5 -
lebar, berarti setiap platform harus memiliki ruang di antara mereka. ----------
tidak valid dalam output karena akan dianggap sebagai platform dengan panjang 10 dan bukan dua platform dengan panjang 5.
Test Case
/o\ /o\/o\ // input
----- ----- // output
/o\ /o\
----- -----
/o\ /o\ // same input as above
----- ----- // this is also valid output
/o\ /o\
-----
Aturan standar berlaku.
Ini kode-golf, semoga jawaban terpendek menang!
Jawaban:
Arang ,
1715 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Ulangi saat posisi kursor kurang dari panjang input.
Jika karakter pada posisi itu dalam input adalah
o
atau\
kemudian cetak 5-
s.Pindah ke karakter berikutnya, sehingga menjamin setidaknya satu ruang antar platform.
Solusi 17-byte sebelumnya adalah IMHO lebih banyak "Charcoal-y".
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Output meliputi input, dengan demikian menunjukkan kebenaran solusi. Penjelasan:
Cetak input dan lanjutkan ke awal baris berikutnya.
Ulangi setiap karakter input untuk memastikan tidak ada Jimmy yang terlewat.
Lihatlah karakter di atas kursor. Jika tidak ada, atau jika itu ruang atau
/
, maka jangan lakukan apa pun, jika tidak cetak 5-
dtk.Pindah ke karakter berikutnya, sehingga menjamin setidaknya satu ruang antar platform.
sumber
Python 2 ,
7067 byteCobalah online!
-3 byte terima kasih kepada Kevin Cruijssen & Neil
Bukan yang tercantik, tidak yakin bagaimana cara menangani tebasan sisa itu dengan lebih baik ...
Sayangnya, kami tidak dapat mengganti kedua ujung setiap platform dengan spasi menggunakan satu
re.sub
panggilan, karena dalam kasus 2 platform terpisah satu ruang, jarak antara keduanya tidak dapat dicocokkan lebih dari sekali. Pernyataan yang terlihat / terlihat di belakang pernyataan tidak akan membantu, karena apa pun yang cocok dengan pernyataan itu tidak akan diganti.Menggunakan satu
re.sub
referensi:Python 3.8 (pra-rilis) , 78 byte
Cobalah online!
sumber
/
dan kemudian[^ ]
.JavaScript (ES6),
56 5554 byteCobalah online!
Atau 47 byte jika mengembalikan array karakter dapat diterima.
sumber
Python 3 ,
158164160 byteCobalah online!
Ini adalah jawaban golf kode pertama saya, dan saya senang ada pertanyaan Jimmy!
Penjelasan:
a=input();r=""
: Ambil input dan inisialisasi string barur
.for i,c in enumerate(a):
: Hitung lebih dari input.try:r[i] ... except:
: Lihat jikar[i]
ada - jika tidak, prosesexcept
blok.if c in"/o":
: Periksa apakah karakter saat ini ada di dua bagian tubuh pertama Jimmy.r+=(a[i+5<len(a)and i+5or len(a)-1]=="o"and" "or"")+"----- "
: Jika demikian, tambahkan segmen baru. Tambahkan spasi sebelum segmen baru kami jika kepala Jimmy lain hadir dalam lima karakter.else:r+=" "
: Kalau tidak, tambahkan saja spasi.print(r)
: Cetak hasil akhir kami.sumber
Retina ,
2321 byte-2 byte terima kasih kepada @Neil .
Berisi ruang trailing tunggal pada baris kedua, keempat, dan keenam.
Port of @negativeSeven 's Python 2 menjawab , jadi pastikan untuk membesarkannya!
Cobalah online.
Penjelasan:
Ganti semua
"/"
dengan" "
:Tambahkan 5 spasi tambahan:
Ganti semua substring ukuran enam yang tidak dimulai dengan spasi dengan
"----- "
:sumber
\S
bukan[^ ]
?Jelly , 35 byte
Cobalah online!
Tautan monadik yang mengambil input sebagai string dan mengembalikan string Jelly dengan platform.
Mengambil inspirasi dari jawaban @ negativeseven .
sumber
05AB1E ,
2524 bytePort of @negativeSeven 's Python 2 menjawab , jadi pastikan untuk membesarkannya!
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
Japt ,
2322 byteSebuah port dari solusi JS Arnauld yang terlalu lelah untuk diuji sepenuhnya. Jika itu tidak valid, bisakah Diamond dihapus?
Cobalah
sumber