Su desafío es ordenar una cadena, pero en lugar de hacerlo por el orden alfabético normal (abc..xyz), ordenará las cadenas por un alfabeto específico.
Usted debe escribir un programa o función que toma dos entradas: Un alfabeto A y una cadena S . Ambos solo contendrán letras minúsculas en inglés, y ambos contendrán al menos un carácter.
Debe mover las letras en S para que la letra que aparece primero en A aparezca primero, luego la letra que aparezca segunda en A , etc. Puede haber algunas letras en S que no aparecen en A , estas deben dejarse al final y No se mueven uno con respecto al otro.
Casos de prueba:
A S Result
axd haxuizzxaxduxha aaaxxxxdhuizzuh
a xyz xyz
abc dcba abcd
il nmiuplliu iillnmupu
asdf qwerty qwerty
¡Pocos bytes ganan!
Respuestas:
05AB1E , 4 bytes
Pruébalo en línea!
Explicación
fuente
Σ²sk>
.R۠
trabajar como se esperaba :). A veces eso puede funcionar como unvy
bucle más pequeño . Buena respuesta hombre.Python 3 ,
50 47 4644 bytes-3 bytes gracias a ngn!
-1 byte gracias a mypetlion
Pruébalo en línea!
Toma una cadena como el alfabeto y una lista de caracteres como la cadena y ordena la lista en su lugar.
Esto
%27
garantiza que si el carácter no está en el alfabeto, el índice devuelto lo coloca después del resto del alfabeto.fuente
-a[::-1].find(c)
->(a+c).find(c)
(a+c).find(c)
->a.find(c)%27
para guardar 1 byteHaskell, 42 bytes
Pruébalo en línea!
fuente
Perl 6 ,
5543 bytesIntentalo
Intentalo
Expandido:
fuente
Haskell ,
4034 bytes-6 bytes enormes gracias a Laikoni .
Pruébalo en línea!
La primera línea es una expresión que toma dos argumentos: S y A .
fuente
f=
porque se permiten funciones anónimas.(<>)
ahora está en Preludio, por lo que esto se puede acortar afoldr(\c->r(==c)<>r(/=c))
34 bytes: ¡ Pruébelo en línea!Stax , 6 bytes
Ejecutar y depurarlo
Esto ordena por un bloque que hace esto.
fuente
Python 2 , 38 bytes
a debe ser una cadena, s una lista de cadenas de longitud 1. f ordena s en su lugar.
Pruébalo en línea!
Versión alternativa, cadena de E / S, 48 bytes
Pruébalo en línea!
Cómo funciona
s.sort(None,a[::-1],1)
es la abreviaturas.sort(cmp=None,key=a[::-1],reverse=1)
.De los documentos :
fuente
cmp
y hechokey
yreverse
argumentos de solo palabras clave, por lo quelist.sort
solo toma un argumento posicional.J , 5 bytes
Verbo diádico, tomando el alfabeto a su izquierda y la cuerda a clasificar a la derecha.
i.
encuentra las indecesiones de los caracteres de la cadena en el alfabeto, la longitud del alfabeto si no se encuentra./:
ordena su grupo izquierdo de acuerdo con el orden especificado en el derecho.]
el argumento correcto (la cadena)Pruébalo en línea!
fuente
Python 2 ,
3550 bytesPruébalo en línea!
Toma
a
ys
como cuerdas; devuelve una lista de cadenas de singelton.Nota: ¡Ay! Ganó 15 bytes para arreglar ...
fuente
K (ngn / k) , 9 bytes
Pruébalo en línea!
{
...}
es una función con argumentosx
yy
x?y
encuentra para cada elemento eny
el índice de su primera aparición enx
; si no se encuentra un elementox
, se considera su índice0N
(-2 63 )-
niega todos los índices excepto que mantiene el0N
-s intacto, porque 2 63 2-2 63 (mod 2 64 )>
devuelve una permutación de tipo descendentey@
índicesy
con esofuente
Carbón , 13 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
Jalea , 4 bytes
Un enlace diádico que acepta la cadena a la izquierda y el alfabeto a la derecha (como listas de caracteres) y devuelve el resultado (también como una lista de caracteres).
Pruébalo en línea!
¿Cómo?
fuente
APL (Dyalog Unicode) , SBCS de 5 bytes
Función de prefijo tácito anónimo, tomando
[string,ordering]
como argumento.Pruébalo en línea!
...
/
Reducir con la siguiente función:... a
⍨
saber, la versión de argumentos invertidos de la siguiente función:⍋
califique la cadena derecha de acuerdo con el orden izquierdo (las letras que faltan van al final)⌷
usar eso para indexar en ...⊃
el primer elemento del argumento (es decir, la cadena)fuente
JavaScript (SpiderMonkey), 50 bytes
Toma entrada en la sintaxis de curry
(a)(s)
, donde a es una cadena y s es una matriz de caracteres. Devuelve una matriz de caracteres.Pruébalo en línea!
¿Cómo?
Definimos la función auxiliar g () como:
que devuelve:
Ordenamos s [] calculando g (b) - g (c) para cada par de caracteres (b, c) pasados a la devolución de llamada de sort () .
Debido a que la implementación de sort () en SpiderMonkey es estable, todos los caracteres de s [] que no pertenecen al alfabeto simplemente se mueven al final en orden de aparición y se dejan sin cambios cuando se comparan entre sí.
JavaScript (ES6), 61 bytes
Toma entrada en la sintaxis de curry
(a)(s)
, donde a y s son matrices de caracteres. Devuelve una cadena.Pruébalo en línea!
fuente
R ,
69 6258 bytesPruébalo en línea!
La entrada y la salida son vectores de caracteres individuales.
Explicación:
fuente
Brain-Flak (BrainHack) , 118 bytes
Pruébalo en línea!
La entrada es la primera cadena, seguida de un valor nulo, seguido de la segunda cadena. Una versión que utiliza una nueva línea como separador agrega 24 bytes:
Brain-Flak , 142 bytes
Pruébalo en línea!
Explicación
fuente
C (gcc) , 97 bytes
Todos los espacios en blanco (espacios y líneas nuevas) en el código anterior son solo para facilitar la lectura y deben eliminarse.
El diccionario se pasa
D
y tiene longitudd
, la cadena se pasaS
y tiene longituds
.i
yo
debe ser omitidoPruébalo en línea!
fuente
Pyth ,
95 bytesPruébalo aquí!
fuente
Java 8, 98 bytes
Pruébalo en línea.
Explicación:
fuente
String.repeat(int)
método de Java 11 . ¡Agradable! :).repeat(n)
embargo, eso parece prometedor. : DPerl 5 con
-pF
43 bytesPruébalo en línea!
fuente
$_=<>;
gratis?@F
, ¡pero no lo agregué al encabezado! ¡Lo haré ahora! ¡Gracias!Prólogo (SWI) , 136 bytes
Pruébalo en línea! Ejemplo de uso:
fuente
Limpiar , 61 bytes
Pruébalo en línea!
Define la función
$ :: [Char] [Char] -> [Char]
.Como era de esperar, esta es literalmente la respuesta Haskell de nimi, pero más larga.
fuente
Jalea , 7 bytes
Pruébalo en línea!
fuente
APL + WIN, 12 bytes
Solicita la entrada de pantalla de S y luego A:
Pruébalo en línea! Cortesía de Dyalog Classic.
fuente
PynTree , 13 bytes
Pruébalo en línea!
Port of Jo King's Python answer.
Explicación
fuente