Introducción
Observemos la siguiente cadena:
ABCDEFGHIJKLMNOP
Si intercambiamos los extremos de la cadena , que son estos:
ABCDEFGHIJKLMNOP
^^ ^^
Obtenemos el siguiente resultado:
BACDEFGHIJKLMNPO
Después de eso, eliminamos los extremos de la cadena, que en este caso son B
y O
. El resultado es:
ACDEFGHIJKLMNP
Si repetimos el proceso, obtenemos la siguiente lista:
N Result
2 ADEFGHIJKLMP
3 AEFGHIJKLP
4 AFGHIJKP
5 AGHIJP
6 AHIP
7 AP
Puedes ver que para N = 5 , el resultado es AGHIJP
. En N = 7 , la longitud de la cadena es menor que 3 , por lo que N> 7 se considera inválido en este caso.
La tarea
Dada una cadena S con al menos longitud 4 y el número de repeticiones N > 0, se obtiene el resultado final. Puede suponer que N siempre es válido .
Casos de prueba
Input > Output
N = 3, S = ABCDEFGHIJKLMNOP > AEFGHIJKLP
N = 1, S = Hello > Hlo
N = 2, S = 123321 > 11
Este es el código de golf , por lo que gana el envío con la menor cantidad de bytes. Por simplicidad, puede suponer que la cadena solo contendrá caracteres alfanuméricos .
'
como el personaje que cuenta? Por ejemplo''123321
:?N
, pero ¿puede ser una cadena, con comillas? Quiero decir, paraN=3
tomar'111'
(en lugar de111
)Respuestas:
MATL , 8
91213bytesLas entradas son: primero
N
como una cadena unaria con comillas (permitidas por el desafío); segundoS
como una cadena con comillas (las comillas en cadenas están permitidas por defecto); separados por un salto de línea.Esto funciona volteando la cadena, eliminando su segundo elemento y repitiendo un total de
2*N
veces.Pruébalo en línea!
fuente
Retina ,
4420 bytesTachado 44 sigue siendo regular 44 :(
Asume la entrada en el siguiente formato (en carácter de conteo unario:)
'
:{number of repeats}{string}
Por ejemplo:
'''''''ABCDEFGHIJKLMNOP
no hay espacio entre el número de repeticiones y la cadena.
¡Gracias @ MartinBüttner por eliminar 24 bytes!
Pruébalo en línea!
fuente
Python 2, 31 bytes
Creo que esto funciona?
fuente
Mathematica, 29 bytes
Mi primera respuesta!
¡El quid de Mathematica sin soporte! Las entradas de funciones son una lista (de caracteres, o lo que sea) y un número.
fuente
Laberinto , 40 bytes
La entrada es
N
seguida por la cadena, separada por cualquier carácter no numérico.Pruébalo en línea!
Esto fue escrito en colaboración con Sp3000 (lo que significa que no me molesté en descifrar un algoritmo, por lo que comenzó a trabajar en él, ideó una solución de 118 bytes pero no me molestó jugar al golf, así que hice el golf. .. yay para el trabajo en equipo).
Explicación
Imprimación habitual de Sp (como siempre ligeramente modificada):
<>^v
cual se desplaza cíclicamente una fila o columna o la cuadrícula."
son no-ops.Aquí vamos.
El código comienza en el
<
, que es un truco de golf que he usado varias veces al comenzar con un código lineal largo. Desplaza la primera fila cíclicamente a la izquierda, con la IP en ella , por lo que la fuente se ve así:Pero ahora la IP no puede moverse a ninguna parte, por lo que se ejecuta
<
nuevamente. Esto continúa hasta que alcancemos este estado:En este punto, la IP puede abandonar la celda y comenzar a ejecutar la segunda línea a partir de
?
. Así que aquí está el código lineal desglosado:El IP ahora ingresa a esta sala de 3x2, que en realidad son dos bucles 2x2 apretados (superpuestos) en sentido horario. El primer ciclo lee y descarta
N-1
caracteres de STDIN.Ahora ingresamos al segundo ciclo que lee el resto de la cadena de entrada. Podemos detectar EOF porque
,
volverá-1
en ese caso, haciendo que la IP gire a la izquierda.Esa disminución no es realmente útil, pero podemos deshacerla más tarde de forma gratuita y aquí nos permite superponer los dos bucles.
Si tomamos la
5 ABCDEFGHIJKLMNOP
entrada como un ejemplo, la pila se ve así:Tenga en cuenta que estos realmente corresponden a los caracteres de entrada
FGHIJKLMNOP
(porque los disminuimos), y que en realidad no queremos imprimir el primero de ellos (solo hemos descartado losN-1
caracteres, pero queremos omitirlosN
).Ahora hay un bit lineal corto que prepara la pila para el siguiente ciclo:
Las pilas ahora se ven así:
Entramos en otro ciclo de 2x2 en sentido horario. Esto descarta los
N
caracteres superiores de la pila principal:Cuando salimos del bucle,
=
intercambiamos eso0
y el último carácter de la cadena de entrada nuevamente. Ahora las pilas se ven así:Queremos imprimir el contenido de la pila principal (excepto el elemento inferior y todo incrementado en 1), desde la izquierda . Eso significa que necesitamos llevarlo a la pila auxiliar. Eso es lo que hace el siguiente ciclo 2x2 (en sentido horario):
Pilas ahora:
Volvemos al primero de ellos (el que no queremos imprimir) de nuevo a la pila principal
{
. Y ahora entramos en el ciclo final 2x2 (en sentido antihorario ), que imprime el resto:Finalmente terminamos el programa con
@
.fuente
JavaScript (ES6), 39 bytes
Resulta que acabo de reinventar la respuesta de @ Sp3000.
fuente
Jalea, 8 bytes
Pruébalo en línea!
Cómo funciona
fuente
Jalea , 10 bytes
Ingrese el número a través de STDIN y la cadena a través de la línea de comando args . Gracias a @Dennis por muchas sugerencias / ayuda para que esto funcione (Jelly aún me elude).
Pruébalo en línea!
fuente
ḢṪḊṖƓ¡
todos usan más de 1 byte) o utiliza algún tipo de tabla de códigos de caracteres para facilitar la lectura?Pyth, 13 bytes
Explicación:
Pruébalo aquí
fuente
Vitsy,
129 (código) + 1 (nueva línea para declaración de función) = 10 bytes\ o /
Espera la entrada en la pila como la cadena seguida del número.
Con el que puedes llamar:
Esta es una función que deja la cadena resultante en la pila. Lo he proporcionado como un programa en el enlace TryItOnline.
TryItOnline!
fuente
Python 2,
4948 bytes¡Pruébalo aquí con cajas de prueba!
Solución recursiva simple. Elimina el segundo y el último segundo elemento de la cadena de entrada y se llama a sí mismo con esto y
n-1
hastan=0
.editar: Sentirse un poco estúpido, mirando la otra solución de Python . Supongo que me gusta demasiado la recursividad ...
fuente
C, 96 bytes
Sin golf
fuente
Ruby, 29 bytes
Muy sencillo
~
truco robado de la respuesta de Sp , que ahorra un bytes[n+1..-2-n]
. (Funciona porque~n
está-1-n
en el complemento de dos, y luego...
es un rango exclusivo).fuente
Perl,
3632 + 1 = 33 bytesRequiere
-p
bandera y toma entrada en dos líneas, con números de iteraciones al final:¿Ungolfed?
fuente
CJam, 12 bytes
Pruébalo en línea!
Cómo funciona
fuente
Octava, 28 bytes
Indice la cadena, omitiendo
S(2:N+1)
yS(end-N:end-1)
.Ejecución de muestra en ideone .
fuente
Óxido, 135 bytes
Bueno, esa es una longitud bastante terrible.
Bonito estampado:
Puede reducirlo a 104 bytes si permitimos cadenas de bytes en lugar de las cadenas adecuadas.
Bonito estampado:
Curioso si alguien puede hacerlo mejor.
fuente
mSL - 137 bytes
Explicación:
%l = $len($1)
obtendrá la longitud de la cadena de entrada y la guardará en una variable llamada l$right(<input>,<length>)
y$left(<input>,<length>
se puede usar para devolver la parte izquierda o derecha de la cadena original respetablemente. $ left siempre devuelve el texto desde el lado izquierdo, mientras que $ right siempre devuelve el texto desde el lado derecho. Si la longitud especificada es un número negativo, $ left y $ right devuelven todo el texto menos esa cantidad de caracteres de sus respectivos lados.$mid(<string>,<start>,[length])
se usa para obtener una subcadena desde el medio de la cadena. Inicio es el inicio de la subcadena desde la izquierda. Un valor negativo indica un comienzo desde la derecha. En ambos casos, se puede especificar una longitud opcional. Se puede usar una longitud negativa para eliminar tantos caracteres del final. Entonces lo usé para recuperar el segundo carácter y el segundo último carácter usando la longitud de la cadena de entrada.$calc(<input>)
se usa para realizar cálculos matemáticosfuente
A partir del lenguaje aún sin título (tan nuevo no competitivo), 9 bytes
Puede encontrar el código fuente aquí , el idioma es completamente inestable (primer desafío de prueba para él), así que no espere que funcione en el futuro (commit 7)
Este es un lenguaje basado en la pila con funciones que agregan y eliminan objetos de la pila. Actualmente hay 2 comandos de manipulación de pila:
D
(duplicar la parte superior de la pila N veces) yR
(rotar los N elementos superiores en la pila)Explicación:
fuente
CJam, 14 bytes
Pruébalo aquí.
Explicación
fuente
Vim, 27 bytes
Se espera que la entrada tenga el formato
STRING N
en la primera línea sin otros caracteres.Explicación:
fuente
Brainfuck, 130 bytes
Mi primera entrada PPCG!
Obviamente no voy a ganar pero oye.
Toma datos como: 4ABCDEFGHIJKL, siendo el primer carácter N.
Pruébelo en este maravilloso sitio.
Limitado a N menor o igual a 9, porque los números de dos dígitos son una molestia en el trasero.
EDITAR: Lo absorbí y agregué soporte para números de dos dígitos. Almohadilla con un cero para un solo dígito.
fuente
Perl, 27 bytes
Incluye +1 para
-p
Correr como
perl -p sdr.pl
Entrada dada en STDIN, primera línea de la cadena, segunda línea del recuento Asume que la cadena contiene solo caracteres de "palabras"
sdr.pl
:fuente
PHP, 60 bytes
Esta solución establece iterativamente los caracteres de la cadena de entrada a una cadena vacía por índice. Estoy manipulando la cadena de entrada directamente para evitar un largo
return
.Básicamente en la memoria se
$w
ve así cuando se hace:Corre así:
fuente
<?for(;$I;)$W[$I--]=$W[strlen($W)-$I-2]="";echo$W;
. Espera los valores en las teclasW
yI
, sobre POST / GET / COOKIE ... Un ejemplo seríahttp://example.com/a.php?W=MyString&I=5
register globals
más. Gracias por la sugerencia aunque :)Pilones , 16 Bytes.
Cómo funciona:
fuente
CJam, 15 bytes
Estoy seguro de que es posible jugar golf más allá ...
fuente
Jolf, 13 bytes
Una tranpilación de la respuesta de JavaScript.
Explicación:
Pruébalo aquí!
Una versión posterior a la pregunta más interesante:
fuente
En serio, 17 bytes
Toma entrada como
s \n n
.Pruébalo en línea!
Explicación:
fuente
C #, 129 bytes
Dado que básicamente omitimos 1 y eliminamos N y el escenario invertido
sin golf
fuente
Java, 144 bytes
fuente