Étant donné une chaîne S
et une liste d'index X
, modifiez S
en supprimant l'élément à chaque index de S
tout en utilisant ce résultat comme nouvelle valeur de S
.
Par exemple, étant donné S = 'codegolf'
et 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
Votre tâche consiste à effectuer ce processus, à collecter les valeurs S
après chaque opération et à afficher chacune sur une nouvelle ligne dans l'ordre. La réponse finale serait
S = 'codegolf'
X = [1, 4, 4, 0, 2]
Answer:
codegolf
cdegolf
cdeglf
cdegf
degf
def
- C'est du code-golf, alors faites votre code le plus court possible.
- Vous pouvez supposer que les valeurs de
X
sont toujours des indices valides pourS
, et vous pouvez utiliser une indexation basée sur 0 ou basée sur 1. - La chaîne ne contiendra que
[A-Za-z0-9]
- Soit
S
oux
peut être vide. SiS
est vide, il s'ensuit qu'ilx
doit également être vide. - Vous pouvez également prendre
S
une liste de caractères au lieu d'une chaîne. - Vous pouvez soit imprimer la sortie, soit renvoyer une liste de chaînes. Les espaces blancs avant et arrière sont acceptables. Toute forme de sortie est correcte tant qu'elle est facilement lisible.
Cas de test
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
miles
la source
la source
S
comme liste de personnages?len(x)+1
chaînes.Réponses:
Haskell,
3833 octetsSimple: prenez à plusieurs reprises les éléments avant et après l'index i, rejoignez-les et collectez les résultats.
Essayez-le en ligne!
Modifier: @Lynn a enregistré 5 octets. Merci!
la source
s#i=take i s++drop(i+1)s
est en fait plus court, économisant 5 octets.q=
^^;JavaScript (ES6),
5750484542 octetsPrend la chaîne comme un tableau de caractères individuels, génère un tableau contenant une chaîne séparée par des virgules de l'original suivie d'un sous-tableau de chaînes séparées par des virgules pour chaque étape.
Essaye-le
Explication
Nous prenons les deux entrées via des paramètres
s
(le tableau de chaînes) eta
(le tableau d'entiers) dans la syntaxe de curry, ce qui signifie que nous appelons la fonction avecf(s)(a)
.Nous construisons un nouveau tableau et commençons avec l'original
s
. Cependant, comme lasplice
méthode que nous utiliserons plus tard modifie un tableau, nous devons en faire une copie, ce que nous pouvons faire en le convertissant en chaîne (ajoutez simplement une chaîne vide).Pour générer le sous-
map
tableau , nous sur le tableau entiera
(oùx
est l'entier actuel) et, pour chaque élément, noussplice
1 élément à partirs
, en commençant à l'indexx
. Nous retournons le modifiés
, en faisant à nouveau une copie en le convertissant en chaîne.la source
s=>a=>[s+'',...a.map(x=>s.splice(x,1)&&s+'')]
Japt , 6 octets
Testez-le en ligne!
Explication
Alternativement:
Cela fonctionne car la suppression de l'élément à l'index
"
ne fait rien et renvoie donc la chaîne d'origine.la source
Décortiquer , 7 octets
Prend d'abord la chaîne, puis les indices (basés sur 1). Essayez-le en ligne!
Explication
la source
x
?Python 2 , 43 octets
Essayez-le en ligne!
Donc, cela s'imprime sous forme de listes de caractères.
la source
for i in i+[0]
?+[0]
, je parlefor i in i
.for k in i
est équivalent .Python 2 , 47 octets
Cela pourrait être raccourci à 43 octets , comme l'a souligné @LuisMendo, mais c'est déjà la solution de @ ErktheOutgolfer.
Essayez-le en ligne!
la source
`a`[2::5]
au lieu de cela''.join(a)
repr
et le fractionnement de chaînes, fonctionne bien pour transformer une liste de caractères en chaîne,`a`[1::3]
peut également être utilisé avec une liste de chiffres::5
marche ici: PJava 8, 78 octets
Ceci est un lambda au curry, de
int[]
à un consommateur deStringBuilder
ouStringBuffer
. La sortie est imprimée en sortie standard.Essayez-le en ligne
la source
Stream
en entrée et obtenu de très belles réponses. En fait, presque toutes les langues de golf utilisent des flux équivalents en interne. Donc, en sélectionnant votre entrée, vous nivelez juste un peu. +1 néanmoins05AB1E , 11 octets
Essayez-le en ligne!
la source
Any form of output is fine as long as it is easily readable
Mathematica, 70 octets
Essayez-le en ligne!
la source
R ,
4632 octetsEssayez-le en ligne!
Prend la saisie sous forme de liste de caractères et
X
est basé sur 1.Reduce
est l'équivalent R defold
, la fonction dans ce cas est[
qui est un sous-ensemble. Itère plus-X
car l'indexation négative dans R supprime l'élément etinit
est définie surS
, avecaccum=TRUE
ainsi nous accumulons les résultats intermédiaires.R , 80 octets
Fonction à 2 arguments, prend
X
1 indexé. PrendS
comme une chaîne.Essayez-le en ligne!
la source
Reduce
ici. Bien joué!Haskell , 33 octets
Essayez-le en ligne!
la source
PowerShell ,
9484 octetsEssayez-le en ligne!
Prend l'entrée
$s
comme une chaîne et$x
comme un tableau explicite. Nous créons ensuite$a
sur la base$s
d'une liste.Les tableaux dans PowerShell sont de taille fixe (pour nos besoins ici), nous devons donc utiliser le
[System.Collections.Generic.list]
type long afin d'accéder à la.removeAt()
fonction, qui fait exactement ce qu'elle dit sur l'étain.J'ai sacrifié 10 octets pour inclure deux
-join
instructions pour rendre la sortie jolie. OP a déclaré que la sortie d'une liste de caractères est très bien, donc je pourrais sortir juste$a
plutôt que-join$a
, mais c'est vraiment moche à mon avis.10 octets enregistrés grâce à briantist.
la source
System
et simplement utiliser[Collections.Generic.list[char]]
. Pour le garder joli sans sacrifier les octets, vous pouvez mettre le dernier-join$a
dans le pied de page dans TIO.$a.removeat($_)
à,$a|% r*t $_
.System
du nom de classe. Malheureusement, le dernier-join$a
est nécessaire pour le code, donc je ne peux pas le déplacer vers le pied de page.Python 2 , 50 octets
Essayez-le en ligne!
la source
05AB1E ,
97 octetsEssayez-le en ligne!
-2 grâce à l'idée de @ETHProductions.
la source
x
est vide.=sv""yǝ=
ou quelque chose de similaire au lieu de remplacer par une nouvelle ligne, puis de supprimer la nouvelle ligne?õ
fonctionne aussi :)Rétine , 58 octets
Essayez-le en ligne! Explication:
Faites correspondre les indices (qui ne sont jamais sur la première ligne, donc sont toujours précédés d'une nouvelle ligne).
Double-espacez les indices, convertissez-les en unaire et ajoutez 1 (car les zéros sont durs dans la rétine).
Modifiez à plusieurs reprises la première correspondance, qui est toujours la valeur actuelle de la chaîne.
Récupérez l'index suivant dans
$#1
.Capturez la chaîne, y compris le
$#1
e caractère et une nouvelle ligne.Capturez séparément le préfixe et le suffixe du
$#1
e caractère de la chaîne.Faites correspondre l'index.
Remplacez la chaîne par elle-même et l'index par le préfixe et le suffixe du
$#1
e caractère.la source
Pyth, 8 octets
Manifestation
Réduisez, en commençant par la chaîne et en parcourant la liste des indices, sur la fonction de suppression.
la source
PowerShell ,
5458 octetsEssayez-le en ligne!
Explication
Prend l'entrée comme un tableau de caractères (
[char[]]
).Itère à travers le tableau d'indices (
$x
) plus un premier élément injecté de-1
, puis pour chacun, attribue l'élément actuel à$z
, initialise$i
à0
, puis itère à travers le tableau de caractères ($s
), renvoyant un nouveau tableau composé uniquement des caractères dont l'index ($i
) n'est pas égal (-ne
) à l'indice actuel à exclure ($z
). Ce nouveau tableau est affecté à$s
, tout en étant retourné simultanément (cela se produit lorsque l'affectation est effectuée entre parenthèses). Ce résultat renvoyé est-join
édité pour former une chaîne qui est envoyée au pipeline.L'injection
-1
au début garantit que la chaîne d'origine sera imprimée, car il s'agit du premier élément et un index ne correspondra jamais-1
.la source
q / kdb +,
2710 octetsSolution:
Exemples:
Explication:
Profite de la fonctionnalité de convergence
\
ainsi que de la suppression_
.Remarques:
Si nous n'avions pas besoin d'imprimer le résultat d'origine, ce serait 2 octets dans
q
:la source
Perl 5 , 55 octets (54 + "
-l
")Essayez-le en ligne!
la source
-pa
) pour 44 octets:$_=<>;substr$_,shift@F,print,""while@F&&$_
&&$_
car vous pouvez supposer que l'entrée est valide (la liste des index ne peut pas être plus longue que la chaîne). L'utilisation de la valeur de retour deprint
as comme nombre de caractères est assez simple.MATL, 8 bytes
Indexing is 1-based.
Try it online! Or verify the test cases.
Explanation
la source
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
la source
Func
that returns the otherFunc
,Action
,Predicate
,...C (gcc), 99 bytes
Try it online!
Takes the string, array, and the length of the array.
la source
Pyth, 10 bytes
Rule changes saved me 1 byte:
Try it online!
Pyth, 11 bytes
Try it online!
la source
Gaia, 9 bytes
I should really add a "delete at index" function...
Try it online!
Explanation
la source
V, 12 bytes
Try it online!
This is 1-indexed, input is like:
Explanation
la source
x
?1,2,3,
. Empty list would be nothing, Singleton would be1,
Swift 3, 80 bytes
Try it online!
la source
Pyth, 8 bytes
Test suite!
explanation
la source
Python 2, 54
Try It Online
la source
APL,
313028 bytesTry it online!
la source
C# (Mono), 85 bytes
Try it online!
la source