Introdução
Vamos observar a seguinte string:
ABCDEFGHIJKLMNOP
Se trocarmos as extremidades da string , quais são:
ABCDEFGHIJKLMNOP
^^ ^^
Temos o seguinte resultado:
BACDEFGHIJKLMNPO
Depois disso, excluímos as extremidades da string, que neste caso são B
e O
. O resultado é:
ACDEFGHIJKLMNP
Se repetirmos o processo, obteremos a seguinte lista:
N Result
2 ADEFGHIJKLMP
3 AEFGHIJKLP
4 AFGHIJKP
5 AGHIJP
6 AHIP
7 AP
Você pode ver que para N = 5 , o resultado é AGHIJP
. Em N = 7 , o comprimento da string é menor que 3 , portanto, N> 7 é considerado inválido nesse caso.
A tarefa
Dada uma sequência S com pelo menos o comprimento 4 e o número de repetições N > 0, produz o resultado final. Você pode assumir que N é sempre válido .
Casos de teste
Input > Output
N = 3, S = ABCDEFGHIJKLMNOP > AEFGHIJKLP
N = 1, S = Hello > Hlo
N = 2, S = 123321 > 11
Isso é código-golfe , então a submissão com a menor quantidade de bytes ganha! Para simplificar, você pode assumir que a sequência conterá apenas caracteres alfanuméricos .
'
o caractere de contagem? Por exemplo''123321
:?N
, mas pode ser uma string com aspas? Quer dizer, para aN=3
tomada'111'
(em oposição a111
)Respostas:
MATL , 8
91213bytesAs entradas são: primeiro
N
como uma string unária com aspas (permitida pelo desafio); segundoS
como uma string com aspas (aspas em strings são permitidas por padrão); separados por uma quebra de linha.Isso funciona invertendo a string, removendo seu segundo elemento e repetindo-o por um total de
2*N
vezes.Experimente online!
fonte
Retina ,
4420 bytesRiscado 44 ainda é regular 44 :(
Assume a entrada no seguinte formato (em caracteres de contagem unária:)
'
:{number of repeats}{string}
Por exemplo:
'''''''ABCDEFGHIJKLMNOP
Não há espaço entre o número de repetições e a sequência.
Obrigado @ MartinBüttner por remover 24 bytes!
Experimente online!
fonte
Python 2, 31 bytes
Eu acho que isso funciona?
fonte
Mathematica, 29 bytes
Minha primeira resposta!
O ponto crucial do Mathematica sem suporte! As entradas de função são uma lista (de caracteres ou qualquer outra coisa) e um número.
fonte
Labirinto , 40 bytes
A entrada é
N
seguida pela sequência, separada por qualquer caractere não numérico.Experimente online!
Isso foi escrito em colaboração com o Sp3000 (o que significa que eu não me incomodei em descobrir um algoritmo, então ele começou a trabalhar nele, veio com uma solução de 118 bytes, mas não se incomodou em jogar golfe, então fiz o golfe. .. sim pelo trabalho em equipe).
Explicação
Primário usual de Sp (como de costume ligeiramente modificado):
<>^v
que alterna ciclicamente uma linha ou coluna ou a grade."
são no-ops.Aqui vamos nós.
O código começa no
<
, que é um truque de golfe que eu usei algumas vezes ao começar com um longo pedaço de código linear. Ele desloca a primeira linha ciclicamente para a esquerda, com o IP , para que a fonte fique assim:Mas agora o IP não pode ser movido para lugar algum, portanto, ele executa
<
novamente. Isso continua até chegarmos a este estado:Nesse ponto, o IP pode deixar a célula e começar a executar a segunda linha começando no
?
. Então aqui está o código linear dividido:O IP agora entra nesta sala 3x2, que na verdade é dois loops 2x2 no sentido horário compactados (sobrepostos). O primeiro loop lê e descarta
N-1
caracteres de STDIN.Agora entramos no segundo loop que lê o restante da string de entrada. Podemos detectar o EOF porque
,
retornará-1
nesse caso, fazendo com que o IP vire à esquerda.Esse decremento não é realmente útil, mas podemos desfazê-lo mais tarde de graça e aqui nos permite sobrepor os dois loops.
Se tomarmos a
5 ABCDEFGHIJKLMNOP
entrada como exemplo, a pilha será assim:Observe que eles realmente correspondem aos caracteres de entrada
FGHIJKLMNOP
(porque os diminuímos) e que na verdade não queremos imprimir o primeiro deles (apenas descartamos osN-1
caracteres, mas queremos pularN
).Agora há um pequeno bit linear que prepara a pilha para o próximo loop:
As pilhas agora se parecem com:
Entramos em outro loop 2x2 no sentido horário. Isso descarta os principais
N
caracteres da pilha principal:Quando saímos do loop,
=
trocamos esse0
e o último caractere da string de entrada novamente. Agora as pilhas ficam assim:Queremos imprimir o conteúdo da pilha principal (exceto o elemento inferior e todos incrementados em 1), a partir da esquerda . Isso significa que precisamos transferi-lo para a pilha auxiliar. É isso que o próximo loop 2x2 (no sentido horário) faz:
Pilhas agora:
Movemos o primeiro desses (aquele que não queremos imprimir) de volta para a pilha principal
{
. E agora entramos no loop final 2x2 ( sentido anti-horário ), que imprime o restante:Finalmente encerramos o programa com
@
.fonte
JavaScript (ES6), 39 bytes
Acontece que eu apenas reinventei a resposta do @ Sp3000.
fonte
Gelatina, 8 bytes
Experimente online!
Como funciona
fonte
Gelatina , 10 bytes
Insira o número via STDIN e a string via linha de comando args . Obrigado ao @Dennis por muitas dicas / ajuda para que isso funcione (a Jelly ainda me escapa).
Experimente online!
fonte
ḢṪḊṖƓ¡
todos estão usando mais de 1 byte) ou você usa algum tipo de tabela de códigos de caracteres para facilitar a leitura?Pitão, 13 bytes
Explicação:
Experimente aqui
fonte
Vitsy,
129 (código) + 1 (nova linha para declaração de função) = 10 bytes\ o /
Espera a entrada na pilha como a sequência seguida pelo número.
Com o qual você pode ligar:
Essa é uma função que deixa a sequência resultante na pilha. Eu o forneci como um programa no link TryItOnline.
TryItOnline!
fonte
Python 2,
4948 bytesExperimente aqui com casos de teste!
Solução recursiva simples. Remove o segundo e o último segundo elemento da string de entrada e se chama com isso e
n-1
atén=0
.edit: Sentindo-se meio idiota, olhando para a outra solução python . Acho que gosto muito de recursão ...
fonte
C, 96 bytes
Ungolfed
fonte
Ruby, 29 bytes
Muito simples.
~
truque roubado da resposta de Sp , que economiza um bytes[n+1..-2-n]
. (Funciona porque~n
é-1-n
um complemento de dois e, em seguida,...
é um intervalo exclusivo.)fonte
Perl,
3632 + 1 = 33 bytesRequer
-p
sinalizador e recebe entrada em duas linhas, com número de iterações no final:Ungolfed?
fonte
CJam, 12 bytes
Experimente online!
Como funciona
fonte
Oitava, 28 bytes
Índice a cadeia, omitindo
S(2:N+1)
eS(end-N:end-1)
.Amostra executada em ideone .
fonte
Ferrugem, 135 bytes
Bem, essa é uma duração bastante terrível.
Pretty-impresso:
Você pode reduzi-lo a 104 bytes se permitirmos bytestrings em vez de strings apropriadas.
Pretty-impresso:
Curioso se alguém puder fazer melhor.
fonte
mSL - 137 bytes
Explicação:
%l = $len($1)
obterá o comprimento da string de entrada e a salvará na variável chamada l$right(<input>,<length>)
e$left(<input>,<length>
pode ser usado para retornar a maior parte esquerda ou direita da string original de forma respeitável. $ left sempre retorna texto começando do lado esquerdo, enquanto $ right sempre retorna texto começando do lado direito. Se o comprimento especificado for um número negativo, $ left e $ right retornam o texto inteiro menos o número de caracteres de seus respectivos lados.$mid(<string>,<start>,[length])
é usado para obter uma substring no meio da string. Iniciar é o início da substring a partir da esquerda. Um valor negativo indica um início da direita. Nos dois casos, um comprimento opcional pode ser especificado. Um comprimento negativo pode ser usado para remover tantos caracteres do final. Então, usei-o para recuperar o segundo caractere e o segundo último caractere usando o comprimento da string de entrada.$calc(<input>)
é usado para executar cálculos matemáticosfonte
No idioma ainda sem título (tão novo e não competitivo), 9 bytes
Você pode encontrar o código fonte aqui , a linguagem é completamente instável (primeiro desafio de teste), portanto, não espere que ela funcione no futuro (commit 7)
Este é um idioma baseado em pilha com funções que adicionam e removem objetos da pilha. Atualmente, existem 2 comandos de manipulação de pilha:
D
(duplique a parte superior da pilha N vezes) eR
(gire os N itens principais na pilha)Explicação:
fonte
CJam, 14 bytes
Teste aqui.
Explicação
fonte
Vim, 27 bytes
A entrada deve estar no formulário
STRING N
na primeira linha sem outros caracteres.Explicação:
fonte
Brainfuck, 130 bytes
Minha primeira entrada no PPCG!
Obviamente não vai ganhar, mas ei.
Recebe entradas como: 4ABCDEFGHIJKL, com o primeiro caractere sendo N.
Teste neste site maravilhoso.
Limitado a N menor ou igual a 9, porque números de dois dígitos são um problema.
EDIT: Eu peguei e adicionei suporte para números de dois dígitos. Almofada com zero para dígitos únicos.
fonte
Perl, 27 bytes
Incluir +1 para
-p
Correr como
perl -p sdr.pl
Entrada fornecida em STDIN, primeira linha da string, segunda linha da contagem Assume que a string contém apenas caracteres "word"
sdr.pl
:fonte
PHP, 60 bytes
Esta solução define iterativamente os caracteres da sequência de entrada como uma sequência vazia pelo índice. Estou manipulando a string de entrada diretamente para evitar um longo
return
.Basicamente, a memória
$w
fica assim quando concluída:Execute assim:
fonte
<?for(;$I;)$W[$I--]=$W[strlen($W)-$I-2]="";echo$W;
. Ele espera que os valores nas teclasW
eI
, mais de POST / GET / BISCOITO ... Um exemplo seriahttp://example.com/a.php?W=MyString&I=5
register globals
mais. Thx pela sugestão embora :)Pilões , 16 bytes.
Como funciona:
fonte
CJam, 15 bytes
Tenho certeza de que é possível jogar golfe ainda mais ...
fonte
Jolf, 13 bytes
Uma tradução da resposta JavaScript.
Explicação:
Experimente aqui!
Uma versão pós-pergunta mais interessante:
fonte
Sério, 17 bytes
Toma entrada como
s \n n
.Experimente online!
Explicação:
fonte
C #, 129 bytes
Como basicamente pulamos 1 e removemos N e o cenário reverso
destroçado
fonte
Java, 144 bytes
fonte