Memasukkan:
Daftar bilangan bulat (yang tidak akan pernah mengandung nol)
Keluaran:
Daftar ukuran yang sama dengan jumlah berdasarkan pada:
- Jika item saat ini negatif: Lihat semua item sebelum item ini, dan hitung berapa kali digit terjadi pada angka-angka lainnya
- Jika item saat ini adalah positif sebagai gantinya: Lihat semua item setelah item ini, dan hitung berapa kali digit terjadi pada angka-angka lainnya
Ada satu twist: Jika ukuran daftar adalah bahkan kita hanya menghitung setiap angka sekali (bahkan jika itu cocok dengan beberapa digit), dan jika ukurannya ganjil kita menghitung setiap digit angka untuk setiap digit item saat ini (digandakan digit dihitung beberapa kali).
Mari kita berikan beberapa contoh untuk memperjelas hal ini:
Contoh dengan daftar genap:
Input: [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2, 4, 1, 2, 1, 1, 5 ]
Ukuran daftar genap , jadi kami hanya menghitung setiap angka sekali.
4
: Ini positif, jadi kami menantikan. Ada tiga nomor yang berisi angka4
(42
,-942
,8374
). Jadi kita mulai dengan a3
.10
: Ini positif, jadi kami menantikan. Ada dua angka yang mengandung digit1
dan / atau0
(-10
,-200
). Jadi output kedua adalah2
.42
: Sekali lagi positif, sangat maju. Ada empat nomor yang berisi baik digit4
dan / atau2
(-942
,8374
,728
,-200
). Jadi output ketiga adalah4
.-10
: Kali ini negatif, jadi kami melihat ke belakang. Hanya ada satu nomor yang berisi digit1
dan / atau0
(kami mengabaikan tanda minus) (10
). Jadi output keempat adalah1
.- dll.
Contoh dengan daftar ganjil:
Input: [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13, 2, 2, 4, 8, 3, 0, 11, 6 ]
Ukuran daftar aneh , jadi kami menghitung setiap digit.
382
: Ini positif, jadi kami menantikan. Ada satu3
di nomor lain (381
), enam8
di nomor lainnya (-82, -8, 381, 228, 28, -28
), dan enam2
di nomor lainnya (-82, 228, 28, -28, 2
). Jadi kita mulai dengan a13
.-82
: Ini negatif, jadi mundur. Ada satu3
di nomor lainnya (382
), dan satu8
di nomor lainnya (382
). Jadi output kedua adalah2
.- ...
228
: Ini positif, sangat maju. Ada tiga2
's di nomor lain (28
,-28
,-2
), dan tiga2
' s, dan dua8
's di nomor lain (28
,-28
). Jadi output ini8
.- dll.
Aturan tantangan:
- Anda dapat berasumsi bahwa input tidak akan pernah berisi
0
sebagai item, karena itu tidak positif atau negatif. - Anda dapat menganggap daftar input akan selalu mengandung setidaknya dua item.
- I / O fleksibel. Input / output dapat berupa array / daftar bilangan bulat, string terbatas, digit / karakter-matriks, dll.
- Jika angka pertama dalam daftar adalah angka negatif, atau angka terakhir dalam daftar adalah angka positif, itu akan menjadi 0 dalam daftar yang dihasilkan.
- Dengan daftar ganjil, angka yang mengandung digit yang sama beberapa kali dihitung beberapa kali, seperti
228
pada contoh aneh di atas yang menghasilkan8
(3 + 3 + 2) alih-alih5
(3 + 2).
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa pun'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda.
- Juga, silakan tambahkan penjelasan jika perlu.
Kasus uji:
Input: [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2, 4, 1, 2, 1, 1, 5 ]
Input: [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13, 2, 2, 4, 8, 3, 0, 11, 6 ]
Input: [10, -11, 12, -13, 14, -15, 16, -17, 18, -19]
Output: [9, 1, 7, 3, 5, 5, 3, 7, 1, 9 ]
Input: [10, -11, 12, -13, 14, -15, 16, -17, 18, -19, 20]
Output: [11, 2, 8, 4, 5, 6, 3, 8, 1, 10, 0 ]
Input: [88, 492, -938, 2747, 828, 84710, -29, -90, -37791]
Output: [8, 9, 3, 9, 3, 4, 5, 4, 12 ]
Input: [-1, 11, 11, 1]
Output: [0, 2, 1, 0]
Input: [1, 11, 11, -1]
Output: [3, 2, 1, 3 ]
Input: [-1, 11, 1]
Output: [0, 2, 0]
Input: [1, 11, -1]
Output: [3, 2, 3 ]
δ¢
, tidak pernah melihat vektor ganda digunakan dengan baik, bagus.Python 2 ,
149148121116111107 byteCobalah online!
sumber
Java (JDK 10) , 204 byte
Cobalah online!
Kredit
sumber
[1,11,-1]
harus kembali[3,2,3]
. Ini daftar aneh, jadi semua angka dihitung. Pertama1
: Berharap, tiga1
s total:11,-1
. Kedua11
: Nantikan setiap digit: satu1
+ satu1
. Ketiga-1
: Lihat mundur, tiga1
s total:-1,11
. (Dengan daftar aneh, Anda harus melihat setiap digit, bahkan sama. Saya akan menjelaskan ini dalam tantangan, tetapi contoh aneh dengan angka228
sedikit memperjelas ini.),t
dan mengubahi+(a[i]>0?1:-1)
untuki+(t=a[i]>0?1:-1)
, dan kemudian hanya menggunakanj+=t
bukanj+=a[i]>0?1:-1
.Perl 6 ,
10085 byteCobalah online!
Menggunakan operator penggandaan baggy ⊍.
sumber
Perl 5
-n
, 92 byteCobalah online!
sumber
JavaScript (Node.js) ,
164.158.140139 byteCobalah online!
sumber
Ruby , 126 byte
Cobalah online!
sumber
Jelly ,
4342 byteCobalah online!
sumber