Wenn Sie eine Zeichenfolge S
und eine Liste von Indizes angeben X
, ändern Sie diese, S
indem Sie das Element an jedem Index entfernen S
und dieses Ergebnis als neuen Wert von verwenden S
.
Zum Beispiel gegeben S = 'codegolf'
und 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
Ihre Aufgabe ist es, diesen Prozess auszuführen, die Werte S
nach jeder Operation zu erfassen und diese nacheinander in einer neuen Zeile anzuzeigen. Die endgültige Antwort wäre
S = 'codegolf'
X = [1, 4, 4, 0, 2]
Answer:
codegolf
cdegolf
cdeglf
cdegf
degf
def
- Das ist Code-Golf, also mach deinen Code so kurz wie möglich.
- Sie können davon ausgehen, dass die Werte in
X
immer gültige Indizes für sindS
, und Sie können entweder eine 0-basierte oder eine 1-basierte Indexierung verwenden. - Die Zeichenfolge enthält nur
[A-Za-z0-9]
- Entweder
S
oderx
leer. WennS
leer ist,x
muss das auch leer sein. - Sie können
S
anstelle einer Zeichenfolge auch eine Liste von Zeichen verwenden. - Sie können entweder die Ausgabe drucken oder eine Liste von Zeichenfolgen zurückgeben. Führende und nachfolgende Leerzeichen sind zulässig. Jede Form der Ausgabe ist in Ordnung, solange sie gut lesbar ist.
Testfälle
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
Meilen
quelle
quelle
S
als Liste von Zeichen nehmen?len(x)+1
Zeichenfolgen enthalten .Antworten:
Haskell,
3833 BytesEinfach: Nimm die Elemente vor und nach dem Index i wiederholt, füge sie wieder zusammen und sammle die Ergebnisse.
Probieren Sie es online!
Edit: @Lynn hat 5 Bytes gespeichert. Vielen Dank!
quelle
s#i=take i s++drop(i+1)s
ist eigentlich kürzer und spart 5 Bytes.q=
^^;JavaScript (ES6),
5750484542 ByteNimmt die Zeichenfolge als Array einzelner Zeichen und gibt ein Array aus, das eine durch Kommas getrennte Zeichenfolge des Originals gefolgt von einer Unteranordnung von durch Kommas getrennten Zeichenfolgen für jeden Schritt enthält.
Probier es aus
Erläuterung
Wir nehmen die beiden Eingaben über Parameter
s
(das String-Array) unda
(das Integer-Array) in die aktuelle Syntax, dh wir rufen die Funktion mit auff(s)(a)
.Wir bauen ein neues Array und beginnen es mit dem Original
s
. Da diesplice
Methode, die wir später verwenden werden, ein Array ändert, müssen wir eine Kopie davon erstellen, indem wir es in eine Zeichenfolge konvertieren (einfach eine leere Zeichenfolge anhängen).Um das Subarray zu generieren, bewegen wir uns
map
über das Integer-Arraya
(wobeix
die aktuelle Ganzzahl ist) und für jedes Elementsplice
1 Element ab dems
Indexx
. Wir geben das Geänderte zurücks
und machen erneut eine Kopie davon, indem wir es in einen String konvertieren.quelle
s=>a=>[s+'',...a.map(x=>s.splice(x,1)&&s+'')]
Japt , 6 Bytes
Online testen!
Erläuterung
Alternative:
Dies funktioniert, da das Entfernen des Elements am Index
"
nichts bewirkt und somit die ursprüngliche Zeichenfolge zurückgibt.quelle
Schale , 7 Bytes
Nimmt zuerst den String und dann (1-basierte) Indizes. Probieren Sie es online!
Erläuterung
quelle
x
?Python 2 , 43 Bytes
Probieren Sie es online!
Dies wird also als Liste von Zeichen gedruckt.
quelle
for i in i+[0]
?+[0]
, ich spreche davonfor i in i
.for k in i
ist gleichwertig .Python 2 , 47 Bytes
Dies könnte auf 43 Bytes verkürzt werden , wie @ LuisMendo betonte, aber das ist bereits die Lösung von @ ErktheOutgolfer.
Probieren Sie es online!
quelle
`a`[2::5]
stattdessen''.join(a)
repr
und Aufteilen von Zeichenfolgen, funktioniert gut, um eine Liste von Zeichen in eine Zeichenfolge umzuwandeln,`a`[1::3]
kann auch mit einer Liste von Ziffern verwendet werden::5
hier funktioniert: PJava 8, 78 Bytes
Dies ist ein Curry-Lambda, von
int[]
einem Verbraucher vonStringBuilder
oderStringBuffer
. Die Ausgabe wird standardmäßig ausgedruckt.Probieren Sie es online
quelle
Stream
s als Input genommen und sehr nette Antworten bekommen. Tatsächlich verwenden fast alle Golfsprachen intern äquivalente Streams. Wenn Sie also Ihren Eingang auswählen, nivellieren Sie einfach einen Tick. +1 dennoch05AB1E , 11 Bytes
Probieren Sie es online!
quelle
Any form of output is fine as long as it is easily readable
Mathematica, 70 Bytes
Probieren Sie es online!
quelle
R ,
4632 BytesProbieren Sie es online!
Nimmt Eingaben als Liste von Zeichen und
X
ist 1-basiert.Reduce
ist das R-Äquivalent vonfold
, die Funktion ist in diesem Fall[
die Teilmenge. Iteriert über,-X
weil die negative Indizierung in R das Element entfernt und auf gesetztinit
istS
,accum=TRUE
sodass wir die Zwischenergebnisse akkumulieren.R , 80 Bytes
Funktion mit 2 Argumenten,
X
1-indiziert. NimmtS
als Zeichenfolge.Probieren Sie es online!
quelle
Reduce
. Gut gemacht!Haskell , 33 Bytes
Probieren Sie es online!
quelle
PowerShell ,
9484 ByteProbieren Sie es online!
Übernimmt Eingaben
$s
als Zeichenfolge und$x
als explizites Array. Wir erstellen dann$a
basierend auf$s
als Liste.Arrays in PowerShell haben eine feste Größe (für unsere Zwecke hier), daher müssen wir den langen
[System.Collections.Generic.list]
Typ verwenden, um Zugriff auf die.removeAt()
Funktion zu erhalten, die genau das tut, was sie verspricht.Ich habe 10 Bytes geopfert, um zwei
-join
Anweisungen einzuschließen, um die Ausgabe hübsch zu machen. OP hat festgestellt, dass das Ausgeben einer Liste von Zeichen in Ordnung ist, also könnte ich nur$a
stattdessen ausgeben-join$a
, aber das ist meiner Meinung nach wirklich hässlich.Dank briantist 10 Bytes gespart.
quelle
System
einfach aufhören und verwenden[Collections.Generic.list[char]]
. Um es schön zu halten, ohne Bytes zu opfern, können Sie das Letzte-join$a
in der Fußzeile in TIO einfügen.$a.removeat($_)
an,$a|% r*t $_
.System
aus dem Klassennamen zu entfernen . Leider ist der letzte-join$a
Code für den Code erforderlich, sodass ich ihn nicht in die Fußzeile verschieben kann.Python 2 , 50 Bytes
Probieren Sie es online!
quelle
05AB1E ,
97 BytesProbieren Sie es online!
-2 dank der Idee von @ETHProductions.
quelle
x
leer ist.=sv""yǝ=
etwas Ähnliches tun , anstatt es durch eine neue Zeile zu ersetzen und dann die neue Zeile zu entfernen?õ
funktioniert auch :)Netzhaut , 58 Bytes
Probieren Sie es online! Erläuterung:
Passen Sie die Indizes an (die sich nie in der ersten Zeile befinden, also immer mit einer neuen Zeile voran).
Verdoppeln Sie die Indizes, konvertieren Sie sie in Unary und addieren Sie 1 (da in Retina Nullen hart sind).
Ändern Sie wiederholt die erste Übereinstimmung, bei der es sich immer um den aktuellen Wert der Zeichenfolge handelt.
Rufen Sie den nächsten Index in ab
$#1
.Erfassen Sie die Zeichenfolge einschließlich des
$#1
achten Zeichens und einer neuen Zeile.Erfassen Sie das Präfix und das Suffix des
$#1
th-Zeichens der Zeichenfolge separat .Passen Sie den Index an.
Ersetzen Sie die Zeichenfolge durch sich selbst und den Index durch das Präfix und Suffix des
$#1
th-Zeichens.quelle
Pyth, 8 Bytes
Demonstration
Reduzieren Sie die Löschfunktion, indem Sie mit der Zeichenfolge beginnen und die Liste der Indizes durchlaufen.
quelle
Power ,
5458 BytesProbieren Sie es online!
Erläuterung
Übernimmt die Eingabe als Zeichen-Array (
[char[]]
).Durchläuft das Array von Indizes (
$x
) plus ein eingefügtes erstes Element von,-1
weist dann für jedes Element das aktuelle Element zu$z
, initialisiert$i
es0
und durchläuft dann das Array von Zeichen ($s
), wobei ein neues Array nur der Zeichen zurückgegeben wird, deren Index ($i
) entspricht nicht (-ne
) dem aktuellen Index zum Ausschließen ($z
). Dieses neue Array wird zurück zugewiesen$s
und gleichzeitig zurückgegeben (dies geschieht, wenn die Zuweisung in Klammern erfolgt). Das zurückgegebene Ergebnis wird-join
zu einer Zeichenfolge verarbeitet, die an die Pipeline gesendet wird.Durch das Einspritzen
-1
am Anfang wird sichergestellt, dass die ursprüngliche Zeichenfolge gedruckt wird, da dies das erste Element ist und ein Index niemals übereinstimmt-1
.quelle
q / kdb +,
2710 BytesLösung:
Beispiele:
Erläuterung:
Nutzt die Converge- Funktionalität
\
ebenso wie Drop_
.Anmerkungen:
Wenn wir das ursprüngliche Ergebnis nicht drucken müssten, wären dies 2 Byte in
q
:quelle
Perl 5 , 55 Bytes (54 + "
-l
")Probieren Sie es online!
quelle
-pa
) für 44 Bytes:$_=<>;substr$_,shift@F,print,""while@F&&$_
&&$_
da Sie davon ausgehen können, dass die Eingabe gültig ist (die Liste der Indizes kann nicht länger als die Zeichenfolge sein). Die Verwendung des Rückgabewerts vonprint
as als Anzahl der Zeichen ist recht raffiniert.MATL , 8 Bytes
Die Indizierung basiert auf 1.
Probieren Sie es online! Oder überprüfen Sie die Testfälle .
Erläuterung
quelle
C # (.NET Core) ,
87877470 BytesProbieren Sie es online!
Nur um zu zeigen, dass Rekursion nicht immer die beste Lösung ist. Dies ist tatsächlich kürzer als meine ursprüngliche ungültige Antwort. Druckt weiterhin auf STDOUT, anstatt zurückzukehren. Dies ist erforderlich, da dies mit einem Fehler endet.
-4 Bytes dank TheLethalCoder
quelle
Func
dass die Rendite der andereFunc
,Action
,Predicate
, ...C (gcc) , 99 Bytes
Probieren Sie es online!
Nimmt den String, das Array und die Länge des Arrays.
quelle
Pyth , 10 Bytes
Regeländerungen haben mir 1 Byte erspart:
Probieren Sie es online!
Pyth , 11 Bytes
Probieren Sie es online!
quelle
Gaia , 9 Bytes
Ich sollte wirklich eine "Löschen am Index" -Funktion hinzufügen ...
Probieren Sie es online!
Erläuterung
quelle
V , 12 Bytes
Probieren Sie es online!
Dies ist 1-indiziert, die Eingabe ist wie folgt:
Erläuterung
quelle
x
?1,2,3,
. Leere Liste wäre nichts, Singleton wäre1,
Schnelle 3 , 80 Bytes
Probieren Sie es online!
quelle
Pyth, 8 Bytes
Testsuite!
Erläuterung
quelle
Python 2 , 54
Probieren Sie es online
quelle
APL,
313028 BytesProbieren Sie es online!
quelle
C # (Mono) , 85 Bytes
Probieren Sie es online!
quelle