O desafio é criar um programa que classifique uma lista de palavras, apenas que as palavras precisem estar na ordem de um determinado alfabeto aleatório.
Seu programa aceitará uma sequência de palavras separadas por vírgula e um novo alfabeto.
Seu programa produzirá cada palavra da mesma maneira na nova ordem classificada.
Exemplo:
Entrada:
home,oval,cat,egg,network,green bcdfghijklmnpqrstvwxzaeiouy
Resultado:
cat,green,home,network,egg,oval
Este é um código de golfe , então o vencedor é a pessoa com o programa mais curto.
Este é o meu primeiro desafio, portanto, qualquer melhoria na pergunta / desafio é apreciada.
Sort by custom alphabet
algo mais criativo?Respostas:
CJam,
261917 bytesExperimente online.
Caso de teste
Como funciona
fonte
Bash + coreutils, 37 bytes
Resultado:
fonte
Pitão , 19 caracteres
Teste:
Explicação:
Essencialmente, ele classifica os pedaços, com uma chave da lista de índices dos caracteres na sequência, e os une por vírgulas. Os negócios de reversão são mais curtos do que dividir a corda novamente.
fonte
j\,_omx_zdNchczd\,
Ruby,
5350 bytesEstou usando o Ruby
tr
para substituir o alfabeto personalizadoa-z
antes de classificar. A entrada é via argumento da linha de comando.fonte
$><<
para imprimir na tela (poderá remover o espaço). Você pode cortar outros dois bytes atribuindo$*
variáveis assim:a,b=$*
e usando em#sort_by
vez de#sort_by!
.*$*
(o que eu tinha no começo e que tem o mesmo comprimento).Python, 131
Deve haver muito espaço para melhorias.
fonte
a.find(c)
diretamente.JavaScript (E6) 102
119Classifique com uma função de mapeamento 'M' com base no alfabeto na variável 'a'
Com E / S usando pop-up (prompt + alerta)
Como uma função (testável) com 1 parâmetro de sequência, retornando uma matriz de sequências (92)
Teste no console do FireFox / FireBug
Resultado
fonte
(M(a)>M(b))-(M(a)<M(b))
M=w=>[...a].indexOf(w)
? Infelizmente não posso testá-lo agora.Clojure, 115 bytes
Uau, isso começou bem,
(sort-by(fn[w](mapv(zipmap(sort %2)%2)w)))
mas então percebivec
que não são classificados da mesma maneira que as strings, e intercalar essas vírgulas também requer uma quantidade significativa de código.fonte