Seu desafio é classificar uma string, mas, em vez da ordem alfabética normal (abc..xyz), você classificará as strings por um alfabeto especificado.
Você deve escrever um programa ou função que leva duas entradas: Um alfabeto A e uma seqüência S . Ambos conterão apenas letras minúsculas em inglês e ambos conterão pelo menos um caractere.
Você deve mover as letras em S para que a letra que aparece primeiro em A apareça primeiro e, em seguida, a letra que apareça em segundo em A , etc. Pode haver algumas letras em S que não apareçam em A , que devem ser deixadas no final e não se moveu em relação um ao outro.
Casos de teste:
A S Result
axd haxuizzxaxduxha aaaxxxxdhuizzuh
a xyz xyz
abc dcba abcd
il nmiuplliu iillnmupu
asdf qwerty qwerty
Menos bytes ganha!
Respostas:
05AB1E , 4 bytes
Experimente online!
Explicação
fonte
Σ²sk>
.R۠
trabalhe como esperado:). Às vezes, isso pode funcionar como umvy
loop menor . Boa resposta, cara.Python 3 ,
50 47 4644 bytes-3 bytes graças a ngn!
-1 byte graças a mypetlion
Experimente online!
Pega uma sequência como o alfabeto e uma lista de caracteres como uma sequência e classifica a lista no lugar.
Os
%27
garante que se o personagem não está no alfabeto, o índice voltou a coloca após o resto do alfabeto.fonte
-a[::-1].find(c)
->(a+c).find(c)
(a+c).find(c)
->a.find(c)%27
para salvar 1 byteHaskell, 42 bytes
Experimente online!
fonte
Perl 6 ,
5543 bytesTente
Tente
Expandido:
fonte
Haskell ,
4034 bytes-6 bytes enorme graças a Laikoni .
Experimente online!
A primeira linha é uma expressão que leva dois argumentos: S e A .
fonte
f=
porque funções anônimas são permitidas.(<>)
agora está no Prelude, então isso pode ser reduzidofoldr(\c->r(==c)<>r(/=c))
para 34 bytes: Experimente online!Stax , 6 bytes
Execute e depure
Isso classifica por um bloco que faz isso.
fonte
Python 2 , 38 bytes
a deve ser uma string, s uma lista de strings de comprimento 1. f classifica s no lugar.
Experimente online!
Versão alternativa, E / S de sequência, 48 bytes
Experimente online!
Como funciona
s.sort(None,a[::-1],1)
é uma abreviação des.sort(cmp=None,key=a[::-1],reverse=1)
.Dos documentos :
fonte
cmp
e crioukey
ereverse
apenas argumentos de palavra-chave, portanto, elelist.sort
usa apenas um argumento posicional.J , 5 bytes
Verbo diádico, levando o alfabeto à esquerda e a sequência a ser classificada à direita.
i.
localiza os indeces dos caracteres da string no alfabeto, o comprimento do alfabeto, se não for encontrado./:
classifica o agrument esquerdo de acordo com a ordem especificada no direito.]
o argumento certo (a string)Experimente online!
fonte
Python 2 ,
3550 bytesExperimente online!
Toma
a
es
como cordas; retorna uma lista de strings singelton.Nota: Ai! Ganhou 15 bytes para corrigir ...
fonte
K (ngn / k) , 9 bytes
Experimente online!
{
...}
é uma função com argumentosx
ey
x?y
localiza para cada elemento noy
índice de sua primeira ocorrência emx
; se um elemento não for encontrado emx
, seu índice será considerado0N
(-2 63 )-
nega todos os índices, exceto que mantém o0N
-s intacto, porque 2 63 ≡-2 63 (mod 2 64 )>
retorna uma permutação decrescente de classificaçãoy@
índicesy
com issofonte
Carvão vegetal , 13 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
fonte
Gelatina , 4 bytes
Um link diádico que aceita a sequência à esquerda e o alfabeto à direita (como lista de caracteres) e retorna o resultado (também como uma lista de caracteres).
Experimente online!
Quão?
fonte
APL (Dyalog Unicode) , 5 bytes SBCS
Função de prefixo tácito anônimo, tomando
[string,ordering]
como argumento.Experimente online!
…
/
Reduza pela seguinte função:…
⍨
Ou seja, a versão de argumentos reversos da seguinte função:⍋
classifique a corda certa de acordo com a ordem à esquerda (as letras ausentes vão no final)⌷
use isso para indexar em…⊃
o primeiro elemento do argumento (ou seja, a string)fonte
JavaScript (SpiderMonkey), 50 bytes
Recebe entrada na sintaxe de curry
(a)(s)
, em que a é uma string e s é uma matriz de caracteres. Retorna uma matriz de caracteres.Experimente online!
Quão?
Definimos a função auxiliar g () como:
que retorna:
Classificamos s [] calculando g (b) - g (c) para cada par de caracteres (b, c) passados para o retorno de chamada de sort () .
Como a implementação de sort () no SpiderMonkey é estável, todos os caracteres de s [] que não pertencem ao alfabeto são simplesmente movidos no final em ordem de aparência e permanecem inalterados quando comparados entre si.
JavaScript (ES6), 61 bytes
Recebe entrada na sintaxe de curry
(a)(s)
, onde a e s são matrizes de caracteres. Retorna uma string.Experimente online!
fonte
R ,
69 6258 bytesExperimente online!
Entrada e saída são vetores de caracteres individuais.
Explicação:
fonte
Flacidez Cerebral (BrainHack) , 118 bytes
Experimente online!
Entrada é a primeira sequência, seguida por um nulo, seguida pela segunda sequência. Uma versão que usa uma nova linha como separador adiciona 24 bytes:
Flacidez Cerebral , 142 bytes
Experimente online!
Explicação
fonte
C (gcc) , 97 bytes
Todos os espaços em branco (espaços e novas linhas) no código acima são apenas para facilitar a leitura e devem ser removidos.
O dicionário é passado
D
e tem comprimentod
, a string é passadaS
e tem comprimentos
.i
eo
deve ser omitido.Experimente online!
fonte
Pitão ,
95 bytesExperimente aqui!
fonte
Java 8, 98 bytes
Experimente online.
Explicação:
fonte
String.repeat(int)
método do Java 11 . Agradável! :).repeat(n)
parece promissor, no entanto. : DPerl 5 com
-pF
, 43 bytesExperimente online!
fonte
$_=<>;
de graça?@F
, mas não o adicionei ao cabeçalho! Eu vou fazer isso agora! Obrigado!Prolog (SWI) , 136 bytes
Experimente online! Exemplo de uso:
fonte
Limpo , 61 bytes
Experimente online!
Define a função
$ :: [Char] [Char] -> [Char]
.Sem surpresa, esta é literalmente a resposta Haskell de nimi, mas mais longa.
fonte
Geléia , 7 bytes
Experimente online!
fonte
APL + WIN, 12 bytes
Solicita a entrada na tela de S e A:
Experimente online! Cortesia de Dyalog Classic
fonte
PynTree , 13 bytes
Experimente online!
Resposta Python do porto de Jo King.
Explicação
fonte