Le défi
Étant donné une chaîne d'entrée (ou tableau) composée de <
et >
, sortie une séquence (tableau ou chaîne) d'entiers tels que:
- les opérateurs sont tous corrects lorsqu'ils sont appliqués dans l'ordre entre les nombres consécutifs dans la sortie
- tous les entiers sont positifs (1 ou plus)
- la somme des nombres entiers est aussi petite que possible mathématiquement
Les entrées peuvent varier pour correspondre à "supérieur à" et "inférieur à" dans la langue choisie.
Comme sortie alternative, spécifiez simplement la somme des nombres dans la sortie. Indiquez la version que vous résolvez dans le titre de votre réponse.
Les exclusions et règles habituelles s'appliquent, le plus petit octet gagne.
Vous pouvez supposer que la chaîne d'entrée ne conduira jamais à un débordement d'entier dans votre langue, si cela vous aide.
Exemples
>
donne2 1
quelles sommes3
>>>
donne4 3 2 1
quelles sommes10
><
donne2 1 2
quelles sommes5
donne
1
quelles sommes1
>>>>>>>>>
donne10 9 8 7 6 5 4 3 2 1
quelles sommes55
>><<>><>>>
donne3 2 1 2 3 2 1 4 3 2 1
quelles sommes24
><>><>><>
donne2 1 3 2 1 3 2 1 2 1
quelles sommes18
<<<<>
donne1 2 3 4 5 1
quelles sommes16
<<<<><<>
donne1 2 3 4 5 1 2 3 1
quelles sommes22
>><<
donne3 2 1 2 3
quelles sommes11
code-golf
sequence
mathematics
simonalexander2005
la source
la source
>
et<
?><>
Réponses:
Gelée , 19 octets
Essayez-le en ligne!
La valeur de chaque nombre est max ( nombre de
>
immédiatement à sa droite , nombre de<
immédiatement à sa gauche ) + 1 .Alternativement ...
Essayez-le en ligne!
la source
> <> ,
4038 octetsEssayez-le en ligne!
Une langue appropriée. Pour référence
><>
elle-même donne 2,1,2,1.Comment ça fonctionne:
la source
Python 3, 93 octets
Essayez-le en ligne!
Débrouillé:
la source
Haskell , 119 octets
Essayez-le en ligne!
Explication
L'idée ici est que nous avons des séries de
>
s ou de<
s, qui correspondent chacune à des plages ascendantes et descendantes. Nous utilisons doncgroup
pour diviser la chaîne en groupes de caractères consécutifs. Notre travail consiste ensuite à les assembler de la bonne manière.Lorsque nous avons,
<>
nous voulons assembler les deux listes en prenant la plus grande valeur finale par exempleest divisé
mappé à des plages
Ensuite, lorsque nous cousons, nous tombons
3
parce qu'il est plus petit (3
pas plus grand que7
).Lorsque nous avons,
><
nous faisons le contraire, nous laissons tomber la plus grande valeur.Le code réel y parvient en créant un opérateur
%
. La définition de%
est assez complexe, mais fondamentalement, elle se lit de gauche à droite en gardant une trace du nombre de caractères consécutifs identiques. Il fait cela dans la gauche avait la valeur de l'opérateur. Lorsque nous atteignons un endroit où les personnages changent, nous effectuons la couture comme je l'ai décrit.la source
(2%)
?%
avec2
comme premier argument.main
implémentation complète ?Rétine 0.8.2 , 36 octets
Essayez-le en ligne!Le lien inclut des cas de test. Explication:
Insérez
1
s avant, entre et après le<
s et>
s.Incrémentez de manière répétée les entiers jusqu'à ce que toutes les comparaisons soient satisfaites.
Additionnez les entiers et convertissez-les en décimal.
la source
Java 10,
198181 octetsEssayez-le en ligne.
Explication:
la source
Haskell , 87 octets
Essayez-le en ligne!
Un port de ma réponse Jelly.
la source
Stax , 21 octets
Exécuter et déboguer
Il fonctionne en codant la longueur de l'entrée, puis en concaténant les plages générées ensemble. Déballé, non golfé et commenté, il ressemble à ceci.
Exécutez celui-ci
la source
Perl 5
-p
, 53 octetsEssayez-le en ligne!
la source
Rouge , 185 octets
Après l'explication de user202729 ...
Essayez-le en ligne!
la source