Herausforderung
Schneiden Sie bei einer Zeichenfolge, die eine Schnittregel und eine andere Zeichenfolge beschreibt, Teile aus der zweiten Zeichenfolge mit der von der ersten Zeichenfolge beschriebenen Regel aus.
Beide Zeichenfolgen bestehen aus Buchstaben a-z
oder A-Z
, je nachdem, welche Sie auswählen (sie müssen nicht auf die gleiche Weise dargestellt werden). Die Art und Weise, wie die zweite Zeichenfolge geändert werden soll, ist nachfolgend beschrieben:
Algorithmus
Nehmen Sie die erste Zeichenfolge und stellen Sie sich vor, Sie füllen die Lücken zwischen nicht benachbarten (aufsteigenden) Buchstaben mit =
; zum Beispiel abcfg
=> abc==fg
. Richten Sie dann die beiden Zeichenfolgen aus und geben Sie alle Zeichen aus der ersten Zeichenfolge zurück, die nicht über einem Gleichheitszeichen liegen. Zum Beispiel gegeben abcfg
und qrstuvw
als Eingaben:
qrstuvw - Modify
abc==fg - Modifier
qrs--vw -> qrsvw
Wenn der Modifikator nach dem Ausfüllen mit Gleichheitszeichen kürzer ist, sollten alle nachfolgenden Zeichen in der zweiten Zeichenfolge enthalten sein. Wenn der Modifikator länger ist, werden die nachfolgenden Zeichen ignoriert.
Es ist nicht garantiert, dass der Modifikator sortiert ist.
Testfälle
abcfg, qrstuvw -> qrsvw
abqrs, qwertyuiopasdfghjklzxcvbnm -> qwjklzxcvbnm
za, qr -> qr
azazaz, qwertyuioplkjhgfdsazxcvbnmnbvcxzasdfghjklpoiuytrewq -> qmn
Referenzimplementierung (zum Generieren von Testfällen) -> TIO
Regeln
- Es gelten Standardlücken
- Sie können Eingaben als zwei Zeichenfolgen, zwei Listen von Zeichen, eine Matrix von Zeichen usw. annehmen (jedes andere vernünftige Format ist akzeptabel).
- Sie können eine Zeichenfolge oder eine Liste von Zeichen (oder ein anderes Standardformat für Zeichenfolgen) ausgeben.
- Dies ist Codegolf , daher wird die kürzeste Antwort in Bytes in jeder Sprache zum Gewinner ihrer Sprache erklärt. Es wird keine Antwort akzeptiert.
- Beide Zeichenfolgen können leer sein.
Viel Spaß beim Golfen!
Inspiriert von Kevin Cruijssens jüngsten zwei Herausforderungen: "Dort habe ich es repariert (mit Klebeband / Seil )."
There, I blew it up (with a segfault)
Antworten:
JavaScript (ES6),
81 bis80 ByteÜbernimmt Eingaben in der Currying-Syntax
(modify)(modifier)
.Probieren Sie es online!
Kommentiert
quelle
Python 3 , 99 Bytes
Probieren Sie es online!
quelle
05AB1E ,
2017 BytesProbieren Sie es online!
Berechnet den ASCII-Abstand zwischen den einzelnen Zeichen, wobei so viele Leerzeichen vorangestellt werden, wenn dies positiv ist. Ein negativer Abstand führt dazu, dass gemäß Spezifikation 0 Leerzeichen angehängt werden. Danach schiebe ich alle Zeichen an die gleichen Indizes in Zeichenfolge 2 wie die Leerzeichen in der ersten manipulierten Zeichenfolge.
90% sicher, dass ich weitere 2-3 Bytes verlieren kann, indem ich keine Leerzeichen verwende, sondern das Zeichen auf Index N drücke. Ich arbeite gerade noch an dieser Variante ... Was meine "bessere Idee" war:
05AB1E , 18 Bytes
Probieren Sie es online!
Ich habe das Gefühl, ich vermisse etwas, wenn Sie Verbesserungen sehen
ε1‚Z}
,ʒ²g‹}
oder0¸ì
lmk ...Ç¥ε1‚Z}ηO0¸ìè
war 13, aber es wickelt, wennn > |input_2|
maninput_2[n%|input_2|]
...quelle
IgÅ1«
, aber vielleicht gibt es einen besseren Weg?Stax , 15 Bytes
Führen Sie es aus und debuggen Sie es
Dies ist die ASCII-Darstellung.
quelle
╟╣i
Jelly , 14 Bytes
Ein dyadischer Link, der den Modifikator als Liste von Zeichen auf der linken Seite und die Liste der zu ändernden Zeichen auf der rechten Seite akzeptiert und eine Liste von Zeichen zurückgibt.
Probieren Sie es online!
Wie?
quelle
¬
Trick in meiner Antwort benutzt. :) (Wir haben technisch den gleichen Algorithmus, aber Sie haben kürzer gemacht, gut gemacht!)¬
, habe es aber vergessen, als ich einen Handy-Fatfinger-Post eines noch nicht fertiggestellten 13-Byte-Versuchs machte.JavaScript (ES6), 79 Byte
Verwendet denselben Algorithmus zum Berechnen des Abstands zwischen Buchstaben wie meine letzte Antwort .
Testfälle:
Code-Snippet anzeigen
quelle
APL (Dyalog Classic) ,
353432 BytesProbieren Sie es online!
quelle
K (ngn / k) ,
272425 BytesProbieren Sie es online!
quelle
Haskell , 49 Bytes
Probieren Sie es online!
quelle
Perl 5 , 45 Bytes
Probieren Sie es online!
quelle
Ruby ,
6864 BytesProbieren Sie es online!
quelle
Kohle ,
2928 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Aufgrund meiner Antwort auf Dort habe ich es mit Klebeband behoben. Erläuterung:
Hinweis: Dies sollte 28 Byte sein, ist jedochAnd
zum Zeitpunkt des Schreibens fehlerhaft.quelle
Java 8, 117 Bytes
Erläuterung:
Probieren Sie es online aus.
quelle