Entrada:
- Una cadena (el fragmento de onda) con una longitud
>= 2
. - Un entero positivo n
>= 1
.
Salida:
Producimos una onda de una sola línea. Hacemos esto repitiendo la cadena de entrada n veces.
Reglas de desafío:
- Si el primer y último carácter de la cadena de entrada coincide, solo lo sacamos una vez en la salida total (es decir,
^_^
de longitud 2 se convierte^_^_^
y no^_^^_^
). - La cadena de entrada no contendrá espacios en blanco / tabulaciones / nuevas líneas / etc.
- Si su idioma no admite caracteres que no sean ASCII, entonces está bien. Siempre que cumpla con el desafío con la entrada de onda solo ASCII.
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados, programas completos. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, agregue una explicación si es necesario.
Casos de prueba:
_.~"( length 12
_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(
'°º¤o,¸¸,o¤º°' length 3
'°º¤o,¸¸,o¤º°'°º¤o,¸¸,o¤º°'°º¤o,¸¸,o¤º°'
-__ length 1
-__
-__ length 8
-__-__-__-__-__-__-__-__
-__- length 8
-__-__-__-__-__-__-__-__-
¯`·.¸¸.·´¯ length 24
¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯
** length 6
*******
String & length of your own choice (be creative!)
>= 1
" me parece un poco pleonástico ... :)Respuestas:
Pyke,
151410 bytesPruébalo aquí!
fuente
Python 3, 32 bytes
Concatena
n
copias de la cadena, eliminando el primer carácter de todas las copias, pero el primero si el primer carácter coincide con el último.fuente
s[0]
ys[-1]
parezco referirme al primer y último byte, en lugar del primer y último carácter. Editar: ah, espera, eso es Python 2 vs. Python 3. Funciona correctamente en Python 3.05AB1E , 13 bytes
Utiliza la codificación CP-1252 .
Pruébalo en línea!
Explicación
-___-
y3
usado como entrada por ejemplo.fuente
JavaScript (ES6), 47 bytes
fuente
s=>n=>...
lugar de(s,n)=>
Perl, 29 bytes
Código de 28 bytes + 1 para
-p
.¡Gracias a @Dada por ayudarme a reducir algunos bytes!
Uso
Ejemplo en línea.
fuente
<>
lugar de hacerlo,$'
ya que te permite deshacerte de él-0
. Y luego puede usar ens///e
lugar de//;$_=
ganar un byte más :-)$
que coincidan con el final, todavía me ahorra bytes como no usar'
significa que puedo soltarlo y guardarlo en un archivo para guardarlo agregando 3-p
y volver a soltarlo en 1.$
lugar de la nueva línea que tenía anteriormente. (Lo siento, mi comentario no fue muy detallado, tenía prisa ...)<>
en la cadena de reemplazo. Pero sin
está separada por un espacio en lugar de una nueva línea, el recuento de caracteres se puede reducir un poco:s/(.+?) (\d+)/$1x$2/e
Perl, 23 bytes
Incluye +1 para
-p
Dé la cadena de entrada seguida de un número en líneas separadas en STDIN
wave.pl
:Si el primer carácter de la palabra no es un carácter especial regex, esta versión de 22 bytes también funciona:
fuente
/g
modificador cuando lo pegaste ;-)MATL,
191714 bytesEsto funciona para ASCII en el intérprete en línea y tanto para Unicode como para ASCII cuando se ejecuta con MATLAB.
Pruébalo en línea!
Explicación
fuente
Retina , 29 bytes
Las líneas 2 y 5 tienen un espacio final.
Pruébalo en línea! (La primera línea habilita un conjunto de pruebas separado por salto de línea).
fuente
Lote, 117 bytes
Toma el número de repeticiones como un parámetro de línea de comandos y lee la cadena de STDIN.
fuente
Pyth, 13 bytes
¡Banco de pruebas!
Explicación a seguir.
fuente
Gema, 41 personajes
Ejecución de muestra:
fuente
PowerShell v2 +, 48 bytes
Emite la cadena completa una vez, seguida de n-1 copias de la cadena o subcadena, dependiendo de si el primer y el último carácter coinciden.
El
.Substring()
método sale del índice suministrado al final de la cadena, por lo que si se$s[0]-eq$s[-1]
evalúa como falso (0), obtenemos la cadena completa. Si esa afirmación es verdadera (1), obtenemos la subcadena que comienza en el segundo carácter.fuente
VBA 119 bytes
Nuevo en este juego y vba gana con los bytes más altos: P
PD: no puedo creer que vba esté cerca de JAVA HAHA
Explicación:
fuente
CJam,
1615 bytesPruébalo en línea
Explicación:
fuente
K, 12 bytes
Gracias
fuente
{,/y#,$[(*x)~*|x;-1;0]_x}
para 25 bytes maneja la primera / última coincidencia. Si eres feliz rompiendo la Regla 1, entonces puedes tener{,/y#,x}
por 8.PHP, 72 bytes
con PHP 7.1 podría reducirse a 65 Bytes
fuente
Pip , 18 bytes
Solución de expresiones regulares, aprovechando la regla "sin espacios en la entrada". Toma la cadena de stdin y el número como argumento de línea de comando.
Pruébalo en línea!
Explicación:
Por lo tanto, se
a b
convierte enab
, sea a
convierte ena
y se elimina el espacio al final de la cadena. Entonces el resultado se imprime automáticamente.fuente
Haskell, 59 bytes
Versión sin golf:
fuente
Java 10,
12311110910710210079 bytesPruébalo en línea.
Alternativa con el mismo conteo de bytes ( 79 bytes ):
Pruébalo en línea.
Por supuesto, intentaré responder mi propia pregunta. ;)
-5 bytes gracias a @ dpa97 .
-21 bytes de conversión de Java 7 a 10.
Explicación:
fuente
.split
.s.substring(1)
es dos bytes más corto. ;)Javascript ES6, 49 caracteres
Prueba:
fuente
QBIC , 65 bytes
Supongo que debería agregar LEFT $ y RIGHT $ a QBIC ...
Explicación:
fuente
C #, 79 bytes
Un método un poco absurdo de repetir una cadena. Cree una nueva cadena de la longitud de repetición deseada y luego reemplace cada carácter con la cadena para repetir. Aparte de eso, parece más o menos la misma estrategia que muchos otros.
fuente
x
? Tal vez sería mejor cambiar eso a un espacio, ya que " La cadena de entrada no contendrá espacios en blanco / tabulaciones / nuevas líneas / etc. ".x
. Primero crea laxx...x
cadena y luego la reemplazax
sin volver a evaluar la cadena desde el principio con lo que debe reemplazarse.SpecBAS - 68 bytes
Utiliza en línea
IF
para verificar si el primer y el último carácter son iguales. De lo contrario, imprima eln
número de cadena varias veces De lo contrario, empalme la cadena a longitud-1, repita eso y ponga el último carácter al final.Solo puede aceptar caracteres ASCII (o caracteres integrados en SpecBAS IDE)
fuente
APL, 19 bytes
Uso:
Explicación:
⊃⍺=⊃⌽⍺
: ver si el primer personaje coincide con el último personaje⍺↓⍨
: si este es el caso, suelte el primer carácter⊂
: adjunte el resultado⍵⍴
: replicarlo⍵
veces1↓
: suelte el primero (esto es más corto que(⍵-1)⍴
)∊
: obtener todos los elementos simples (deshacer el boxeo)⍺,
: agrega una instancia de toda la cadena al frentefuente
Postdata, 98 bytes
... pero es posible que necesite agregar una 'descarga' para que su intérprete de PS vacíe el búfer de comunicación, otros seis bytes :(
fuente
Lisp común (LispWorks), 176 bytes
Uso:
Explicación:
Ungolf:
fuente
Vim, 17 bytes
La manera fácil de hacer esto es utilizar una expresión regular de referencia inversa que pueda determinar si el primer y el último carácter coinciden. Pero las expresiones regulares largas son largas. No queremos eso.
La ola para repetir está en el búfer. Supongo que el número que se repetirá está en el registro
"a
(escribaqaNq
con N como el número para configurarlo). La idea es:Entonces
P
el texto eliminado@a
veces.lDg*
: Esta maniobra crea una expresión regular que coincide con cualquier primer carácter, independientemente de si necesita escapar o no, o si es una palabra o no. (*
sería suficiente para hacer la expresión regular escapó correctamente, pero agregaría\<\>
basura no deseada si fuera un carácter de palabra, como_
).p^
: El último paso fue desordenado. Limpiar a la posición original, al comienzo de la línea.v$
: En modo visual,$
por defecto se mueve a después del final de la línea.?<C-P>$<CR>hd
: Si la expresión regular anterior existe al final de la línea, esta búsqueda se moverá a ella; de lo contrario, quédese más allá del final de la línea. Mover a la izquierda desde allí y logramos la eliminación (tediosa) que necesitamos.@aP
: Ejecute el número de repetición como macro para utilizarlo como argumentoP
.fuente
Rubí, 38 bytes.
Creo que esto se explica por sí mismo. Todavía me pregunto si hay una forma más concisa de representar el
s[0..-2]
bloque, pero aún no lo he encontrado.fuente
Java (117 bytes)
fuente
b>0;b--
ab-->0;
. Además, ¿por qué hayb+
allíc+=b+a.substring
? Aún así, es una excelente primera respuesta si se te ocurrió de forma independiente. ¡Disfruta tu estadía aquí en PPCG! :) Además, puede encontrar consejos para jugar golf en Java interesantes para leer.