Dalam tantangan yang sederhana namun menyenangkan ini , Anda diminta menentukan apakah Jimmy akan jatuh dari platform mereka. 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.
Tugas Anda adalah menulis sebuah program yang menggunakan platform sebagai wadah panjang yang hanya berisi -
s dan s (misalnya string) dan menampilkan jumlah Jimmy yang dapat ditempatkan pada platform sehingga tidak ada yang akan jatuh dan tidak ada yang akan tumpang tindih. Seorang Jimmy mungkin memiliki salah satu bagian tubuh mereka di sebelah kiri awal senar atau kanan ujung senar.
Ini adalah kode-golf sehingga jawaban diberi skor dalam byte dengan tujuan lebih sedikit.
Uji kasus
Input
- - -
- -
--
-- --
----
- -- --
------- -
Output masing-masing
0
0
1
1
2
2
2
3
---
juga tidak cocok dengan saya, sampai saya mengerjakan port saya dan menyadari mereka tidak diperlukan. Pikir saya akan menyebutnya sehari di sini, ambil sekantong kaleng dan melemparkan pada SMG sendiri - belum memainkannya dalam usia.Python 2 , 53 byte
Cobalah online!
Berdasarkan regex Arnauld . Dengan rakus mencari semua substring-3 panjang non-tumpang tindih dengan dua atau lebih
-
. Trik yang harus dilakukan`s`
untuk melampirkan string input dalam tanda kutip sebagai padding untuk meninggalkan ruang bagi Jimmys untuk menggantung di kedua ujung sepertiPython 2 , 57 byte
Cobalah online!
Membutuhkan format I / O murahan dari input yang sudah ada dalam tanda kutip. Output
False
untuk 0.Fungsi rekursif yang menempatkan masing-masing Jimmy pada posisi paling kiri diizinkan, dengan menempatkan Jimmy pada tiga karakter pertama jika mereka dapat menahan Jimmy, atau menghapus karakter pertama. Trik lucu adalah memeriksa apakah
s[:3]
mengandung dua atau lebih-
dengan melakukan'--'in s[:3]*2
, yang terdiri dari dua salinans[:3]
dan memeriksa dua yang berdekatan-
.sumber
Perl 5
-p
, 28 byteMenggunakan metode yang sama dengan JavaScript @ Arnauld.
Cobalah online!
sumber
Japt , 16 byte
Berdasarkan solusi JS asli Arnauld. Saya mencoba beberapa metode berbeda untuk mendapatkan bantalan yang diperlukan di kedua sisi input tetapi semuanya masuk dengan panjang yang sama - masih mencari cara yang lebih pendek ...
Menguji
sumber
Excel, 96 byte
A1
= platform. Dimasukkan sebagai array, FormulaCtrl
+Shift
+Enter
sumber
05AB1E , 16 byte
Pasti bisa bermain golf .. Kadang-kadang menjengkelkan melihat semua jawaban regex ini dalam sebuah tantangan saat menggunakan 05AB1E, yang tidak memiliki regex apa pun. ;)
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
Ruby , 39 byte
Cobalah online!
sumber
Stax , 13 byte
Jalankan dan debug itu
sumber
Java 8, 41 byte
Cobalah online.
Pelabuhan @Arnauld 's jawaban JavaScript , kecuali bahwa
+0
adalah+10
untuk menguji memperbaiki kasus-kasus seperti----
. Ini diperlukan karenaString#split
bawaan di Java akan menghapus Trailing empty Strings secara default. Ini dapat diubah dengan menambahkan parameter tambahan kesplit
builtin (yang secara0
default displit
-builtin dengan argumen String tunggal). Mengutip penggunaan parameter tambahan ini dari dokumen:Karena itu, biasanya
.split("...",-1)
digunakan untuk mempertahankan SEMUA tertinggal String kosong, dan saya bisa menggunakannya untuk jawaban ini juga ( Coba online ). Dalam hal ini mengubah+0
untuk+10
menyimpan dua byte di atas,-1
, meskipun. :)sumber
Jelly , 12 byte
Cobalah online!
Berdasarkan jawaban 05AB1E @ KevinCrujissen, jadi pastikan Anda juga memperbaiki suara .
sumber
Arang , 25 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Cetak platform tanpa menggerakkan kursor, lalu gerakkan kursor ke atas dan ke kiri karena itu adalah posisi Jimmy potensial pertama.
Carilah Jimmies sebanyak ada posisi platform.
Periksa untuk melihat apakah ada lebih dari satu platform di posisi ini.
Jika demikian maka catat posisi Jimmy yang valid ...
... dan pindahkan tiga karakter ke kanan sehingga Jimmies tidak tumpang tindih.
Kalau tidak, posisi potensial Jimmy berikutnya adalah satu karakter di sebelah kanan.
Bersihkan platform dan hasilkan hitungan posisi yang ditemukan.
sumber
PowerShell , 38 byte
Jawaban JavaScript Port of Arnauld .
Cobalah online!
sumber
Elm 0,19, 108 byte
Berdasarkan regex dalam jawaban JavaScript Arnauld . Verifikasi semua kasus uji di sini .
Solusi alternatif tanpa regex, lebih lama secara signifikan pada 171 byte :
Verifikasi semua kasus uji di sini .
sumber