Do outro lado do alfabeto
Neste desafio, você tem problemas para lembrar as letras do alfabeto. Para contornar isso, você sobe e desce o alfabeto até chegar à letra.
Como você deseja que seu código seja portátil, você o escreverá com blocos de letras. Você tem uma quantidade limitada de blocos de letras porque a maioria deles foi roubada; portanto, você precisa garantir que seu código seja o mais curto possível.
Exemplos
Os pares de entrada / saída são separados por uma linha em branco:
Ac
ABc
Ad
ABcd
fA
fedCBA
adB
abcdcB
Hello, World!
HGfefghijkllmno, WVUTSrqpopqrqponmlkjihgfed!
Desafio
Seu objetivo é encadear letras adjacentes com todas as letras intermediárias do alfabeto ( A-Za-z
) entre elas. Se a capitalização diferir, a capitalização deve ser transformada no meio. Se a capitalização não pode ser uniformemente transformada no meio, ela se desfaz após o meio. Se um personagem não é um caracter alfabético, nenhuma transformação deve ser feita.
Ganhando
Este é o código-golfe, pelo que o código mais curto em bytes vence!
-10% Bônus: se o seu código vincular dígitos
adB
deve se transformar emabcdCB
porque c está no meio de d e b.Respostas:
Pitão, 40 bytes
Experimente online.
fonte
Python 2,
303291288282276261253 bytesEsse é um algoritmo completamente diferente do de Hannes Karppila e, depois de muito golfe, consegui uma melhora substancial no comprimento. Eu acho que esse algoritmo também pode permitir um dos códigos mais curtos em outros idiomas, especialmente idiomas com loops do-while e funções de signum internas. Sugestões para melhorias adicionais são bem-vindas. (Algo me diz que todo o loop interno deve ser reescrito como uma compreensão da lista.)
fonte
JavaScript (ES6),
198197194 bytesUso
Explicação
fonte
\w
falhará com dígitos. Tente '09'a>b?a-b:b-a
... e existem outros truques 'padrão' para reduzir o javascript. Com o seu método de interpolação, você pode bater minha pontuação. Verifique as dicas neste siteJavaScript ES6, 168 (186-10%)
176 193Editar Modificado para obter o bônus de 10%
Teste a execução do trecho abaixo usando um navegador compatível com EcmaScript 6 (eu uso o FireFox)
fonte
Python 2, 349 bytes
É muito longo, mas pelo menos é o primeiro.
fonte