Dada una cadena como entrada, imprima una nueva cadena con cada letra empujada hacia la derecha por su índice alfabético respectivo.
Todos sabemos que A es lenta y Z es una letra rápida. Esto significa que Z se desplaza hacia la derecha 25 espacios, A no se desplaza en absoluto y B se desplaza 1 espacio.
Su programa solo tiene que manejar letras mayúsculas de AZ y no otros caracteres, espacios en blanco ni signos de puntuación.
Tenga en cuenta que si 2 o más letras caen en el mismo espacio después del cambio, se utilizará el último carácter. (Ejemplo: BA
-> A
)
Ejemplos
"AZ" -> "A Z"
"ABC" -> "A B C"
"ACE" -> "A C E"
"CBA" -> " A"
"HELLOWORLD" -> " E H DLL OLO R W"
Reglas
- Este es el código de golf , por lo que gana el código más corto en cualquier idioma.
Las lagunas estándar están prohibidas.
La entrada debe recibirse como una cadena.
- Puede imprimir el resultado
stdout
o devolver una cadena. - A solo se permite con espacios en blanco y / o salto de línea.
- También puede usar letras minúsculas como entrada o salida, pero solo use cualquier caso.
Respuestas:
Python 2 , 81 bytes
Pruébalo en línea!
fuente
MATL , 11 bytes
Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
La indexación de MATL está basada en 1. Este truco de golf se usa aquí. Este otro no se puede usar porque necesitamos una cadena vacía, no una matriz numérica vacía.
Considere la entrada
'ACE'
como un ejemplo. El contenido de la pila se muestra de abajo hacia arriba.fuente
(
: nice builtinǝ
? Ah, pero eso no parece vectorizarse en la segunda / tercera entrada0
sy se muestra0
como espacio.R ,
14013312974 bytesAhorró una tonelada de bytes portando un enfoque de valor ASCII como todos los demás. Triste no lo pensé antes :(
Pruébalo en línea!
respuesta original, 129 bytes:
Pruébalo en línea!
genera una lista
o
de espacios demasiado larga , luego iteras
, reemplaza los valoreso
con el valor correcto y actualizaF
la posición del carácter más a la derecha. Luego imprime los primerosF
elementoso
sin separadores entre ellos.fuente
05AB1E ,
2016 bytes-4 bytes gracias a Emigna
Pruébalo en línea!
fuente
ð₄×svyAuykN+ǝ}ðÜ
menos. Además, ¿hay una garantía de que la cadena de entrada desplazada no sea mayor de 1000 caracteres? Si no,g₂+ð×
debería funcionar.JavaScript (ES6), 81 bytes
Algo se basa en la respuesta incompleta de Rick Hitchcock, pero terminó siendo bastante diferente.
Coloca los caracteres en su índice respectivo de una matriz vacía, luego usa la distribución de matriz (
[...a]
) para convertir los elementos que faltanundefined
, permitiendomap
reemplazar los elementos vacíos con un espacio.Casos de prueba
Mostrar fragmento de código
fuente
Perl 5, 42 bytes
Código de 41 bytes + 1 para
-p
. Las\x1b
s en el código son caracteres de escape literales.Se basa en secuencias de escape ANSI para posicionar el cursor y, por lo tanto, no funciona en TIO.
Uso
fuente
-F
): ¡ Pruébelo en línea!Java (OpenJDK 8) ,
207191189183178174173170 bytesPruébalo en línea!
fuente
Perl 5 , 41 + (
-F
) = 43 bytesPruébalo en línea!
Solo para @lynn
fuente
brainfuck , 127 bytes
Pruébalo en línea!
Explicación
fuente
Protón , 78 bytes
Pruébalo en línea!
69 bytes portando la solución de Lynn:
x=>{t=[]i=65for k:x{t+=[' ']*26t[ord(k)-i]=k;i--}"".join(t).rstrip()}
fuente
Jalea , 20 bytes
Pruébalo en línea!
fuente
Haskell ,
9088 bytesPruébalo en línea!
fuente
Japt , 23 bytes
¡Pruébelo en línea!
Primer intento, puede ser mejorable ...
fuente
V
lugar deU
: ethproductions.github.io/japt/…Wolfram Language (Mathematica) , 76 bytes
Toma una lista de caracteres como entrada. Esto genera algunos mensajes de error que son seguros de ignorar.
Incluí
Print
yCharacter
comando en el pie de página del enlace TIO para facilitar su uso. (elCharacter
comando simplemente convierte una cadena en una lista de caracteres)Pruébalo en línea!
fuente
LetterNumber
Cuál es una función para encontrar la posición de una letra en el alfabeto? Santa mierda, eso es ridículo.J,
3731 bytes[`]`(' '#~(1+>./)@])}(i.@#+65-~a.&i.)
-6 bytes gracias a FrownyFrog
explicación
Todo es un gancho:
El lado derecho calcula los nuevos índices para todas las letras.
El lado izquierdo usa el gerundio de enmendar
}
primero en crear una cadena del número necesario de espacios:(' '#~(1+>./)@])
. Y luego colocar cada letra de la cadena original en su índice apropiado dentro de la cadena de todo el espacio.Pruébalo en línea!
fuente
(i.@#+65-~a.&i.)
->(i.@#+65-~3&u:)
->(i.@#-65-3&u:)
->(#\-66-3&u:)
(]' '#~1+>./)
Haskell , 88 bytes
Pruébalo en línea!
fuente
Haskell, 88 bytes
Pruébalo en línea!
q
es la lista de los índices finales de las letras de la cadena de entrada (con un desplazamiento de65
). Recorra todos los índices (comenzando en65
) y encuentre todas las letras para ello, anteponiendo un espacio. Toma el último.fuente
C # (.NET Core) ,
11711084 bytesGuardado 7 bytes gracias a Ayb4tu .
Se cambió el tipo de retorno de
string
achar[]
para guardar 26 bytes.Pruébalo en línea!
fuente
t[i+((int)n[i]-65)]
at[i+n[i]-65]
.char -> int
conversiones son implícitas.C # .NET,
89 bytes87 bytes-2 bytes gracias a Lan H.
Pruébalo en línea!
fuente
for
bucle de -2 bytes.Kotlin,
207 bytes189 bytes187 bytes177 bytesSi el espacio en blanco inicial permaneciera, simplemente llamaría en
trimEnd()
lugar detrim()
.No minificado:
Tal vez Kotlin no sea el mejor lenguaje para el golf de código, pero me gustó el desafío y quería familiarizarme más con la biblioteca estándar de Kotlin.
fuente
q / kdb +, 37 bytes
Solución:
Ejemplos:
Explicación:
Creo que esta es la misma idea que la solución J, calcule los índices correctos para la matriz de entrada y luego asígnelos a una cadena vacía de longitud correcta:
fuente
Jq 1.5 , 91 bytes
Expandido
Pruébalo en línea!
fuente
Carbón , 16 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
APL (Dyalog) , 26 bytes
Prefijo anónimo lambda que toma la cadena de entrada como argumento y devuelve la cadena de salida. Asume
⎕IO
( I ndex O rigin)0
, que es por defecto en muchos sistemas.Pruébalo en línea!
{
...}
lambda anónimo;⍵
representa el argumento≢⍵
cuenta del argumento⍳
que muchos dedos (0 ... LengthOfArgument-1)(
...)+
más:⎕A⍳⍵
los índices de la discusión en mayúscula Un alfabetoi←
Strore ini
(para i ndices)⌈/
máximo (reducción)1+
Agrega uno''↑⍨
tomar tantos caracteres de la cadena vacía, rellenando con espacios según sea necesario⊢
rendimiento que (sirve para separari
de''
)⍵@i
enmendar eso con las letras de argumento en losi
índicesfuente
SOGL V0.12 , 10 bytes
Pruébalo aquí!
Explicación:
fuente
Pyth ,
4438 bytesTachado 44 sigue siendo 44 :(
Bloody Pyth principiante.
Guardado 6 bytes gracias a @Mr. Xcoder
Pruébalo en línea!
¿Cómo?
fuente
K*d+lz26Vlz K=XK-C@zN-65N@zN;.WqeHdPZK
.WqeKd K=PK;K
se reemplaza por.W
(while funcional) y sus argumentos, por supuesto, yFNrZlz
se puede reemplazarVrZlz
, perorZ...
significaU...
, yU
se genera automáticamente porV
. Así seFNrZlz
convierteVlz
Lote,
418331 bytesFunciona solo con letras mayúsculas y tomará algunos segundos para cadenas más largas.
Aprendí nuevos trucos aquí, el personaje a la conversión de valor ASCII
%=exitcodeAscii%
. Además,if defined
y el acceso "matriz" mediantecall
. Además, el golf en casi 100 bytes fue un buen entrenamiento de golf por código de lote.Tenga en cuenta el espacio final en
set z=set
.fuente
Ruby , 68 bytes
Pruébalo en línea!
fuente
Ensamblaje IBM PC DOS 8088 ,
3433 bytesSin golf (sin montar):
Este es un ejecutable completo de PC DOS que toma la cadena de entrada de la línea de comando e imprime la nueva versión "más rápida" en la pantalla. Requiere un mínimo de DOS 1.0 ... espero que al menos tenga eso.
Salida
fuente
PHP,
127123 bytesPruébalo en línea
Tuve que arreglar un error que no mostraba 'A' ...
fuente