Ce problème concerne la séparation d'une chaîne représentant un identifiant de produit en trois composants.
- La première partie se compose de lettres supérieures et inférieures de longueur arbitraire qui représentent l'entrepôt.
- La deuxième partie est constituée de chiffres qui représentent le numéro de produit. Cette partie est également de longueur arbitraire.
- La dernière partie est qualificative en termes de taille et de couleurs, et cette partie continue jusqu'à la fin de la chaîne. Les qualificatifs sont garantis pour commencer par une majuscule et se composent de caractères alphanumériques.
Chaque partie doit être imprimée clairement séparée. Il est garanti que chaque pièce n'est pas vide.
Le gagnant est celui qui utilise le moins d'octets pour résoudre ce problème.
Exemple:
Entrée: UK7898S14
Sortie:
UK
7898
S14
Ici, le Royaume-Uni est le Royaume-Uni, 7898 est le code produit et S14 est la taille 14.
Exemple 2:
Entrée: cphDK1234CYELLOWS14QGOOD
Sortie:
cphDK
1234
CYELLOWS14QGOOD
Ici cphDK est Copenhague, Danemark, 1234 est le code produit, CYELLOWS14QGOOD représente la couleur jaune, la taille 14 et la bonne qualité.
Réponses:
Perl, 12 octets
11 octets de code + 1 octet pour l'
-p
indicateur.Pour l'exécuter:
la source
APL, 18
Fonctionne en recherchant les 2 premiers points où il y a un changement de caractère en chiffre ou vice-versa, et en les utilisant pour diviser la chaîne.
la source
Rétine ,
2814108 octets4 octets enregistrés grâce à Dom Hastings .
Enregistré 2 octets grâce à Martin Ender .
Essayez-le en ligne!
la source
Haskell, 36 octets (pas d'expression régulière)
Cela donne le résultat dans le format
("UK",("7898","S14"))
. L'idée est de diviser au premier chiffre, puis de diviser le reste au premier non-chiffre. Essayez-le sur Ideone .la source
JavaScript,
3836 octetsExemple
Afficher l'extrait de code
la source
JavaScript (ES6),
2826 octetsSauvegardé 2 octets grâce à @Grax
Exemples
Afficher l'extrait de code
la source
s=>s.replace(/\d+/,` $& `)
Gema,
1712 caractères(L'astuce de ne pas manipuler le code pays explicitement emprunté sans vergogne à la solution Perl de Dada . Une appréciation doit y être exprimée.)
Exemple d'exécution:
la source
Python 2, 40 octets
Je ne connais pas beaucoup Regex, mais heureusement, ce problème est assez simple :) Sépare la chaîne d'entrée dans une liste de longueur 3 qui contient chaque partie.
la source
05AB1E ,
393716 octetsBeaucoup d'octets enregistrés grâce à Emigna.
Il utilise l'encodage CP-1252.
Essayez-le en ligne!
(Ceci est mon premier post ici!)
la source
.páà¬
pour obtenir la première partie, mais cela ne semble pas aider pour le reste à première vue.JavaScript (ES6), 36 octets
Exemples
Afficher l'extrait de code
la source
Java 7,
200185174 174167 octetsCode non testé et testé:
Essayez-le ici.
Production:
la source
C #,
191177 octetsGolfé:
Non golfé:
EDIT1: @Link Ng a enregistré 14 octets.
la source
PHP, 48 octets
Avec son
$limit
paramètre et son utilité fantastique\K
, ilpreg_split()
est parfait pour ce défi.la source
MATLAB,
8173 octetsFonction qui accepte une chaîne et renvoie un tableau de cellules de trois chaînes. Testé dans la version R20105b.
Exemple d'utilisation:
Explication
L'expression régulière
(?<=^\D+)\d+')
correspond à un groupe de chiffres précédé de non-chiffres depuis le début de la chaîne; ces derniers ne font pas partie du match.La quatrième sortie de
regexp
est le'match'
; et la septième sortie correspond aux'split'
deux parties de la chaîne avant et après la correspondance.la source
Rubis, 28 octets
Cela entoure le premier groupe de chiffres avec des retours à la ligne.
la source
jq, 47 caractères
(Code de 43 caractères + options de ligne de commande de 4 caractères.)
(Encore une fois, la vieille histoire: assez élégante au début, puis devient douloureusement verbeuse.)
Exemple d'exécution:
Test en ligne (le passage
-r
par l'URL n'est pas pris en charge - vérifiez vous-même la sortie brute.)la source
PHP,
61 59 5655 octetsCela génère également le code initial:
Éditer
Merci à @manatwork d'avoir enregistré quelques octets pour moi
Merci à @ RomanGräf pour encore quelques octets enregistrés
la source
[\d]
? : o\d
est suffisant.[a-z]
par\D
?[a-z]
, lei
drapeau n'est plus nécessaire non plus.JavaScript sans regex,
848179 octetsp=>{for(i=n=o='';i<p.length;){if(n==isNaN(c=p[i++])){o+=' ';n++}o+=c}return o}
la source
o=n=i=''
.isNaN(c=p[i++])
.p=>{for(i=n=o=0;i<p.length;){c=p[i++];if(n++==c<59){o+=' '}o+=c}return o}
''
car le o, auquel le résultat sera concaténé. Mais malheureusement, votre code ne fonctionne pas pour moi, n doit être incrémenté conditionnellement.p=>{for(i=n=0,o='';i<p.length;){c=p[i++];if(n==c<59){o+=' ';n++}o+=c}return o}
Mathematica, 39 octets
Fonction anonyme. Prend une chaîne en entrée et renvoie une liste de chaînes en sortie.
la source
Raquette 274 octets
Non golfé:
Essai:
Production:
la source
R,
6352 octetsEdit: sauvé un tas d'octets grâce à @JDL
Prend l'entrée de stdin et imprime vers stdout:
Exemple de sortie:
la source
gsub (...,"\\1 \\2 \\3")
plus efficace?gsub("([A-Za-z]+)([0-9]+)(.+)","\\1 \\2 \\3",scan())
, bien que le premier argument puisse probablement être exprimé comme quelque chose de plus petit que cela ..."\\1 \\2 \\3"
remplacement. A également mis à jour un peu le modèle d'expression régulière et l'utiliserignore.case = TRUE
.()
supports.Gelée , 14 octets
TryItOnline!
Comment?
la source
C, 107 octets
Appeler avec:
la source
Python 2,
1039488 octetsSolution sans utiliser regex
Extrait simplement les nombres du milieu, puis tranche l'entrée en utilisant le nombre comme index. Nécessite des guillemets autour de l'entrée mais je n'ai vu nulle part que les guillemets sont interdits.
-9 en divisant a sur le nombre du milieu, puis imprimez les composants avec b au milieu
-6 Merci à @Shebang
Cas de test
la source
b!="" -> b>""
etc=a.split(b) -> c,d=a.split(b) ... print c[0],b,c[1] -> print c,b,d
enregistre 5 octets.elif b:
;)C #, 74 octets
Remplacez le premier ensemble de chiffres par un retour chariot, un ensemble de chiffres et un autre retour chariot, comme Johan Karlsson l'a fait pour JavaScript.
la source