Un paragraphe de texte est composé de chiffres et de lettres alphabétiques. Votre tâche consiste à séparer les chiffres du côté gauche et les lettres alphabétiques du côté droit dans le même ordre de chaque ligne.
Règles:
- Les nombres sont des entiers simples; donc pas de point décimal, ni de signe négatif / positif.
- Les nombres peuvent être contigus ou non, mais quel que soit le cas, ils doivent être poussés vers la gauche dans le même ordre.
- Des nombres peuvent apparaître entre les mots.
- Le texte ne contient que des lettres et des chiffres alphabétiques ASCII, ainsi que des espaces, des traits de soulignement, des virgules et des points.
- Celui qui le fait avec un minimum de touches (comme les macros vim) ou le moins d'octets en cas de script est le gagnant.
Exemple de texte:
A word can have any number of text like 433884,
but all the numb89ers has to be moved left side
but alph6abetical va9lues has to be pas46ted on right side.
The text might con4tain chara29cters s2huffled like hlep or dfeintino or even
meaningless1 words co43mbined togeth81er.
Production attendue:
433884A word can have any number of text like ,
89but all the numbers has to be moved left side
6946but alphabetical values has to be pasted on right side.
4292The text might contain characters shuffled like hlep or dfeintino or even
14381meaningless words combined together.
Réponses:
Rétine , 14 octets
Essayez-le en ligne!
Explication
O
introduit une étape de tri.%
indique à Retina d'appliquer séparément la transformation à chaque ligne.$
lui indique de trier les correspondances en fonction du résultat de la substitution spécifiée.Le regex lui-même est celui
\d|(.)
qui correspond soit à un chiffre, soit à tout ce qui est capturé en groupe1
. Ceci est remplacé par$#1
le nombre de captures de groupe1
. Autrement dit, la clé de tri des chiffres est0
et la clé de tri pour tout le reste est1
. Étant donné que le tri dans Retina est stable, cela déplace simplement les chiffres vers la gauche et tout le reste vers la droite.la source
05AB1E,
1410 octetsCode:
Explication:
Exemple d'entrée:
Exemple de sortie:
Essayez-le en ligne
la source
Python 3, 64 octets
Trois solutions équivalentes! Je ne peux pas choisir.
la source
while 1:print(*sorted(input(),key=lambda x:-('/'<x<':')),sep='')
Perl, 17 octets
Code 16 octets + 1 commutateur
Requiert
-p
.Usage
Alternativement:
Requiert
-n
.Usage
la source
Hoon ,
9283 octets++lore
divise un cordon multi-lignes en un(list cord)
, le(trip +<)
transforme en bande.++skid
sépare une liste en deux: un côté où la fonction renvoie oui, un côté où elle renvoie non. Notre fonction essaie d'analyser le caractère avec++nud
(numérique) et vérifie s'il analyse complètement, puis nous soudons les deux listes ensemble dans une bande.la source
MATL ,
1312 octetsQuitte avec une erreur (autorisée par défaut), produisant la sortie correcte.
Essayez-le en ligne!
Explication
la source
V, 12 octets
V, est un langage de golf inachevé basé sur des cordes 2D. Bien qu'il soit inachevé, ce programme fonctionne à partir du commit 45 , qui a été publié la nuit dernière, ce qui en fait une réponse concurrente. (La plupart de mes réponses V précédentes n'étaient pas concurrentes.)
Notez que la nouvelle ligne de fin est nécessaire, bien que cela soit dû à un bogue.
Essayez-le en ligne!
Explication:
¨Ä©¨ä©/²±
se développe dans le regex vim:qui est un non-chiffre
(\D)
suivi d'un chiffre(\d)
, et échangez-les.Puisqu'il est rempli de caractères unicode grossiers, voici un hexdump réversible:
la source
Javascript ES6, 40 octets
a=>a.replace(/\D/g,'')+a.replace(/\d/g,'')
J'ai essayé plusieurs autres solutions, mais je n'ai pas pu le réduire.
Mon premier essai a été
a=>[...a.match(/\d/g),...a.match(/\D/g)].join``
mais c'est 5 octets de plusEssayez-le ici
Afficher l'extrait de code
la source
CJam,
91316 octetsIl n'y a pas
f$
...Cette version de 13 octets fonctionne presque:
la source
PowerShell v2 +, 55 octets
En raison de la nécessité de prendre en charge la saisie sur plusieurs lignes, nous devons encapsuler nos
-replace
instructions avec une boucle et-split
sur des sauts de ligne. Sinon, fondamentalement équivalent à la solution JavaScript .la source
Pyth - 11 octets
Je n'aime pas mon test de regroupement. Prend la saisie comme liste de lignes, dites-moi si ce n'est pas ok.
Essayez-le en ligne ici .
la source
Pyth,
1615 octets1 octet grâce à @FryAmTheEggman .
Essayez-le en ligne!
Exemple d'entrée:
Exemple de sortie:
Comment ça fonctionne
la source
U
car les mappes convertissent automatiquement des entiers en plages.Rétine, 16 octets
Tri des bulles stable.
Exemple d'entrée:
Exemple de sortie:
Essayez-le en ligne!
la source
C #, 59 octets
Une simple fonction lambda C # utilisant regex.
Exemple de sortie
la source
C # (LINQ), 110 octets
Pas la solution la plus courte, de loin, mais je pensais que ce serait une bonne utilisation de LINQ.
la source
char.IsDigit
existait ...Facteur 61
C'est une approche naïve.
"\n"split
divise la chaîne en haut de la pile en lignes. Ensuite, pour laeach
ligne:[ digit? ] partition
divise chaque ligne en chiffres uniquement et non en chiffres uniquement[ write ] bi@
sort les deux etnl
imprime une nouvelle ligne.PS:
En tant que mot 90 octets (71 si vous remplacez le-long-factorish-name par 1 lettre):
la source
Pyth, 14 octets
Essayez-le en ligne!
Explication:
La logique de la solution est la même que dans la réponse de Lynn .
la source
Java 8,
13012686 octets-4 octets convertissant Java 7 en 8 et supprimant un caractère inutilisé
-40 octets programme de conversion pour fonctionner et passer
[^\\d]
à\\D
Explication:
Essayez-le ici.
la source
GNU Sed, 28
Le score inclut +1 pour l'
-r
option de sed.Bascule à plusieurs reprises un caractère non numérique suivi d'un caractère numérique jusqu'à ce qu'aucune substitution ne soit effectuée.
Malheureusement, les expressions rationnelles sed n'ont pas
\d
ou\D
, donc elles doivent être écrites à la main.Ideone.
la source
Octave,
3732 octetsla source
Clojure, 113 octets
Trie les chiffres au début de la ligne.
la source
Oracle SQL 11.2, 131 octets
Les lignes de la chaîne d'entrée sont séparées par '¤'. De cette façon, il n'est pas nécessaire de créer une table à utiliser comme entrée.
Requete :
Non golfé
la source
APL, 28 caractères
la source
Haskell, 60 octets
Usage
la source
Sed, 35 octets
Cela crée une copie de la ligne, supprime les chiffres d'une copie et les lettres de l'autre, avant de les recombiner.
la source
Bash, 42 octets
Soyez averti que cette implémentation récursive crée un nouveau processus pour chaque ligne d'entrée!
la source
Japt v2 ,
1412 octets-2 octets grâce à ETHproductions
Exécuter
la source
Julia 0,6 , 77 octets
Fonction anonyme prenant une chaîne et imprimant la sortie. Boucle les caractères, les ajoute aux tampons gauche
l
ou droitr
jusqu'à ce qu'il trouve une nouvelle ligne, puis il imprime et vide les tampons. Beaucoup de constructions utiles potentielles commesort
,filter
et l'indexation logique (indexation avec un tableau de valeurs booléennes) ne fonctionnent pas sur les chaînes.Essayez-le en ligne!
la source
Vim, 30 frappes
Enregistrez une action de recherche et de remplacement qui déplace les chiffres vers la gauche des non-chiffres. Appelez la macro de manière récursive jusqu'à ce qu'une exception soit levée par le motif non trouvé (lorsqu'il n'y a plus de chiffres à droite des non-chiffres).
la source
C (gcc) , 106 octets
Essayez-le en ligne!
la source