Un párrafo de texto tiene números y letras alfabéticas mezcladas. Su tarea es separar los números del lado izquierdo y las letras alfabéticas del lado derecho en el mismo orden de cada línea.
Reglas:
- Los números son enteros simples; así que no hay punto decimal, ni signos negativos / positivos.
- Los números pueden o no ser contiguos, pero cualquiera que sea el caso, deben empujarse hacia el lado izquierdo en el mismo orden.
- Los números pueden aparecer entre palabras.
- El texto contiene solo letras y números alfabéticos ASCII, junto con espacios, guiones bajos, comas y puntos.
- El que hace esto con un mínimo de pulsaciones de teclas (como las macros vim) o la menor cantidad de bytes en caso de secuencias de comandos es el ganador.
Texto de ejemplo:
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.
Rendimiento esperado:
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.
Respuestas:
Retina , 14 bytes
Pruébalo en línea!
Explicación
O
introduce una etapa de clasificación.%
le dice a Retina que aplique la transformación a cada línea por separado.$
le dice que ordene las coincidencias por el resultado de la sustitución especificada.La expresión regular en sí es la
\d|(.)
que coincide con un dígito o cualquier otra cosa que se captura en el grupo1
. Esto se sustituye con$#1
cuál es el número de capturas de grupo1
. Es decir, la clave de clasificación para los dígitos es0
y la clave de clasificación para todo lo demás es1
. Como la ordenación en Retina es estable, esto simplemente mueve los dígitos a la izquierda y todo lo demás a la derecha.fuente
05AB1E,
1410 bytesCódigo:
Explicación:
Entrada de ejemplo:
Salida de ejemplo:
Pruébalo en línea
fuente
Python 3, 64 bytes
¡Tres soluciones equivalentes! No puedo escoger
fuente
while 1:print(*sorted(input(),key=lambda x:-('/'<x<':')),sep='')
Perl, 17 bytes
Código de 16 bytes + 1 interruptor
Requiere
-p
.Uso
Alternativamente:
Requiere
-n
.Uso
fuente
Hoon ,
9283 bytes++lore
divide un cable de varias líneas en un(list cord)
, lo(trip +<)
convierte en una cinta.++skid
separa una lista en dos: un lado donde la función devuelve sí, un lado donde devuelve no. Nuestra función intenta analizar el carácter con++nud
(numérico) y verifica si se analiza por completo, y luego soldamos las dos listas nuevamente en una cinta.fuente
MATL ,
1312 bytesSale con un error (permitido por defecto), produciendo la salida correcta.
Pruébalo en línea!
Explicación
fuente
V, 12 bytes
V, es un lenguaje de golf basado en cadenas 2D sin terminar. Aunque no está terminado, este programa funciona a partir de commit 45 , que se publicó anoche, lo que lo convierte en una respuesta competitiva. (La mayoría de mis respuestas V anteriores no eran competitivas).
Tenga en cuenta que la nueva línea final es necesaria, aunque esto se debe a un error.
Pruébalo en línea!
Explicación:
¨Ä©¨ä©/²±
se expande en la expresión regular vim:que es un no dígito
(\D)
seguido de un dígito(\d)
, y cambiarlos.Como esto está lleno de caracteres unicode gruesos, aquí hay un hexdump reversible:
fuente
Javascript ES6, 40 bytes
a=>a.replace(/\D/g,'')+a.replace(/\d/g,'')
Intenté varias otras soluciones, pero no pude hacerlo más pequeño que esto.
Mi primer intento fue
a=>[...a.match(/\d/g),...a.match(/\D/g)].join``
pero eso es 5 bytes másPruébalo aquí
Mostrar fragmento de código
fuente
CJam,
9 91316 bytesNo hay
f$
...Esta versión de 13 bytes casi funciona:
fuente
PowerShell v2 +, 55 bytes
Debido a la necesidad de admitir entradas de varias líneas, tenemos que encapsular nuestras
-replace
declaraciones con un bucle y-split
en nuevas líneas. De lo contrario, básicamente equivalente a la solución de JavaScript .fuente
Pyth - 11 bytes
No me gusta mi prueba de agrupación. Toma entrada como lista de líneas, dime si eso no está bien.
Pruébelo en línea aquí .
fuente
Pyth,
1615 bytes1 byte gracias a @FryAmTheEggman .
Pruébalo en línea!
Entrada de muestra:
Salida de muestra:
Cómo funciona
fuente
U
porque los mapas automáticamente convierten enteros en rangos.Retina, 16 bytes
Estable tipo de burbuja.
Entrada de muestra:
Salida de muestra:
Pruébalo en línea!
fuente
C #, 59 bytes
Una función lambda simple de C # que usa regex.
Salida de muestra
fuente
C # (LINQ), 110 bytes
No es la solución más corta, de lejos, pero pensé que sería un buen uso de LINQ.
fuente
char.IsDigit
existía ...Factor 61
Es un enfoque ingenuo.
"\n"split
divide la cadena en la parte superior de la pila en líneas. Luego, para laeach
línea:[ digit? ] partition
divide cada línea en solo dígitos y no solo dígitos[ write ] bi@
genera ambos enl
imprime una nueva línea.PD:
Como palabra, 90 bytes (71 si reemplaza el nombre largo de factorish con 1 letra):
fuente
Pyth, 14 bytes
Pruébalo en línea!
Explicación:
La lógica de la solución es la misma que en la respuesta de Lynn .
fuente
Java 8,
13012686 bytes-4 bytes convirtiendo Java 7 a 8 y eliminando un
programa de conversión de caracteres no utilizados -40 bytes para funcionar y cambiar
[^\\d]
a\\D
Explicación:
Pruébalo aquí.
fuente
GNU Sed, 28
La puntuación incluye +1 para la
-r
opción de sed.Cambia repetidamente un carácter no numérico seguido de un carácter numérico hasta que no se realicen más sustituciones.
Lamentablemente, las expresiones regulares sed no tienen
\d
o\D
, por lo que deben escribirse a mano.Ideona
fuente
Octava,
3732 bytesfuente
Clojure, 113 bytes
Ordena los dígitos al comienzo de la línea.
fuente
Oracle SQL 11.2, 131 bytes
Las líneas en la cadena de entrada están separadas por '¤'. De esa manera, no es necesario crear una tabla para usar como entrada.
Consulta :
Sin golf
fuente
APL, 28 caracteres
fuente
Haskell, 60 bytes
Uso
fuente
Sed, 35 bytes
Esto hace una copia de la línea, elimina los dígitos de una copia y las letras de la otra, antes de volver a combinarlos.
fuente
Bash, 42 bytes
¡Tenga en cuenta que esta implementación recursiva genera un nuevo proceso para cada línea de entrada!
fuente
Japt v2 ,
1412 bytes-2 bytes gracias a ETHproductions
Ejecutarlo
fuente
Julia 0.6 , 77 bytes
Función anónima que toma una cadena e imprime la salida. Recorre los personajes, los agrega a los buffers izquierdo
l
o derechor
hasta que encuentra una nueva línea, luego imprime y vacía los buffers. Muchas posibles construcciones útiles comosort
,filter
y la indexación lógica (indexación con una matriz de valores booleanos) no funcionan en cadenas.Pruébalo en línea!
fuente
Vim, 30 pulsaciones de teclas
Grabe una acción de búsqueda y reemplazo que mueva los dígitos a la izquierda de los que no sean dígitos. Llame a la macro de forma recursiva hasta que el patrón no se encuentre una excepción (cuando no haya más dígitos a la derecha de los que no sean dígitos).
fuente
C (gcc) , 106 bytes
Pruébalo en línea!
fuente