Ingresso:
Un elenco di numeri interi (che non conterrà mai uno zero)
Produzione:
Un elenco della stessa dimensione con conteggi basati su quanto segue:
- Se l'elemento corrente è negativo: osserva tutti gli elementi prima di questo elemento e conta quante volte si sono verificate le cifre in quegli altri numeri
- Se invece l'elemento corrente è positivo: osserva tutti gli elementi dopo questo elemento e conta quante volte la cifra si è verificata in quegli altri numeri
C'è una svolta: se la dimensione dell'elenco è pari contiamo ogni numero una sola volta (anche se corrisponde a più cifre) e se la dimensione è dispari contiamo ogni cifra dei numeri per ogni cifra dell'elemento corrente (duplicata le cifre vengono contate più volte).
Facciamo alcuni esempi per chiarire un po 'questo:
Esempio con elenco pari:
Input: [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2, 4, 1, 2, 1, 1, 5 ]
La dimensione dell'elenco è pari , quindi contiamo ogni numero solo una volta.
4: È positivo, quindi non vediamo l'ora. Ci sono tre numeri che contengono la cifra4(42,-942,8374). Quindi iniziamo con a3.10: È positivo, quindi non vediamo l'ora. Esistono due numeri contenenti la cifra1e / o0(-10,-200). Quindi la seconda uscita è2.42: Ancora una volta positivo, quindi avanti. Ci sono quattro numeri che contengono sia la cifra4e / o2(-942,8374,728,-200). Quindi il terzo output è4.-10: Questa volta è negativo, quindi guardiamo indietro. C'è solo un numero che contiene la cifra1e / o0(ignoriamo il segno meno) (10). Quindi la quarta uscita è1.- eccetera.
Esempio con elenco dispari:
Input: [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13, 2, 2, 4, 8, 3, 0, 11, 6 ]
La dimensione dell'elenco è dispari , quindi contiamo ogni cifra.
382: È positivo, quindi non vediamo l'ora. Ce n'è uno3negli altri numeri (381), sei8negli altri numeri (-82, -8, 381, 228, 28, -28) e sei2negli altri numeri (-82, 228, 28, -28, 2). Quindi iniziamo con a13.-82: È negativo, quindi all'indietro. Ce n'è uno3nell'altro numero (382) e uno8nell'altro numero (382). Quindi la seconda uscita è2.- ...
228: È positivo, quindi avanti. Ci sono tre2'scritto nella altri numeri (28,-28,-2), e altri tre2' s, e due8's negli altri numeri (28,-28). Quindi questo output è8.- eccetera.
Regole della sfida:
- Puoi presumere che l'input non conterrà mai
0come elemento, poiché non è né positivo né negativo. - Puoi presumere che l'elenco di input contenga sempre almeno due elementi.
- L'I / O è flessibile. L'input / output può essere array / elenco di numeri interi, stringa delimitata, cifra / matrice di caratteri, ecc.
- Se il primo numero nell'elenco è un numero negativo o l'ultimo numero nell'elenco è un numero positivo, sarà 0 nell'elenco risultante.
- Con gli elenchi dispari, i numeri che contengono la stessa cifra più volte vengono conteggiati più volte, come
228nell'esempio dispari sopra riportato che risulta in8(3 + 3 + 2) anziché5(3 + 2).
Regole generali:
- Questo è code-golf , quindi vince la risposta più breve in byte.
Non lasciare che le lingue di code-golf ti scoraggino dal pubblicare risposte con lingue non codegolfing. Prova a trovare una risposta il più breve possibile per "qualsiasi" linguaggio di programmazione. - Per la tua risposta valgono regole standard , quindi puoi usare STDIN / STDOUT, funzioni / metodo con i parametri corretti e tipo di ritorno, programmi completi. La tua chiamata.
- Le scappatoie predefinite sono vietate.
- Se possibile, aggiungi un link con un test per il tuo codice.
- Inoltre, si prega di aggiungere una spiegazione, se necessario.
Casi test:
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 ]
δ¢, mai visto un doppio vettore usato bene, bello.