Terinspirasi oleh pertanyaan ini dan disempurnakan oleh Luis Mendo .
Tantangan
Diberikan matriks 2D bilangan bulat, setiap baris memiliki nilai maksimum. Satu atau lebih elemen dari setiap baris akan sama dengan nilai maksimum dari masing-masing baris. Tujuan Anda adalah untuk menentukan kolom mana yang berisi paling banyak entri yang sama dengan nilai maksimum barisnya masing-masing dan juga jumlah maksimum baris-bijaksana yang ditemukan dalam kolom ini.
Memasukkan
- Input akan berupa matriks
M
x non-kosongN
(M
> 0 danN
> 0) dalam bentuk apa pun yang cocok untuk bahasa pilihan Anda.
Keluaran
- Program Anda harus mengembalikan indeks setiap kolom yang berisi jumlah maksimum baris-bijaksana maksimal (baik sebagai nilai terpisah atau daftar). Pengindeksan berbasis 0 atau 1 dapat digunakan (sebutkan dalam deskripsi Anda).
- Program Anda juga harus mengembalikan jumlah maksimum yang ada dalam kolom ini (satu nomor).
- Urutan / format output fleksibel tetapi harus dijelaskan dalam teks yang menyertai jawaban Anda.
informasi tambahan
- Semua entri dalam matriks input akan menjadi bilangan bulat positif.
- Jika nilai maksimum baris dibagi oleh beberapa elemen di baris itu, semua kemunculan nilai tersebut dihitung terhadap total kolomnya.
- Jika beberapa kolom berisi jumlah maksimum yang sama, Anda harus mengembalikan daftar semua kolom yang memiliki jumlah maksimum ini.
Sebuah contoh
Pertimbangkan input
7 93
69 35
77 30
Baris 1 memiliki maxium 93, yang terjadi hanya sekali, yaitu di kolom 2. Baris 2: terjadi di kolom 1. Baris 3: juga di kolom 1. Jadi kolom pemenang adalah 1, dengan 2 maxima. Dengan demikian hasilnya akan [1] [2]
. Jika kami mengubah input ke
7 93
69 35
77 77
hasilnya akan [1 2] [2]
, karena kedua kolom memiliki 2 maxima.
Uji Kasus
input => output ( [1-based index array], [nMaxima] )
----------------------------------------------
7 93
69 35 => [1], [2]
77 30
7 93
69 35 => [1 2], [2]
77 77
1 2 3 4 => [4], [2]
5 6 7 8
16 2 3 13
5 11 10 8 => [1 2 4], [1]
9 7 6 12
1 1 1 1 => [1 2 3 4], [1]
25 6 13 25 => [1 4], [1]
1
2
3 => [1], [4]
4
100 => [1], [1]
Mencetak gol
Ini adalah kode-golf , kode terpendek dalam byte menang. Tiebreaker melanjutkan ke jawaban sebelumnya.
Papan peringkat
Di bawah ini adalah cuplikan tumpukan untuk menganalisis semua entri.
sumber
Jawaban:
Jelly , 9 byte
Input adalah daftar 2D, output adalah pasangan: daftar indeks berbasis 1 dan jumlah maksimal maksimal.
Cobalah online! atau verifikasi semua kasus uji .
Bagaimana itu bekerja
sumber
J, 27 byte
Ini adalah kata kerja monadik, digunakan sebagai berikut dalam kasus contoh kedua:
Output terdiri dari dua kotak, dan menggunakan pengindeksan berbasis 0. Coba di sini!
Penjelasan
sumber
MATL, 17 byte
Output pertama adalah jumlah maksimum maxima dan output kedua adalah kolom di mana hal ini terjadi (pengindeksan berbasis 1).
Cobalah secara Online!
Penjelasan
sumber
MATL , 17 byte
Input adalah array 2D, dengan baris yang dipisahkan oleh titik koma. Jadi input untuk kasus uji adalah
Output adalah: pertama jumlah maksimum maksimum, lalu satu atau lebih kolom indeks.
Cobalah online!
Penjelasan
Ini menggunakan pendekatan yang berbeda dari jawaban Suever .
Pertama, matriks nilai-nilai logis (
true
danfalse
) dihitung, di manatrue
menunjukkan keberadaan baris-maksimum. Kemudian indeks kolomtrue
nilai diekstraksi menjadi vektor. Akhirnya, mode vektor itu dihitung (jumlah maksimum maksimum), bersama dengan semua nilai yang paling sering (indeks kolom yang diinginkan).sumber
Pyth,
201917 byte1 byte terima kasih kepada @Suever .
1 byte berkat @Jakube .
Suite uji.
Output diindeks 0.
Pesanan dibalik.
Semua input
Semua keluaran
Bagaimana itu bekerja
sumber
CJam ,
383531 byte2 byte lebih sedikit berkat @FryAmTheEggMan, dengan bantuan juga dari @quartata. Terima kasih juga kepada @Dennis karena menghapus 4 byte lagi.
Input berupa formulir
Output adalah array indeks kolom berbasis 1 dan angka.
Cobalah online!
sumber
q~_::e>.f=:.+_:e>_@f{=U):Ua*~}p
menghemat beberapa byte. Mengubahnya menjadi blok kode akan menghemat 1 lagi.{=U):Ua*~}
...Pyke, 17 byte
Coba di sini!
sumber
Python 2, 106 byte
Input adalah daftar 2D float, output adalah pasangan: daftar indeks berbasis 0 dan integer.
Uji di Ideone .
sumber
Julia, 54 byte
Input adalah matriks, output adalah pasangan: daftar indeks berbasis 1 dan jumlah maksimal maksimal.
Cobalah online!
sumber
JavaScript (ES6), 111 byte
Mengembalikan array dua elemen; yang pertama adalah jumlah maksimum maksimum, yang kedua adalah array dari kolom yang diindeks nol dengan jumlah itu.
sumber
Oktaf,
4746 byteIni menciptakan fungsi anonim yang secara otomatis menempatkan dirinya
ans
dan dapat dijalankan menggunakanans([1 2 3; 4 5 6])
. Ini mengembalikan array sel dua elemen di mana elemen pertama adalah jumlah maksimum maksimum dan yang kedua adalah indeks berbasis 1 dari kolom yang mengandung maksimum ini.Semua uji kasus
sumber
Python 3, 142 byte
Algoritma di sini pada dasarnya adalah, melalui setiap baris dan meningkatkan skor kolom yang memiliki maksimum baris itu. Kemudian cari maks skor dan temukan kolom yang memiliki skor maks dan kembalikan. Kolom adalah 1-diindeks. Saya mencoba satu-baris ini menjadi lambda, tetapi dengan menghasilkan kolom skor dengan kolom itu 153 byte.
Uji Kasus
sumber
Clojure, 150 byte
Man yang panjang, saya punya perasaan ini bisa disederhanakan banyak. Setidaknya itu menghasilkan output yang benar.
sumber
05AB1E , 14 (atau 12) byte
Output dalam format
[[1-indexed columns-list], maxima]
.Cobalah secara online atau verifikasi semua kasus uji .
Jika diizinkan memiliki item
0
dalam daftar kolom yang kami abaikan, itu bisa 2 byte lebih sedikit dengan menghapus0K
:Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber