Haga un programa que tome la palabra que ingresó y agregue esa palabra al reverso de sí misma menos su primera letra, luego repita hasta que todas las letras hayan desaparecido. Por ejemplo, catse convertiría catatty hellose volvería helloellolloloo.
Ingrese
cualquiera de las 26 letras del alfabeto inglés. Puede haber varias palabras separadas por espacios, y el cambio debe aplicarse a cada palabra.
Salida
La (s) palabra (s) ingresada (s), con cada palabra colocada después de sí misma con su primera letra faltante, y luego con su segunda letra faltante, y así sucesivamente hasta que no haya más letras para agregar.
Más ejemplos:
ill eel salidas illlll eelell
laser bat salidas laserasersererr batatt
darth vader salidas dartharthrththh vaderaderdererr
Este es el código de golf, por lo que gana el código más corto.
Aclaración:
puede tratar la entrada o salida como una lista. Puede separar palabras usando nueva línea en lugar de espacio. Puede agregar un espacio final a la entrada.

1.Actualice la especificación con las nuevas asignaciones (E / S de matriz, espacio final, etc.)2.Informe las soluciones existentes en caso de que alguna pueda ahorrar bytes al aprovecharlas.Respuestas:
Japt
-m,63 bytesEntrada y salida son matrices de palabras.
Intentalo
Explicación
fuente
£dos bytes en UTF-8?brainfuck ,
6056 bytesPruébalo en línea!
Requiere un espacio final e imprime un espacio inicial. Ambos podrían ser evitados, pero eso termina en 112 bytes .
Explicación
fuente
Haskell,
3621 bytesPruébalo en línea!
Editar: -15 bytes, debido al nuevo formato IO (lista de palabras en lugar de palabras separadas por espacios)
fuente
scanr (:) ""contails.import Data.Listque agregue 17 bytes a la puntuación.Perl
-p,362523 bytesPruébalo en línea!
Este es un registro único. Primero, coincide con todos los límites de palabras o caracteres que no son espacios:
Tenga en cuenta que cada una de estas coincidencias debe reemplazarse con el resto de la palabra:
Podemos lograr esto con la variable especial
$', que almacena la parte de la cadena después de la coincidencia. Sin embargo, debemos aplicarle el registro anidados/ .*//, que elimina todo lo que haya pasado el primer espacio$', para eliminar las palabras restantes en la entrada.Gracias a @nwellnhof por 2 bytes.
fuente
[^ ]con\S.Python 3 , 49 bytes
¡Pruébelo en línea!
Esto aprovecha el hecho de que
"".split()devuelve una matriz vacía para que actúe como la comprobación del caso base en la recursividad.fuente
Jalea , 3 bytes
Pruébalo en línea!
KYa no necesito la s ya que la entrada / salida de matriz ahora está permitida.fuente
ḊƬẎ)(oḊƬF), si lo prefieres).APL (Dyalog),
199 bytes{⌽∊,\⌽⍵}¨gracias a @ H.PWiz por activar mi cerebro
Esto funciona porque todas las cadenas en APL son matrices de caracteres.
TIO
fuente
JavaScript (ES6), 33 bytes
Guardado 1 byte gracias a @ShieruAsakoto
Formato de E / S: conjunto de palabras.
Pruébalo en línea!
JavaScript (ES6), 35 bytes
Formato de E / S: conjunto de palabras.
Pruébalo en línea!
fuente
s=>s.replace(/\S+/g,g=s=>s&&s+g(s.slice(1)))$'(o$<backtick>).R ,
827567 bytesPruébalo en línea!
Varios bytes guardados gracias a JayCe
Separa la salida con nuevas líneas.
La
sapply(...)expresión genera un vector matriz / columna de las subcadenas apropiadas, rellenando con las""necesarias.writeluego imprime los elementos de la matriz,ypor línea, separándolos con"".fuente
...substring,1:1e6,1e6)...o similarbrainfuck ,
9493 bytesPruébalo en línea!
.[-]>[.>]<[<]>to[.>]<[<]>[-]>.Explicación
Pruébalo en línea!
Atribución
La colección constante Brainfuck de Esolang se utilizó para la carga espacial inicial.
fuente
05AB1E , 5 bytes
Pruébalo en línea!
Explicación
fuente
í€ηJí(dado que los prefijos son un byte incorporado de 1 byte en lugar de sufijos similares a 2 bytes; sin embargo, aún requiere un reverso adicional cada uno al inicio, por lo que el conteo de bytes sigue siendo 5).Vim , 47 bytes (38 pulsaciones de teclas)
Comience con su entrada como la única línea en un búfer Vim.
Explicación
Esto pone cada palabra en su propia línea, itera sobre cada línea y luego las une a todas. Se rompe si las palabras tienen más de 99 caracteres o si su entrada tiene más de 99 palabras.
:s/<Space>/\r/g<CR>reemplaza espacios con nuevas líneas (\r)ggcoloca el cursor al comienzo de la primera líneaqacomienza a grabar macro a :ywtira del resto de la palabraPlo pone detrás del cursorlxelimina la primera letra de la última palabraqdeja de grabar macro aqbcomienza a grabar macro b :99@amacro ejecuta un noventa y nueve veces (introduce el límite de caracteres)j0posiciona el cursor al comienzo de la siguiente líneaqdeja de grabar macro b99@bejecuta macro b noventa y nueve veces (introduce el límite de palabras)ggcoloca el cursor en la primera línea99June las siguientes noventa y nueve líneas con espacios (palabra límite de nuevo)Para otros 2 bytes (2 pulsaciones de teclas) puede extender el límite de palabras a 999. Otros 4 bytes, 9999, etc.
fuente
Casco ,
64 bytes-2 bytes gracias a Jonathan Allan (tomando la entrada como una lista)!
Pruébalo en línea!
Explicación
Toma la entrada como una lista de cadenas y asigna la siguiente función:
fuente
Retina 0.8.2 , 15 bytes
Pruébalo en línea! Nota: espacios finales. Explicación:
Split en espacios.
Agregue su sufijo a cada letra. Los
%medios que sólo obtenemos el sufijo de la palabra.Únete con espacios.
fuente
Pepe ,
167153 bytesPruébalo en línea!
fuente
Código de ensamblado x86 de 16 bits, 24 bytes
Llame con si = puntero a la cadena de origen, di = puntero al búfer de salida.
La cadena de origen requiere un byte cero para finalizarla.
El código es el mismo en 16 o 32 o 64 bits (si / di se convierte en esi / edi o rsi / rdi).
El código de 32 bits es dos bytes más grande debido a la llamada expandida.
El código de 64 bits es aún tres bytes más grande porque el inc / dec de rsi / rdi atrae un prefijo (pero si se sabe que están dentro del espacio de memoria de 32 bits, entonces pueden ser esi / edi nuevamente para evitar esa penalización) .
fuente
MATL ,
1816 bytesLa entrada es una matriz de celdas de palabras. Pruébalo en línea!
Explicación
fuente
K4 / K (oK) , 9 bytes
Solución:
Pruébalo en línea!
Explicación:
fuente
C ++ (clang) , 174 bytes
Pruébalo en línea!
Es mi primer envío, y no sabía si devolver la cadena en lugar de imprimir está bien :)
fuente
return w!=""?puede serreturn""!=w?.Stax , 3 bytes
Ejecutar y depurarlo
Explicación:
fuente
Carbón , 14 bytes
Pruébalo en línea! Nota: espacio final. El enlace es a la versión detallada del código. Explicación:
fuente
C (gcc) , 79 bytes
Pruébalo en línea!
fuente
Pip
-s, 11 bytesToma la lista de palabras separadas por espacios de stdin. Pruébalo en línea!
Explicación
fuente
Ruby , 42 bytes
Pruébalo en línea!
fuente
Python 2 , 63 bytes
Pruébalo en línea!
fuente
Lienzo , 6 bytes.
Pruébalo aquí!
5 bytes con un formato de salida loco
fuente
C #,
11190 bytesPruébalo en línea!
Al cambiar la entrada y la salida a las matrices, guardé algunos bytes:
Pruébalo en línea!
fuente
K (oK) ,
1713 bytesPruébalo en línea!
Prefijo de la función anónima; La entrada se toma como una lista de cadenas, que a su vez son listas de caracteres.
Gracias @streetster por 4 bytes.
Cómo:
fuente
{|,/,\|x}'Lisp común , 179 bytes
Pruébalo en línea!
Este es mi primer intento de jugar al golf. Cualquier edición es bienvenida.
fuente
carlugar defirsty encdrlugar derestseguir jugando su presentación.Lua , 70 bytes
Pruébalo en línea!
Explicación
Los argumentos en Lua se almacenan en la tabla que
argcomienza en el índice 1. El operador unario#devuelve el tamaño de la tabla y la funcións:sub(a,b)devuelve una subcadena basada en una cadenasdelimitada por enterosayb, si no se pasa b, devolverá el resto de la cadena.Tuve que usar en
io.write()lugar deprint()evitar el salto de línea, y agreguéprint()al final por la razón opuesta.fuente