Dada uma sequência S
e uma lista de índices X
, modifique S
removendo o elemento em cada índice S
enquanto usa esse resultado como o novo valor de S
.
Por exemplo, dado S = 'codegolf'
e X = [1, 4, 4, 0, 2]
,
0 1 2 3 4 5 6 7 |
c o d e g o l f | Remove 1
c d e g o l f | Remove 4
c d e g l f | Remove 4
c d e g f | Remove 0
d e g f | Remove 2
d e f
Sua tarefa é executar esse processo, coletar os valores S
após cada operação e exibir cada um em uma nova linha em ordem. A resposta final seria
S = 'codegolf'
X = [1, 4, 4, 0, 2]
Answer:
codegolf
cdegolf
cdeglf
cdegf
degf
def
- Isso é código-golfe, então faça seu código o mais curto possível.
- Você pode assumir que os valores em
X
sempre são índices válidosS
e pode usar a indexação com base em 0 ou em 1. - A cadeia conterá apenas
[A-Za-z0-9]
- De qualquer
S
oux
podem por esvaziar. SeS
estiver vazio, segue-se quex
também deve estar vazio. - Você também pode usar
S
como uma lista de caracteres em vez de uma string. - Você pode imprimir a saída ou retornar uma lista de seqüências de caracteres. Os espaços em branco à esquerda e à direita são aceitáveis. Qualquer forma de saída é boa, desde que seja facilmente legível.
Casos de teste
S = 'abc', x = [0]
'abc'
'bc'
S = 'abc', x = []
'abc'
S = 'abc', x = [2, 0, 0]
'abc'
'ab'
'b'
''
S = '', x = []
''
S = 'codegolfing', x = [10, 9, 8, 3, 2, 1, 0]
'codegolfing'
'codegolfin'
'codegolfi'
'codegolf'
'codgolf'
'cogolf'
'cgolf'
'golf'
code-golf
string
array-manipulation
code-golf
string
ascii-art
code-golf
number
sequence
pi
code-golf
number
array-manipulation
code-golf
string
ascii-art
code-golf
math
number
game
code-golf
math
sequence
polynomials
recursion
code-golf
math
number
sequence
number-theory
code-golf
permutations
balanced-string
code-golf
string
ascii-art
integer
code-golf
decision-problem
hexagonal-grid
code-golf
ascii-art
kolmogorov-complexity
code-golf
number
code-golf
matrix
binary-matrix
code-golf
math
statistics
code-golf
string
polyglot
code-golf
random
lost
code-golf
date
path-finding
code-golf
string
code-golf
math
number
arithmetic
number-theory
code-golf
tetris
binary-matrix
code-golf
array-manipulation
sorting
code-golf
number
code-golf
array-manipulation
rubiks-cube
cubically
code-golf
grid
optimization
code-golf
math
function
code-golf
string
quine
code-golf
ascii-art
grid
code-golf
decision-problem
grid
simulation
code-golf
math
sequence
code-golf
path-finding
code-golf
ascii-art
grid
simulation
code-golf
number
whitespace
code-golf
sequence
code-golf
sequence
code-golf
sequence
integer
code-golf
math
game
code-golf
internet
stack-exchange-api
code-golf
sequence
code-golf
internet
stack-exchange-api
code-golf
math
factoring
code-challenge
sequence
polyglot
rosetta-stone
code-golf
string
browser
code-golf
date
code-golf
base-conversion
code-challenge
cops-and-robbers
hello-world
code-golf
cops-and-robbers
hello-world
milhas
fonte
fonte
S
como uma lista de caracteres?len(x)+1
seqüências de caracteres.Respostas:
Haskell,
3833 bytesPara a frente: pegue os elementos repetidamente antes e depois do índice i, junte-os novamente e colete os resultados.
Experimente online!
Edit: @Lynn salvou 5 bytes. Obrigado!
fonte
s#i=take i s++drop(i+1)s
é realmente mais curto, economizando 5 bytes.q=
lá ^^;JavaScript (ES6),
5750484542 bytesPega a sequência como uma matriz de caracteres individuais, gera uma matriz contendo uma sequência separada por vírgula do original seguida por uma sub-matriz de sequências separadas por vírgula para cada etapa.
Teste-o
Explicação
Pegamos as duas entradas por meio de parâmetros
s
(a matriz de strings) ea
(a matriz inteira) na sintaxe de curry, o que significa que chamamos a função comf(s)(a)
.Criamos uma nova matriz e começamos com a original
s
. No entanto, como osplice
método que usaremos posteriormente modifica uma matriz, precisamos fazer uma cópia dela, o que podemos fazer convertendo-a em uma cadeia de caracteres (basta acrescentar uma cadeia vazia).Para gerar a sub
map
-matriz , passamos o mouse sobre o array inteiroa
(ondex
é o inteiro atual) e, para cada elemento, extraímossplice
1 elementos
, começando no índicex
. Retornamos o modificados
, novamente fazendo uma cópia dele convertendo-o em uma string.fonte
s=>a=>[s+'',...a.map(x=>s.splice(x,1)&&s+'')]
Japonês , 6 bytes
Teste online!
Explicação
Alternativamente:
Isso funciona porque a remoção do item no índice
"
não faz nada e, portanto, retorna a string original.fonte
Casca , 7 bytes
Pega primeiro a sequência e depois os índices (com base em 1). Experimente online!
Explicação
fonte
x
?Python 2 , 43 bytes
Experimente online!
Portanto, isso é impresso como listas de caracteres.
fonte
for i in i+[0]
?+[0]
, eu estou falandofor i in i
.for k in i
é equivalente .Python 2 , 47 bytes
Isso pode ser reduzido para 43 bytes , como o @LuisMendo apontou, mas essa já é a solução do @ ErktheOutgolfer.
Experimente online!
fonte
`a`[2::5]
em vez''.join(a)
repr
e corda spliting, funciona bem para transformar uma lista de caracteres em uma string,`a`[1::3]
também pode ser usado com uma lista de dígitos::5
funciona aqui: PJava 8, 78 bytes
Este é um lambda ao curry, de
int[]
para um consumidor deStringBuilder
ouStringBuffer
. A saída é impressa com saída padrão.Experimente Online
fonte
Stream
s como entrada e obtive respostas muito boas. Na verdade, quase todas as línguas de golfe usam fluxos equivalentes internamente. Então, ao selecionar sua entrada, você apenas nivela um pouco. +1 no entanto05AB1E , 11 bytes
Experimente online!
fonte
Any form of output is fine as long as it is easily readable
Mathematica, 70 bytes
Experimente online!
fonte
R ,
4632 bytesExperimente online!
Aceita entrada como uma lista de caracteres e
X
é baseado em 1.Reduce
é o equivalente R defold
, a função nesse caso é[
qual é o subconjunto. Repete-X
porque a indexação negativa em R remove o elemento einit
é definida comoS
,accum=TRUE
assim acumulamos os resultados intermediários.R , 80 bytes
Função de 2 argumentos, leva
X
1-indexados. TomaS
como uma corda.Experimente online!
fonte
Reduce
aqui. Bem feito!Haskell , 33 bytes
Experimente online!
fonte
PowerShell ,
9484 bytesExperimente online!
Recebe a entrada
$s
como uma sequência e$x
como uma matriz explícita. Em seguida, criamos com$a
base em$s
como uma lista.As matrizes no PowerShell são de tamanho fixo (para nossos propósitos aqui), portanto, precisamos usar o
[System.Collections.Generic.list]
tipo longo para obter acesso à.removeAt()
função, que faz exatamente o que diz na lata.Eu sacrifiquei 10 bytes para incluir duas
-join
instruções para tornar a saída bonita. O OP afirmou que a saída de uma lista de caracteres é boa, então eu poderia exibir apenas um$a
pouco-join$a
, mas isso é realmente feio na minha opinião.Economizou 10 bytes graças ao briantist.
fonte
System
e usar[Collections.Generic.list[char]]
. Para mantê-lo bonito sem sacrificar bytes, você pode colocar o último-join$a
no rodapé no TIO.$a.removeat($_)
para,$a|% r*t $_
.System
a partir do nome da classe. Infelizmente, o último-join$a
é necessário para o código, então não posso movê-lo para o rodapé.Python 2 , 50 bytes
Experimente online!
fonte
05AB1E ,
97 bytesExperimente online!
-2 graças à ideia de @ETHProductions.
fonte
x
estiver vazio.=sv""yǝ=
algo semelhante em vez de substituir por uma nova linha e remover a nova linha?õ
também funciona :)Retina , 58 bytes
Experimente online! Explicação:
Combine os índices (que nunca estão na primeira linha, portanto são sempre precedidos por uma nova linha).
Dê um espaço duplo nos índices, converta para unário e adicione 1 (porque os zeros são difíceis na Retina).
Altere repetidamente a primeira correspondência, que é sempre o valor atual da string.
Recupere o próximo índice em
$#1
.Capture a sequência, incluindo o
$#1
caractere th e uma nova linha.Capture separadamente o prefixo e o sufixo do
$#1
th caractere da string.Corresponder ao índice.
Substitua a sequência por ela mesma e o índice pelo prefixo e sufixo do
$#1
caractere th.fonte
Pitão, 8 bytes
Demonstração
Reduza, começando com a sequência e repetindo a lista de índices, na função de exclusão.
fonte
PowerShell ,
5458 bytesExperimente online!
Explicação
Recebe a entrada como uma matriz de caracteres (
[char[]]
).Percorre a gama de índices (
$x
) além de uma injectados primeiro elemento de-1
, em seguida, para cada um, atribui o elemento de corrente para$z
, inicializa$i
para0
, em seguida, percorre o conjunto de caracteres ($s
), retornando uma nova matriz de apenas os caracteres cujo índice ($i
) não é igual a (-ne
) o índice atual a ser excluído ($z
). Essa nova matriz é atribuída de volta a$s
, enquanto é retornada simultaneamente (isso acontece quando a atribuição é feita entre parênteses). O resultado retornado é-join
ed para formar uma sequência que é enviada ao pipeline.A injeção
-1
no início garante que a string original seja impressa, pois é o primeiro elemento e um índice nunca coincide-1
.fonte
q / kdb +,
2710 bytesSolução:
Exemplos:
Explicação:
Aproveita a funcionalidade de convergência
\
e também descarte_
.Notas:
Se não precisássemos imprimir o resultado original, seriam 2 bytes em
q
:fonte
Perl 5 , 55 bytes (54 + "
-l
")Experimente online!
fonte
-pa
) para 44 bytes:$_=<>;substr$_,shift@F,print,""while@F&&$_
&&$_
pois pode assumir que a entrada é válida (a lista de índices não pode ser maior que a sequência). Usar o valor de retornoprint
como o número de caracteres é bastante liso.MATL , 8 bytes
A indexação é baseada em 1.
Experimente online! Ou verifique os casos de teste .
Explicação
fonte
C # (.NET Core) ,
87877470 bytesExperimente online!
Apenas mostra que a recursão nem sempre é a melhor solução. Na verdade, é mais curto que minha resposta inválida original. Ainda imprime em STDOUT em vez de retornar, o que é necessário porque termina com um erro.
-4 bytes graças ao TheLethalCoder
fonte
Func
que retorna o outroFunc
,Action
,Predicate
, ...C (gcc) , 99 bytes
Experimente online!
Pega a sequência, a matriz e o comprimento da matriz.
fonte
Pitão , 10 bytes
As alterações de regra me salvaram 1 byte:
Experimente online!
Pitão , 11 bytes
Experimente online!
fonte
Gaia , 9 bytes
Eu realmente deveria adicionar uma função "excluir no índice" ...
Experimente online!
Explicação
fonte
V , 12 bytes
Experimente online!
Isso é indexado em 1, a entrada é como:
Explicação
fonte
x
?1,2,3,
. Lista vazia seria nada, Singleton seria1,
Swift 3 , 80 bytes
Experimente online!
fonte
Pitão, 8 bytes
Suíte de teste!
explicação
fonte
Python 2 , 54
Experimente Online
fonte
APL,
313028 bytesExperimente online!
fonte
C# (Mono), 85 bytes
Try it online!
fonte