Dada una lista o cadena delimitada, envíe una lista o cadena delimitada con el primer carácter de cada palabra una palabra más tarde.
Para este desafío, una "palabra" consta de todos los caracteres ASCII imprimibles, excepto el espacio, la nueva línea y el carácter de tabulación.
Por ejemplo, tome la cadena "¡Buenas tardes, mundo!" (delimitado por espacios):
1. String
"Good afternoon, World!"
2. Get the first characters:
"[G]ood [a]fternoon, [W]orld!"
3. Move the characters over. The character at the end gets moved to the beginning.
"[W]ood [G]fternoon, [a]orld!"
4. Final string
"Wood Gfternoon, aorld!"
Este es el código de golf , ¡el código más corto gana!
Casos de prueba:
Input -> output (space-delimited)
"Good afternoon, World!" -> "Wood Gfternoon, aorld!"
"This is a long sentence." -> "shis Ts i aong lentence."
"Programming Puzzles and Code Golf" -> Grogramming Puzzles Pnd aode Colf"
"Input -> output" -> "onput I> -utput"
"The quick brown fox jumped over the lazy dog." -> "dhe Tuick qrown box fumped jver ohe tazy log."
"good green grass grows." -> "good green grass grows."
Respuestas:
05AB1E ,
76 bytesExplicación:
Pruébalo en línea!
fuente
Japt ,
111098 bytesAprovecha el ajuste de índice de Japt y la indexación negativa.
Pruébalo en línea
Explicación
fuente
¸
h
fue una buena idea. Se me ocurrió lo£g´Y ¯1 +XÅ
que puede convertirse en £ XhUg´Y ¯1 utilizando su técnica.Haskell , 43 bytes
Pruébalo en línea! Utiliza una lista de cadenas para entrada y salida.
Recuerda la primera letra de la palabra anterior.
p
y la convierte recursivamente en la primera letra de la palabra actual mientras envía la nueva primera letra por la cadena. La primera letra anterior se inicializa como la primera letra de la última palabra.fuente
Ruby,
857763 bytesEstoy bastante seguro de que esto podría ser mucho más corto.
Editar: Gracias por @manatwork para recoger -> mapa
fuente
.collect
y.each
con.map
.-p
bandera (+1 byte) yi=-2;gsub(r=/\b\w/){$_.scan(r)[i+=1]}
para el mejor golfageJalea , 6 bytes
Pruébalo en línea!
Gracias a Dennis por leer las reglas mejor que yo, esto devuelve una lista de las palabras. No funciona como un programa completo.
fuente
CJam ,
12109 bytesGuardado 1 byte gracias a jimmy23013
Toma entrada como una lista de palabras.
Pruébalo en línea!
Explicación
fuente
)o
para1m>
.V , 7 bytes
Pruébalo en línea!
Explicación:
fuente
JavaScript (ES6), 46 bytes
Aprovecha el hecho de que
slice(-1)
devuelve el último elemento de una matriz.Retazo
Mostrar fragmento de código
fuente
Vim,
16, 9 bytes¡7 bytes guardados gracias a @Wossname!
Toma entrada una palabra por línea, por ejemplo
Creo que esto debería estar bien ya que tomar la entrada como una lista está permitida.
Pruébalo en línea!
fuente
^vGdjPGd$ggP
(donde ^ v es la combinación de teclas [control + v], solo asegúrese de comenzar con el cursor en ladd -> D
,gg -> }
) ¡Gracias por el consejo!> <> ,
4445 bytesAsume palabras separadas por espacios.
Corrección de Aaron agregó 1 byte
fuente
Python 2, 74 bytes
Pruébalo en línea
-5 bytes, gracias a @Rod
fuente
S[:-1]
se puede acortar aS
; las listas de compresión de diferentes longitudes se truncan automáticamente, lo que sea más largoHaskell , 50 bytes
La entrada y la salida son como listas de palabras.
fuente
f=
.PHP, 62 bytes
fuente
C #,
7877 bytesCompila a una
Func<List<string>, IEnumerable<string>>
versión completa / formateada:fuente
Brachylog , 12 bytes
Pruébalo en línea!
Explicación
fuente
R,
7270 bytesfunction(x)paste0(substr(x,1,1)[c(y<-length(x),2:y-1)],substring(x,2))
Pruébalo en línea
2 bytes guardados gracias a Giuseppe.
Entrada y salida son listas. Toma una subcadena que consta de las primeras letras, alterna la última al frente y la pega junto con una subcadena del resto de cada palabra. El paso en bicicleta es un asesino, pero no puedo encontrar una manera de reducirlo más.
fuente
2:y-1
lugar de1:(y-1)
ya que:
tiene prioridad sobre lo-
que le ahorra 2 bytes.substring
como argumento de funciónPython 2 + Numpy, 104 bytes
fuente
APL (Dyalog) , 6 bytes
Toma matriz con una palabra por columna.
Pruébalo en línea!
¯1∘⌽
girar un paso a la derecha@
a1
fila 1fuente
Mathematica, 59 bytes
Pruébalo en línea!
Toma y devuelve una lista de palabras.
Si prefiere tomar y devolver cadenas, esto funciona para 87 bytes:
fuente
Retina,
463731 bytesPruébalo en línea
Todavía siendo golf.
fuente
(.*)
y$3
?+
en la primera línea a uno*
, gira(.* .)
en la tercera línea a(.*)
-2 bytes. Pruébalo en línea!kdb +,
2522 bytesSolución:
Ejemplo:
Explicación:
Extra:
Una versión que toma una cadena regular (37 bytes):
fuente
Perl 5 , 40 bytes
39 bytes de código + 1 para
-a
Pruébalo en línea!
fuente
Retina ,
2520 bytesEl recuento de bytes asume la codificación ISO 8859-1.
Pruébalo en línea!
La entrada y la salida están separadas por salto de línea. El conjunto de pruebas realiza la conversión de E / S necesaria desde la separación de espacios.
fuente
Mathematica, 134 bytes
fuente
Pyth, 12 bytes
Toma una lista de palabras y devuelve una lista de palabras.
¡Intentalo!
fuente
Java (OpenJDK 8) , 97 bytes
Pruébalo en línea!
fuente
C,
10677 bytes-29 bytes desde scottinet
Modifica la cadena en el lugar.
Sin golf:
fuente
J , 34 bytes
Pruébalo en línea!
fuente
Casco , 11 bytes
Entrada y salida como una lista de cadenas, ¡ pruébelo en línea!
(El encabezado simplemente transforma la entrada en una lista de palabras y une la lista de salida con espacios).
Explicación
Alternativa, 11 bytes
Pruébalo en línea!
fuente
AWK , 63 bytes
Pruébalo en línea!
Parece que debería haber una forma de reducir la redundancia, pero no lo veo.
Nota: el enlace TIO tiene 4 bytes adicionales para permitir la entrada multilínea.
fuente