Défi
Étant donné une chaîne décrivant une règle de coupe et une autre chaîne, coupez des parties de la deuxième chaîne en utilisant la règle décrite par la première chaîne.
Les deux chaînes seront constituées de lettres a-z
ou A-Z
, selon celle que vous choisissez (elles ne doivent pas être représentées de la même manière). La façon dont la deuxième chaîne doit être modifiée est décrite ci-dessous:
Algorithme
Prenez la première chaîne et imaginez remplir les espaces entre les lettres non adjacentes (croissantes) avec =
; par exemple, abcfg
=> abc==fg
. Ensuite, alignez les deux chaînes et renvoyez tous les caractères de la première chaîne qui ne sont pas au-dessus d'un signe égal. Par exemple, étant donné abcfg
et qrstuvw
en entrée:
qrstuvw - Modify
abc==fg - Modifier
qrs--vw -> qrsvw
Si le modificateur est plus court après avoir été rempli de signes égaux, tous les caractères de fin de la deuxième chaîne doivent être inclus. Si le modificateur est plus long, les caractères de fin sont ignorés.
Le modificateur n'est pas garanti d'être trié.
Cas de test
abcfg, qrstuvw -> qrsvw
abqrs, qwertyuiopasdfghjklzxcvbnm -> qwjklzxcvbnm
za, qr -> qr
azazaz, qwertyuioplkjhgfdsazxcvbnmnbvcxzasdfghjklpoiuytrewq -> qmn
Implémentation de référence (utilisée pour générer des cas de test) -> TIO
Règles
- Les échappatoires standard s'appliquent
- Vous pouvez prendre la saisie comme deux chaînes, deux listes de caractères, une matrice de caractères, etc. (tout autre format raisonnable est acceptable)
- Vous pouvez produire une chaîne ou une liste de caractères (ou un autre format standard pour les chaînes)
- Il s'agit de code-golf , donc la réponse la plus courte en octets dans chaque langue est déclarée gagnante pour sa langue. Aucune réponse ne sera acceptée.
- L'une ou l'autre chaîne peut être vide.
Bon golf!
Inspiré par les deux derniers défis de Kevin Cruijssen, "Là, je l'ai corrigé (avec du ruban / corde )"
There, I blew it up (with a segfault)
Réponses:
JavaScript (ES6),
8180 octetsPrend des entrées dans la syntaxe de curry
(modify)(modifier)
.Essayez-le en ligne!
Commenté
la source
Python 3 , 99 octets
Essayez-le en ligne!
la source
05AB1E ,
2017 octetsEssayez-le en ligne!
Calcule la distance ASCII entre chaque caractère, en ajoutant autant d'espaces s'il est positif. Une distance négative entraîne l'ajout de 0 espace, conformément aux spécifications. Après cela, je pousse tous les caractères aux mêmes indices dans la chaîne 2 que les espaces dans la première chaîne manipulée.
90% sûr que je peux perdre encore 2 à 3 octets en n'utilisant pas d'espaces, mais en poussant le caractère à l'index N. Toujours en train de travailler sur cette variante ... Quelle est ma "meilleure idée":
05AB1E , 18 octets
Essayez-le en ligne!
J'ai l'impression de manquer quelque chose, si vous voyez des améliorations
ε1‚Z}
,ʒ²g‹}
ou0¸ì
lmk ...Ç¥ε1‚Z}ηO0¸ìè
était de 13, mais il enveloppe quandn > |input_2|
àinput_2[n%|input_2|]
...la source
IgÅ1«
, mais peut-être y a-t-il une meilleure façon?Stax , 15 octets
Exécuter et déboguer
Ceci est la représentation ascii.
la source
╟╣i
Gelée , 14 octets
Un lien dyadique acceptant le modificateur comme une liste de caractères à gauche et la liste de caractères à modifier à droite renvoyant une liste de caractères.
Essayez-le en ligne!
Comment?
la source
¬
J'ai utilisé l' astuce dans ma réponse. :) (nous avons techniquement le même algorithme, mais vous l'avez fait plus court, bravo!)¬
, mais j'ai oublié quand j'ai fait un post au gros doigt sur un téléphone portable d'une tentative de 13 octets pas encore prête.JavaScript (ES6), 79 octets
Utilise le même algorithme pour calculer la distance entre les lettres que ma dernière réponse .
Cas de test:
Afficher l'extrait de code
la source
APL (Dyalog Classic) ,
353432 octetsEssayez-le en ligne!
la source
K (ngn / k) ,
272425 octetsEssayez-le en ligne!
la source
Haskell , 49 octets
Essayez-le en ligne!
la source
Perl 5 , 45 octets
Essayez-le en ligne!
la source
Ruby ,
6864 octetsEssayez-le en ligne!
la source
Fusain ,
2928 octetsEssayez-le en ligne!Le lien est vers la version détaillée du code. Sur la base de ma réponse à Là, je l'ai fixé avec du ruban adhésif. Explication:
Remarque: Cela devrait être de 28 octets, maisAnd
est rompu au moment de l'écriture.la source
Java 8, 117 octets
Explication:
Essayez-le en ligne.
la source