Dada una cadena S
y una lista de índices X
, modifique S
eliminando el elemento en cada índice de S
mientras usa ese resultado como el nuevo valor de S
.
Por ejemplo, dado S = 'codegolf'
y 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
Su tarea es realizar este proceso, recopilar los valores de S
después de cada operación y mostrarlos en una nueva línea en orden. La respuesta final sería
S = 'codegolf'
X = [1, 4, 4, 0, 2]
Answer:
codegolf
cdegolf
cdeglf
cdegf
degf
def
- Este es el código de golf, así que haga su código lo más corto posible.
- Puede suponer que los valores en
X
son siempre índices válidos paraS
, y puede usar indexación basada en 0 o en 1. - La cadena solo contendrá
[A-Za-z0-9]
- Cualquiera
S
ox
puede por vacío. SiS
está vacío, se deduce quex
también debe estar vacío. - También puede tomar
S
como una lista de caracteres en lugar de una cadena. - Puede imprimir el resultado o devolver una lista de cadenas. Los espacios en blanco iniciales y finales son aceptables. Cualquier forma de salida está bien siempre que sea fácil de leer.
Casos de prueba
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
millas
fuente
fuente
S
como una lista de personajes?len(x)+1
cadenas.Respuestas:
Haskell,
3833 bytesDirecto: tome repetidamente los elementos antes y después del índice i, vuelva a unirlos y recopile los resultados.
Pruébalo en línea!
Editar: @Lynn guardó 5 bytes. ¡Gracias!
fuente
s#i=take i s++drop(i+1)s
en realidad es más corto, ahorrando 5 bytes.q=
allí ^^;JavaScript (ES6),
5750484542 bytesToma la cadena como una matriz de caracteres individuales, genera una matriz que contiene una cadena separada por comas del original, seguida de una submatriz de cadenas separadas por comas para cada paso.
Pruébalo
Explicación
Tomamos las dos entradas a través de parámetros
s
(la matriz de cadenas) ya
(la matriz de enteros) en sintaxis de curry, lo que significa que llamamos a la función conf(s)(a)
.Construimos una nueva matriz y comenzamos con la original
s
. Sin embargo, como elsplice
método que usaremos más adelante modifica una matriz, necesitamos hacer una copia de ella, lo que podemos hacer convirtiéndola en una cadena (simplemente agregue una cadena vacía).Para generar la submatriz, pasamos por
map
encima de la matriz de enterosa
(dondex
es el entero actual) y, para cada elemento, tomamossplice
1 elemento desdes
, comenzando en el índicex
. Devolvemos el modificados
, nuevamente haciendo una copia convirtiéndolo en una cadena.fuente
s=>a=>[s+'',...a.map(x=>s.splice(x,1)&&s+'')]
Japt , 6 bytes
¡Pruébelo en línea!
Explicación
Alternativamente:
Esto funciona porque eliminar el elemento en el índice
"
no hace nada y, por lo tanto, devuelve la cadena original.fuente
Cáscara , 7 bytes
Primero toma la cadena, luego los índices (basados en 1). Pruébalo en línea!
Explicación
fuente
x
?Python 2 , 43 bytes
Pruébalo en línea!
Entonces esto se imprime como listas de caracteres.
fuente
for i in i+[0]
?+[0]
, estoy hablandofor i in i
.for k in i
es equivalente .Python 2 , 47 bytes
Esto podría acortarse a 43 bytes , como señaló @LuisMendo, pero esa ya es la solución de @ ErktheOutgolfer.
Pruébalo en línea!
fuente
`a`[2::5]
en cambio''.join(a)
repr
y la división de cadenas, funciona bien para convertir una lista de caracteres en una cadena,`a`[1::3]
también se puede usar con una lista de dígitos::5
funciona aquí: PJava 8, 78 bytes
Esta es una lambda al curry, de
int[]
a un consumidor deStringBuilder
oStringBuffer
. La salida se imprime a la salida estándar.Pruébalo en línea
fuente
Stream
s como entrada y obtuve respuestas muy agradables. En realidad, casi todos los idiomas de golf usan flujos equivalentes internamente. Entonces, al seleccionar su entrada, simplemente nivela un poco. +1 no obstante05AB1E , 11 bytes
Pruébalo en línea!
fuente
Any form of output is fine as long as it is easily readable
Mathematica, 70 bytes
Pruébalo en línea!
fuente
R ,
4632 bytesPruébalo en línea!
Toma la entrada como una lista de caracteres y
X
está basada en 1.Reduce
es el equivalente R defold
, la función en este caso es[
cuál es el subconjunto. Se repite-X
porque la indexación negativa en R elimina el elemento yinit
se establece enS
, conaccum=TRUE
lo que acumulamos los resultados intermedios.R , 80 bytes
2-argument function, takes
X
1-indexed. TakesS
as a string.Try it online!
fuente
Reduce
here. Well done!Haskell, 33 bytes
Try it online!
fuente
PowerShell,
9484 bytesTry it online!
Takes input
$s
as a string and$x
as an explicit array. We then create$a
based on$s
as a list.Arrays in PowerShell are fixed size (for our purposes here), so we need to use the lengthy
[System.Collections.Generic.list]
type in order to get access to the.removeAt()
function, which does exactly what it says on the tin.I sacrificed 10 bytes to include two
-join
statements to make the output pretty. OP has stated that outputting a list of chars is fine, so I could output just$a
rather than-join$a
, but that's really ugly in my opinion.Saved 10 bytes thanks to briantist.
fuente
System
and just use[Collections.Generic.list[char]]
. To keep it pretty without sacrificing bytes, you can put the last-join$a
in the footer in TIO.$a.removeat($_)
to,$a|% r*t $_
.System
from the class name. Sadly the last-join$a
is necessary for the code, so I can't move it to the footer.Python 2, 50 bytes
Try it online!
fuente
05AB1E,
97 bytesTry it online!
-2 thanks to idea from @ETHProductions.
fuente
x
is empty.=sv""yǝ=
or something similar instead of replacing with a newline and then removing the newline?õ
also works :)Retina, 58 bytes
Try it online! Explanation:
Match the indices (which are never on the first line, so are always preceded by a newline).
Double-space the indices, convert to unary, and add 1 (because zeros are hard in Retina).
Repeatedly change the first match, which is always the current value of the string.
Retrieve the next index in
$#1
.Capture the string, including the
$#1
th character and one newline.Separately capture the prefix and suffix of the
$#1
th character of the string.Match the index.
Replace the string with itself and the index with the prefix and suffix of the
$#1
th character.fuente
Pyth, 8 bytes
Demonstration
Reduce, starting with the string and iterating over the list of indices, on the deletion function.
fuente
PowerShell,
5458 bytesTry it online!
Explanation
Takes input as a char array (
[char[]]
).Iterates through the array of indices (
$x
) plus an injected first element of-1
, then for each one, assigns the current element to$z
, initializes$i
to0
, then iterates through the array of characters ($s
), returning a new array of only the characters whose index ($i
) does not equal (-ne
) the current index to exclude ($z
). This new array is assigned back to$s
, while simultaneously being returned (this happens when the assignment is done in parentheses). That returned result is-join
ed to form a string which is sent out to the pipeline.Injecting
-1
at the beginning ensures that the original string will be printed, since it's the first element and an index will never match-1
.fuente
q/kdb+,
2710 bytesSolution:
Examples:
Explanation:
Takes advantage of the converge functionality
\
as well as drop_
.Notes:
If we didn't need to print the original result, this would be 2 bytes in
q
:fuente
Perl 5, 55 bytes (54 + "
-l
")Try it online!
fuente
-pa
) for 44 bytes:$_=<>;substr$_,shift@F,print,""while@F&&$_
&&$_
since you can assume the input is valid (the list of indices can't be longer than the string). Using the return value ofprint
as the number of characters is quite slick.MATL, 8 bytes
Indexing is 1-based.
Try it online! Or verify the test cases.
Explanation
fuente
C# (.NET Core),
87877470 bytesTry it online!
Just goes to show that recursion isn't always the best solution. This is actually shorter than my original invalid answer. Still prints to STDOUT rather than returning, which is necessary because it ends with an error.
-4 bytes thanks to TheLethalCoder
fuente
Func
that returns the otherFunc
,Action
,Predicate
,...C (gcc), 99 bytes
Try it online!
Takes the string, array, and the length of the array.
fuente
Pyth, 10 bytes
Rule changes saved me 1 byte:
Try it online!
Pyth, 11 bytes
Try it online!
fuente
Gaia, 9 bytes
I should really add a "delete at index" function...
Try it online!
Explanation
fuente
V, 12 bytes
Try it online!
This is 1-indexed, input is like:
Explanation
fuente
x
?1,2,3,
. Empty list would be nothing, Singleton would be1,
Swift 3, 80 bytes
Try it online!
fuente
Pyth, 8 bytes
Test suite!
explanation
fuente
Python 2, 54
Try It Online
fuente
APL,
313028 bytesTry it online!
fuente
C# (Mono), 85 bytes
Try it online!
fuente