Seperti yang mungkin Anda ketahui, ada beberapa tantangan Jimmy yang indah baru - baru ini muncul. Dalam tantangan ini, Anda ditantang dengan keterampilan akrobat teman tercinta kita. Sekarang kami punya tantangan berbeda untuk Anda. Hari ini Anda akan mengidentifikasi berbagai jenis Jimmy!
Penjelasan
Ada tiga jenis Jimmys: kerdil, akrobat, dan binaragawan.
This is dwarf Jimmy: o
This is acrobat Jimmy: /o\
This is bodybuilder Jimmy: /-o-\
Jimmys ini semua adalah teman baik dan mereka suka berdiri di jalur yang sama satu sama lain. Tugas Anda adalah, diberikan adegan Jimmy seperti ini:
o /o\ o /-o-\/-o-\ o /o\
Keluarkan jumlah kurcaci, akrobat, dan binaragawan masing-masing di telepon.
Tantangan
Ambil input dalam bentuk apa pun sebagai adegan Jimmy, seperti yang ditunjukkan dalam contoh di atas.
String input harus satu baris dan secara opsional berisi tiga jenis Jimmys dan spasi putih opsional.
String tidak harus berisi semua varietas Jimmy atau spasi putih.
String tidak akan mengandung karakter apa pun yang tidak ada di
o/\ -
.Kombinasi varietas Jimmy dimungkinkan. Ini berarti bahwa tipe Jimmy yang sama atau berbeda dapat bersebelahan. Anda harus menjelaskannya.
Memimpin dan membuntuti spasi putih adalah opsional dan tidak diperlukan - program Anda harus menjelaskan string dengan atau tanpa memimpin dan / atau membuntuti spasi putih.
String hanya boleh berisi Jimmys dan spasi putih yang valid. Misalnya,
---///---
tidak diperbolehkan karena itu bukan urutan Jimmy yang valid.
Keluarkan tiga angka: Hitungan kurcaci, akrobat, dan binaragawan dalam adegan (sesuai urutannya).
Ini dapat berupa output ke konsol sebagai bilangan bulat yang dipisahkan oleh ruang, atau mungkin berupa nilai balik dari fungsi sebagai semacam wadah (yaitu jenis array).
Output, dalam format apa pun, harus dipesan sebagaimana disebutkan dalam bullet teratas di atas aturan ini.
Aturan dan celah standar berlaku.
Uji kasus
/-o-\ /-o-\ o/o\ /-o-\ /-o-\ /-o-\
OUTPUT: 1 1 5
o o /o\ o o o /o\ /o\
OUTPUT: 5 3 0
/-o-\ /-o-\ /-o-\/-o-\ o /o\/o\ /-o-\o /-o-\ /o\/-o-\
OUTPUT: 2 3 7
/-o-\ o /-o-\ o/o\
OUTPUT: 2 1 2
Jika Anda ingin lebih banyak kasus uji, gunakan alat ini untuk menghasilkan lebih banyak kasus uji acak.
Mencetak gol
Ini adalah kode-golf , sehingga skor terendah dalam byte menang.
Anda dapat melihat leaderboard untuk posting ini dengan memperluas widget / snippet di bawah ini. Agar posting Anda dimasukkan dalam peringkat, Anda perlu tajuk ( # header text
) dengan info berikut:
Nama bahasa (akhiri dengan tanda koma
,
atau tanda hubung-
), diikuti oleh ...Jumlah byte, sebagai angka terakhir yang muncul di header Anda.
Misalnya, JavaScript (ES6), 72 bytes
valid, tetapi Fortran, 143 bytes (8-bit)
tidak valid karena jumlah byte bukan nomor terakhir di header (jawaban Anda akan dikenali sebagai 8 byte - jangan memanfaatkan ini).
<!-- Run the snippet to see the leaderboard. Report any bugs to @xMikee1 on Github. --> <iframe src="https://ozewski.github.io/ppcg-leaderboard/?id=188391" width="100%" height="100%" style="border:none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe><style>html,body{margin:0;padding:0;height:100%;overflow:hidden}</style>
oo /o\ o o
akan menyenangkanoo
.Jawaban:
Jelly , (12?) 13 byte
Tautan monadik yang menerima daftar karakter yang menghasilkan daftar bilangan bulat,
[ dwarves, acrobats, and body-builders]
(simpanṚ
byte jika kami dapat menentukan output kami)Cobalah online!
Bagaimana?
Semua Jimmys menunjukkan
o
; semua non-kurcaci menunjukkan a/
; semua binaragawan menunjukkan dua-
. Hitung ini, membagi dua hitungan-
, dan lakukan pengurangan untuk menemukan jumlah Jimmy:sumber
Python 3.8 (pra-rilis) , 51 byte
Cobalah online!
sumber
('o')
dipanggil tanpa ac
?s.count
kec
dan kemudian mengembalikannya.Python 2 , 50 byte
Cobalah online!
-10 byte dengan mengonversi ekspresi lambda ke program lengkap berkat @xnor (menghapus hal tersarang double-lambda dan menggunakan penugasan sebagai gantinya)
sumber
PowerShell ,
5955 byteCobalah online!
Belum dibuka:
sumber
J ,
3625 byte-11 byte berkat cole!
Cobalah online!
Solusi asli
J , 36 byte
Cobalah online!
Penjelasan:
Sesi sampel J :
sumber
Unggul sebagai CSV, 130 byte
Masukkan input dalam ruang sebelum pertama
,
, simpan sebagai .csv, buka di Excel. Keluaran Kurcaci, Akrobat dan BinaragawanB1
,B2
danB3
masing - masing.Excel, 244 byte
sumber
APL (Dyalog Unicode) , 20 byte SBCS
Cobalah online!
sumber
Kotlin
131130129121 121117979688 byteCobalah online!
Sunting - Wew, dapatkan di bawah 100! Saya ragu saya bisa menyusut lebih banyak, tetapi hanya waktu yang akan mengatakan ...
Sunting - Berbicara terlalu cepat, menjatuhkan satu byte lagi dengan menggunakan daftar, bukan string
Sunting - minus 8 byte berkat AsoLeo yang menyarankan penggunaan fungsi ekstensi
sumber
fun String.j(b:Int=count{'-'==it}/2,a:Int=count{'/'==it})=listOf(count{'o'==it}-a,a-b,b)
88 byte.Retina ,
3935 byteEdit: -4 byte terima kasih kepada @FryAmTheEggMan
Cobalah online!
Penjelasan:
Tahap ganti yang sederhana. Ia menemukan semua kecocokan regex
^((o)|(/o.)|(/-o-.)| )*
(yang harus menghasilkan satu kecocokan - seluruh string) dan menggantinya dengan jumlah tangkapan grup 2, 3, dan 4. Berikut adalah regex yang dipecah:Kita harus mulai dengan
^
atau akhir dari input juga dianggap sebagai kecocokan. Dalam sintaks substitusi Retina,$n
referensi grup penangkap ke-n, dan pengubah#
menghitung berapa banyak kecocokan yang dibuatnya.sumber
JavaScript, 55 byte
Mencari string menggunakan pencocokan pola regex
o
,o-
atauo-\
; menambah hitungan terkait dalam array, menggunakan panjang setiap pertandingan untuk menentukan indeks.Cobalah online!
sumber
Clojure , 78 byte
Cobalah online!
sumber
Bahasa Wolfram (Mathematica) , 63 byte
Cobalah online!
55 byte jika persyaratan pesanan tidak berguna dijatuhkan ...
sumber
Python 3 ,
69666056 byte-4 byte berkat @Maarten Fabré
Cobalah online!
sumber
g=input().count
segeraR , 63 byte
Menggunakan pencocokan Regex untuk menemukan dan menghitung Jimny.
Cobalah online!
sumber
K (oK) , 25 byte
Cobalah online!
sumber
Perl 5
-p
, 41 byteCobalah online!
Hitungan berapa kali
o
muncul tanpa diikuti oleh\
atau-
untuk menemukan kurcaci dan menghapusnya dari string. Kemudian menghitung berapa kali/o
muncul untuk menemukan akrobat dan menghapusnya dari string. Lalu hitung jumlah yango
tersisa untuk menentukan binaragawan. Menyisipkan spasi di antara angka-angka dan secara implisit menampilkan hasilnya.sumber
1*
undef
) bukan0
.Ruby , 50 byte
Cobalah online!
sumber
SNOBOL4 (CSNOBOL4) , 135 byte
Cobalah online!
Menghapus
-o
,,/o
dano
dari string dan menambah penghitung yang sesuai setiap waktu. Daun di belakang banyak lengan dan kaki (/-\
,\
, dan tidak ada).sumber
Keempat (gforth) , 118 byte
Cobalah online!
Penjelasan
/
,-
dano
karakter-
karakter dibagi 2/
karakter dikurangi jumlah binaragawano
karakter dikurangi jumlah Acrobat dan BinaragawanPenjelasan Kode
sumber
05AB1E , 13 byte
Yang ini bisa 12 byte dengan menghapus
R
jika urutan output[bodybuilder, acrobat, dwarf]
akan diizinkan.Cobalah secara online atau verifikasi semua kasus uji .
Alternatif minor sama dengan byte:
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
C (gcc) ,
999896 byte-1 byte berkat ceilingcat
Cobalah online!
sumber