Ispirato da questa domanda e perfezionato da Luis Mendo .
Sfida
Data una matrice 2D di numeri interi, ogni riga ha un valore massimo. Uno o più elementi di ciascuna riga saranno uguali al valore massimo della rispettiva riga. Il tuo obiettivo è determinare quali colonne contengono il maggior numero di voci uguali al valore massimo della rispettiva riga e al numero di massimi per riga trovati in queste colonne.
Ingresso
- L'input sarà una matrice
M
x non vuotaN
(M
> 0 eN
> 0) in qualunque forma sia adatta alla tua lingua preferita.
Produzione
- Il programma dovrebbe restituire l' indice di ogni colonna contenente il numero massimo di massimi per riga (sia come valori separati che come elenco). È possibile utilizzare l'indicizzazione basata su 0 o 1 (specificare nella descrizione).
- Il tuo programma dovrebbe anche restituire il numero di massimi presenti in queste colonne (un singolo numero).
- L'ordine / formato dell'output è flessibile ma dovrebbe essere spiegato nel testo che accompagna la tua risposta.
Informazioni aggiuntive
- Tutte le voci nella matrice di input saranno numeri interi positivi.
- Se il valore massimo di una riga è condiviso da più elementi in quella riga, tutte le occorrenze di quel valore contano ai fini del totale delle loro colonne.
- Se più colonne contengono lo stesso numero di massimi, è necessario restituire un elenco di tutte le colonne con questo numero di massimi.
Un esempio
Considera l'input
7 93
69 35
77 30
La riga 1 ha un massimo di 93, che si verifica una sola volta, vale a dire alla colonna 2. Riga 2: compare alla colonna 1. Riga 3: anche alla colonna 1. Quindi la colonna vincente è 1, con 2 massimi. Quindi l'output sarà [1] [2]
. Se cambiamo l'input in
7 93
69 35
77 77
l'output sarà [1 2] [2]
, poiché entrambe le colonne hanno 2 massimi.
Casi test
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]
punteggio
Questo è code-golf , vince il codice più breve in byte. Tiebreaker va alla risposta precedente.
Classifica
Di seguito è riportato un frammento di stack per l'analisi di tutte le voci.