Dada uma sequência como entrada, imprima uma nova sequência com cada letra pressionada para a direita pelo respectivo índice alfabético.
Todos sabemos que A é lento e Z é uma letra rápida. Isso significa que Z é deslocado para a direita em 25 espaços, A não é deslocado e B é deslocado em 1 espaço.
Seu programa precisa lidar apenas com letras maiúsculas de AZ e sem outros caracteres, sem espaços em branco, sem pontuação.
Observe que, se 2 ou mais letras caírem no mesmo espaço após a mudança, o caractere mais recente será usado. (Exemplo: BA
-> A
)
Exemplos
"AZ" -> "A Z"
"ABC" -> "A B C"
"ACE" -> "A C E"
"CBA" -> " A"
"HELLOWORLD" -> " E H DLL OLO R W"
Regras
- Isso é código-golfe , portanto o código mais curto em qualquer idioma, bytes, vence.
As brechas padrão são proibidas.
A entrada deve ser recebida como uma sequência.
- Você pode imprimir o resultado
stdout
ou retornar uma sequência. - Um único espaço em branco à direita e / ou nova linha é permitido.
- Você também pode usar letras minúsculas como entrada ou saída, mas use apenas ambos os casos.
Respostas:
Python 2 , 81 bytes
Experimente online!
fonte
MATL , 11 bytes
Experimente online! Ou verifique todos os casos de teste .
Explicação
A indexação MATL é baseada em 1. Este truque de golfe é usado aqui. Este outro não pode ser usado porque precisamos de uma string vazia, não de uma matriz numérica vazia.
Considere a entrada
'ACE'
como um exemplo. O conteúdo da pilha é mostrado de baixo para cima.fonte
(
: nice builtinǝ
? Ah, mas isso não parece vetorizar sobre o segundo / entradas terceiros0
é exibido0
como espaço.R ,
14013312974 bytesEconomizou uma tonelada de bytes portando uma abordagem de valor ASCII como todos os outros. Triste eu não pensei nisso antes :(
Experimente online!
resposta original, 129 bytes:
Experimente online!
gera uma lista muito longa
o
de espaços e iteras
, substituindo os valoreso
pelo valor correto e atualizandoF
a posição do caractere mais à direita. Em seguida, imprime os primeirosF
elementoso
sem separadores entre eles.fonte
05AB1E ,
2016 bytes-4 bytes graças a Emigna
Experimente online!
fonte
ð₄×svyAuykN+ǝ}ðÜ
pelo menos. Além disso, existe uma garantia de que a sequência de entrada deslocada não seja maior que 1000 caracteres? Caso contrário,g₂+ð×
deve funcionar.JavaScript (ES6), 81 bytes
De certa forma, parte da resposta incompleta de Rick Hitchcock, mas acabou sendo bastante diferente.
Coloca os caracteres em seu respectivo índice de uma matriz vazia e usa a dispersão da matriz (
[...a]
) para transformar os elementos ausentesundefined
, permitindomap
substituir elementos vazios por um espaço.Casos de teste
Mostrar snippet de código
fonte
Perl 5, 42 bytes
Código de 41 bytes + 1 para
-p
. Os\x1b
s no código são caracteres de escape literais.Confia nas seqüências de escape ANSI para posicionar o cursor e, portanto, não funciona no TIO.
Uso
fonte
-F
): Experimente online!Java (OpenJDK 8) ,
207191189183178 178174173170 bytesExperimente online!
fonte
Perl 5 , 41 + (
-F
) = 43 bytesExperimente online!
Apenas para @lynn
fonte
brainfuck , 127 bytes
Experimente online!
Explicação
fonte
Próton , 78 bytes
Experimente online!
69 bytes, portando a solução de Lynn:
x=>{t=[]i=65for k:x{t+=[' ']*26t[ord(k)-i]=k;i--}"".join(t).rstrip()}
fonte
Gelatina , 20 bytes
Experimente online!
fonte
Haskell ,
9088 bytesExperimente online!
fonte
Japonês , 23 bytes
Teste online!
Primeira tentativa, pode ser improvável ...
fonte
V
vez deU
: ethproductions.github.io/japt/...Wolfram Language (Mathematica) , 76 bytes
Leva uma lista de caracteres como entrada. Isso gera algumas mensagens de erro seguras para ignorar.
Incluí
Print
eCharacter
comando no rodapé do link TIO para facilitar o uso. (oCharacter
comando simplesmente converte uma string em uma lista de caracteres)Experimente online!
fonte
LetterNumber
é um built-in para encontrar a posição de uma letra no alfabeto? Caramba, isso é ridículo.J,
3731 bytes[`]`(' '#~(1+>./)@])}(i.@#+65-~a.&i.)
-6 bytes graças ao FrownyFrog
explicação
A coisa toda é um gancho:
O lado direito calcula os novos índices para todas as letras.
O lado esquerdo usa a forma gerúndio de Alterar
}
primeiro a criar uma série do número necessário de espaços:(' '#~(1+>./)@])
. E, em seguida, coloque cada letra da string original em seu índice apropriado na string all-space.Experimente online!
fonte
(i.@#+65-~a.&i.)
->(i.@#+65-~3&u:)
->(i.@#-65-3&u:)
->(#\-66-3&u:)
(]' '#~1+>./)
Haskell , 88 bytes
Experimente online!
fonte
Haskell, 88 bytes
Experimente online!
q
é a lista dos índices finais das letras da sequência de entrada (com um deslocamento de65
). Percorra todos os índices (começando em65
) e encontre todas as letras para ele, acrescentando um espaço. Pegue o último.fonte
C # (.NET Core) ,
11711084 bytesEconomizou 7 bytes graças ao Ayb4tu .
Tipo de retorno alterado de
string
parachar[]
para salvar 26 bytes.Experimente online!
fonte
t[i+((int)n[i]-65)]
parat[i+n[i]-65]
.char -> int
conversões estão implícitas.C # .NET,
89 bytes87 bytes-2 bytes graças a Lan H.
Experimente Online!
fonte
for
loop para -2 bytes.Kotlin,
207 bytes189 bytes187 bytes177 bytesSe o espaço em branco à esquerda permanecer, eu telefonaria em
trimEnd()
vez detrim()
.Desminificado:
Talvez o Kotlin não seja o melhor idioma para o código de golfe, mas gostei do desafio e queria me familiarizar mais com a biblioteca padrão do Kotlin.
fonte
q / kdb +, 37 bytes
Solução:
Exemplos:
Explicação:
Penso que é a mesma ideia que a solução J, calcule os índices corretos para a matriz de entrada e atribua-os a uma sequência vazia de comprimento correto:
fonte
Jq 1.5 , 91 bytes
Expandido
Experimente online!
fonte
Carvão , 16 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
fonte
APL (Dyalog) , 26 bytes
Prefixo anônimo lambda, que pega a sequência de entrada como argumento e retorna a sequência de saída. Supõe
⎕IO
( I ndex O rigin)0
, que é padrão em muitos sistemas.Experimente online!
{
...}
lambda anônima;⍵
representa o argumento≢⍵
registro do argumento⍳
do que muitos t ntegers (0… LengthOfArgument-1)(
…)+
Mais:⎕A⍳⍵
os índices do argumento na maiúsculas A lphabeti←
Strore emi
(para i ndices)⌈/
máximo (redução)1+
Adicione um''↑⍨
pegue tantos caracteres da string vazia, preenchendo os espaços conforme necessário⊢
rendimento que (serve para separari
de''
)⍵@i
alterar que, com as letras do argumento nos índicesi
fonte
SOGL V0.12 , 10 bytes
Experimente aqui!
Explicação:
fonte
Pitão ,
4438 bytesRiscado 44 ainda é 44 :(
Iniciante em Bloody Pyth.
Guardado 6 bytes graças a @Mr. Xcoder.
Experimente online!
Quão?
fonte
K*d+lz26Vlz K=XK-C@zN-65N@zN;.WqeHdPZK
.WqeKd K=PK;K
é substituído por.W
(enquanto funcional) e seus argumentos, é claro, eFNrZlz
pode ser substituídoVrZlz
, masrZ...
significaU...
eU
é gerado automaticamente porV
. AssimFNrZlz
tornaVlz
Lote,
418331 bytesFunciona apenas com letras maiúsculas e leva alguns segundos para seqüências mais longas.
Aprendi novos truques aqui, o caractere para conversão de valor ASCII usando
%=exitcodeAscii%
. Além disso,if defined
e "array" acessam usandocall
. Além disso, jogar golfe em quase 100 bytes era um bom treinamento de golfe em código de lote.Observe o espaço à direita em
set z=set
.fonte
Ruby , 68 bytes
Experimente online!
fonte
Conjunto IBM PC DOS 8088 ,
3433 bytesUngolfed (desmontado):
Este é um executável completo do PC DOS que pega a string de entrada da linha de comando e imprime a nova versão "mais rápida" na tela. Requer um mínimo de DOS 1.0 ... espero que você tenha pelo menos isso.
Resultado
fonte
PHP,
127123 bytesExperimente online
Tinha que consertar um bug que não geraria 'A' ...
fonte