Défi
Mark est un étudiant qui reçoit ses N
notes de manière concaténée sur une seule ligne.
L'enjeu est de séparer ses marques, sachant que chaque marque ne peut être que 0
ou 1
ou 2
ou 3
ou 4
ou 5
ou 6
ou 7
ou 8
ou 9
ou 10
.
Contribution
N
nombre naturel et une ligne.
Production
Un ensemble de nombres naturels.
Exemple
N, One line------------------> Set of marks
3, '843'---------------------> [8, 4, 3]
1, '0'-----------------------> [0]
2, '1010'--------------------> [10,10]
3, '1010'--------------------> [1,0,10] or [10,1,0]
4, '1010'--------------------> [1,0,1,0]
9, '23104441070'-------------> [2, 3, 10, 4, 4, 4, 10, 7, 0]
12,'499102102121103'---------> [4, 9, 9, 10, 2, 10, 2, 1, 2, 1, 10, 3]
5, '71061'-------------------> [7, 1, 0, 6, 1]
11,'476565010684'------------> [4, 7, 6, 5, 6, 5, 0, 10, 6, 8, 4]
4, '1306'--------------------> [1, 3, 0, 6]
9, '51026221084'-------------> [5, 10, 2, 6, 2, 2, 10, 8, 4]
14,'851089085685524'---------> [8, 5, 10, 8, 9, 0, 8, 5, 6, 8, 5, 5, 2, 4]
11,'110840867780'------------> [1, 10, 8, 4, 0, 8, 6, 7, 7, 8, 0]
9, '4359893510'--------------> [4, 3, 5, 9, 8, 9, 3, 5, 10]
7, '99153710'----------------> [9, 9, 1, 5, 3, 7, 10]
14,'886171092313495'---------> [8, 8, 6, 1, 7, 10, 9, 2, 3, 1, 3, 4, 9, 5]
2, '44'----------------------> [4, 4]
4, '9386'--------------------> [9, 3, 8, 6]
Règles
- Lorsque plusieurs sorties sont possibles, ne donnez qu'une seule sortie.
- Seule la marque de valeur
10
est sur deux décimales, les autres sont sur une décimale. - L'entrée et la sortie peuvent être données dans n'importe quel format pratique
- Pas besoin de gérer une entrée invalide
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- Si possible, veuillez inclure un lien vers un environnement de test en ligne afin que d'autres personnes puissent essayer votre code!
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) gagne.
code-golf
string
array-manipulation
mdahmoune
la source
la source
n, 'string'
de code Python que j'ai utilisé pour obtenir les paires à partir du bloc de texte d'exemple copypasté:spl = [item.split('-')[0] for item in text.split('\n')]
Réponses:
Brachylog ,
2321 octets-2 octets grâce à Fatalize
Essayez-le en ligne!
L'entrée est une paire
[Line, N]
.Ceci est mon premier programme Brachylog, donc il y a probablement beaucoup de place pour l'amélioration.
Il est très lent lorsque la longueur de la ligne> 7.
Explication:
(*)
ịṫ?
vérifie qu'il n'y a pas de zéros non significatifs. Il convertit la chaîne en entier, puis revient en chaîne et la compare à la chaîne d'origine.la source
ị
et pour le premier contrôle zéro:h~c.{ℕ≤10}ᵛ&t~l
. Cela est probablement plus lent, car la déconcaténation sur les entiers doit fonctionner même pour les entiers inconnus par le biais de contraintes, ce qui la rend inefficace.h
ett
pour obtenir le premier / dernier élément est plus efficace que l'utilisation∋
des deux (ce qui, dans la plupart des programmes, ne fonctionnera même pas)).Perl 6 , 25 octets
Essayez-le en ligne!
Bloc de code anonyme qui prend un nombre et une chaîne et renvoie en tant qu'objet Match.
Explication:
la source
Python 3 , 47 octets
Essayez-le en ligne!
Prend la "une ligne" comme un bytestring avec des octets bruts
\x00 - \x09
. Si ce n'est pas acceptable:Python 3 , 56 octets
Essayez-le en ligne!
Prend "une ligne" comme bytestring.
la source
V ,
17, 12 octetsEssayez-le en ligne!
J'étais content avec 17 octets, mais 05AB1E est venu avec 13, et je ne pouvais pas laisser un défi sans réponse. :RÉ
Hexdump:
Solution alternative:
Malheureusement, cela remplace
10
par1 0
la source
Rubis , 57 octets
Essayez-le en ligne!
Cela peut ne pas être l'approche la plus golfique, mais cela ressemble à une idée amusante de remplacer temporairement
10
un hexA
, qui est d'ailleurs une note élevée (si l'on considère le système de classement AF :))la source
Haskell , 68 octets
Essayez-le en ligne!
Goulûment, prenez 10 secondes tant qu'il reste plus de chiffres que de marques.
la source
JavaScript,
5752 octetsEssayez-le en ligne
la source
Python 3 ,
71 6859 octetsvers le bas encore 9 octets grâce à ovs.
Essayez-le en ligne!
J'essayais initialement de l'utiliser de
str.partition()
manière récursive, mais l'utilisationreplace
m'a frappé au visage peu de temps après. Quelqu'un peut-il améliorer cela?En outre, voici un lien TIO que j'ai utilisé pour transformer les cas de test en quelque chose de plus copiable / collable
la source
: [c
et'x' else
et10 for
<number>e
,<letter><number>
,f'
.lambda n,s:[int(c,11)for c in s.replace('10','a',len(s)-n)]
.Haskell , 98 octets
Essayez-le en ligne ou testez tout!
Explication
La fonction
s
effectue toutes les divisions possibles, par exemple:"1010"
devient[[1,0,1,0],[10,1,0],[1,0,10],[10,10]]
, notez comment les divisions les plus longues finissent au début (car1:0:y
vient avant10:y
).En gardant cela à l'esprit, nous pouvons prendre toutes ces valeurs et filtrer les
y
s là oùy == take n y
cela conserve également les divisions plus courtes que nécessaire. Par exemple avec4
nous laissons la liste la même[[1,0,1,0],[10,1,0],[1,0,10],[10,10]]
.Maintenant, nous pouvons simplement obtenir le premier élément de cette liste, car les entrées seront toujours valides (par exemple
5!"1010"
, donnerait[1,0,1,0]
aussi, mais nous n'avons pas besoin de le gérer).Remarque: j'ai en quelque sorte mal compté ..
y==take n y
est de la même longueur quelength y==n
: Sla source
Perl 5
-plF
, 39 octetsEssayez-le en ligne!
la source
Nettoyer , 128 octets
Essayez-le en ligne!
la source
05AB1E , 13 octets
Essayez-le en ligne! ou comme suite de tests
Explication
la source
JavaScript (nœud Babel) ,
70 6959 octetsPrend l'entrée comme
(n)(line)
.Essayez-le en ligne!
Commenté
JavaScript (ES6),
6459 octets5 octets enregistrés grâce à @ guest271314
Prend l'entrée comme
(n)(line)
.Essayez-le en ligne!
Commenté
la source
s.match()
renvoie un tableau de chaînes mais a"10"
peut être divisé en[1,0]
(2 entiers) dans la fonction de rappel deflatMap()
.eval(`[${s}]`.replace('1,0',10))
Java (OpenJDK 8) , 78 octets
Un joli one-liner utilisant l'API streams.
Essayez-le en ligne!
Comment ça marche
la source
R , 63 octets
Alors que la longueur de la chaîne est supérieure à
n
, remplacez les 10 suivants par un":"
(le caractère ASCII après 9). Puis divisez-vous en nombres en prenant la valeur ASCII de chaque caractère de la chaîne.Essayez-le en ligne!
la source
Rouge , 91 octets
Essayez-le en ligne!
la source
Gelée , 18 octets
Essayez-le en ligne!
la source