Contribution:
Une liste d'entiers (qui ne contiendra jamais de zéro)
Production:
Une liste de la même taille avec des nombres basés sur les éléments suivants:
- Si l'élément actuel est négatif: regardez tous les éléments avant cet élément et comptez combien de fois les chiffres se sont produits dans ces autres nombres
- Si l'élément actuel est positif à la place: regardez tous les éléments après cet élément et comptez combien de fois le chiffre s'est produit dans ces autres nombres
Il y a une torsion: si la taille de la liste est pair, nous ne comptons chaque numéro qu'une seule fois (même si elle correspond à plusieurs chiffres), et si la taille est impaire, nous comptons chaque chiffre des nombres pour chaque chiffre de l'élément actuel (dupliqué les chiffres sont comptés plusieurs fois).
Donnons quelques exemples pour clarifier un peu ceci:
Exemple avec liste paire:
Input: [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2, 4, 1, 2, 1, 1, 5 ]
La taille de la liste est même , nous ne comptons donc chaque numéro qu'une seule fois.
4
: C'est positif, donc nous avons hâte. Il y a trois numéros contenant le chiffre4
(42
,-942
,8374
). Nous commençons donc par un3
.10
: C'est positif, donc nous avons hâte. Il y a deux nombres contenant le chiffre1
et / ou0
(-10
,-200
). Donc, la deuxième sortie est2
.42
: Encore une fois positif, donc en avant. Il y a quatre numéros contenant soit le chiffre4
et / ou2
(-942
,8374
,728
,-200
). Donc, la troisième sortie est4
.-10
: Cette fois, c'est négatif, donc on regarde en arrière. Il n'y a qu'un seul chiffre contenant le chiffre1
et / ou0
(nous ignorons le signe moins) (10
). Donc, la quatrième sortie est1
.- etc.
Exemple avec liste impaire:
Input: [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13, 2, 2, 4, 8, 3, 0, 11, 6 ]
La taille de la liste est impaire , donc nous comptons chaque chiffre.
382
: C'est positif, donc nous avons hâte. Il y en a un3
dans les autres numéros (381
), six8
dans les autres numéros (-82, -8, 381, 228, 28, -28
) et six2
dans les autres numéros (-82, 228, 28, -28, 2
). Nous commençons donc par un13
.-82
: C'est négatif, donc en arrière. Il y en a un3
dans l'autre numéro (382
) et un8
dans l'autre numéro (382
). Donc, la deuxième sortie est2
.- ...
228
: C'est positif, donc en avant. Il y a trois2
« s dans les autres numéros (28
,-28
,-2
), et trois2
» s, et deux8
« s dans les autres numéros (28
,-28
). Donc, cette sortie est8
.- etc.
Règles du défi:
- Vous pouvez supposer que l'entrée ne contiendra jamais
0
comme élément, car elle n'est ni positive ni négative. - Vous pouvez supposer que la liste d'entrées contiendra toujours au moins deux éléments.
- Les E / S sont flexibles. L'entrée / sortie peut être un tableau / une liste d'entiers, une chaîne délimitée, une matrice de chiffres / caractères, etc.
- Si le premier nombre de la liste est un nombre négatif ou le dernier nombre de la liste est un nombre positif, il sera 0 dans la liste résultante.
- Avec les listes impaires, les nombres contenant le même chiffre plusieurs fois sont comptés plusieurs fois, comme
228
dans l'exemple impair ci-dessus, ce qui donne8
(3 + 3 + 2) au lieu de5
(3 + 2).
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues non-golfeur de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- Veuillez également ajouter une explication si nécessaire.
Cas de 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 ]
δ¢
, jamais vu double-vecteur bien utilisé, joli.Python 2 ,
149148121116111107 octetsEssayez-le en ligne!
la source
Java (JDK 10) , 204 octets
Essayez-le en ligne!
Crédits
la source
[1,11,-1]
devrait revenir[3,2,3]
. C'est une liste étrange, donc tous les chiffres comptent. Tout d' abord1
: Réjouissez -vous , trois1
s au total:11,-1
. Deuxièmement11
: attendez avec impatience chaque chiffre: un1
+ un1
. Troisième-1
: Regardez en arrière, trois1
s au total:-1,11
. (Avec des listes impaires, vous devriez regarder chaque chiffre, même le même. Je clarifierai cela dans le défi, mais l'exemple étrange avec un numéro228
clarifie un peu cela.),t
et changeanti+(a[i]>0?1:-1)
ài+(t=a[i]>0?1:-1)
, puis utilisez simplement auj+=t
lieu dej+=a[i]>0?1:-1
.Perl 6 ,
10085 octetsEssayez-le en ligne!
Utilise l'opérateur de multiplication baggy ⊍.
la source
Perl 5
-n
, 92 octetsEssayez-le en ligne!
la source
JavaScript (Node.js) ,
164,158,140139 octetsEssayez-le en ligne!
la source
Rubis , 126 octets
Essayez-le en ligne!
la source
Gelée ,
4342 octetsEssayez-le en ligne!
la source