L'idée est simple. Vous devez créer un remplacement de lettre "visualisé", en fournissant 3 chaînes (l'entrée peut être séparée par des virgules, des entrées séparées ou comme un tableau). Le premier segment est le mot que vous souhaitez corriger, et le deuxième segment est les lettres que vous souhaitez remplacer, et le troisième segment est le remplacement des lettres du segment 2.
Par exemple:
| | Input | Starting Word | Output |
|----|-----------------------------|---------------|-------------|
| #1 | Hello world -wo -ld +Ea +th | Hello world | Hello Earth |
| #2 | Hello World -wo -ld +Ea +th | Hello World | Hello Worth |
| #3 | Hello -llo +y | Hello | Hey |
| #4 | Red -R -d +Gr +en | Red | Green |
| #5 | mississippi -is -i +lz +p | mississippi | mlzslzspppp |
| #6 | Football -o -a +a +i | Football | Fiitbill |
| #7 | mississippi -is -i +iz +p | mississippi | mpzspzspppp |
Explication
Les remplacements doivent être effectués étape par étape avec leur paire respective. Voici une illustration avec une entrée de mississippi -is -i +iz +p
pour donner la sortie mpzspzsppp
(voir l'exemple #7
ci-dessus)
| Step | Input | Output |
|------ |--------------------------- |------------- |
| #1 | mississippi -is -i +iz +p | |
| #2 | mississippi -is +iz | mizsizsippi |
| #3 | mizsizsippi -i +p | mpzspzspppp |
Règles
- Les entrées sont toujours dans cet ordre
<starting_string> <list_of_letters_to_replace> <replacement_letters>
. - Les lettres de remplacement et les groupes de remplacement ne seront jamais mélangés (c.-à-d. Qu'il n'y en aura jamais
-a +i -e +o
). - Les lettres à remplacer sont toujours préfixées par
-
et les lettres de remplacement sont toujours préfixées par+
. (Le préfixe est obligatoire) - Il peut y avoir plus d'un jeu de lettres à remplacer, vous devez donc regarder le préfixe.
- Supposons que le nombre de groupes de lettres à remplacer et le nombre de groupes de lettres de remplacement sont toujours égaux (c.-à-d. Qu'il n'y en aura jamais
-a -e +i
) - Les remplacements sont sensibles à la casse (voir exemple
#1
et#2
). - Les remplacements se font dans l'ordre dans lequel ils ont été donnés en entrée.
- Les remplacements de lettres peuvent être remplacés par d'autres remplacements. Voir l'exemple
#6
. - Le premier segment (mot de départ) ne comprendra jamais de caractères
-
ou+
. - C'est le code-golf donc les octets les plus courts gagnent.
Classements
Voici un extrait de pile pour générer à la fois un classement régulier et un aperçu des gagnants par langue.
Pour vous assurer que votre réponse s'affiche, veuillez commencer votre réponse avec un titre, en utilisant le modèle Markdown suivant:
# Language Name, N bytes
où N
est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores dans le titre, en les rayant. Par exemple:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Si vous souhaitez inclure plusieurs nombres dans votre en-tête (par exemple, parce que votre score est la somme de deux fichiers ou que vous souhaitez répertorier les pénalités de drapeau d'interprète séparément), assurez-vous que le score réel est le dernier numéro de l'en-tête:
# Perl, 43 + 2 (-p flag) = 45 bytes
Vous pouvez également faire du nom de la langue un lien qui apparaîtra ensuite dans l'extrait de classement:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
var QUESTION_ID=96473,OVERRIDE_USER=38505;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
letter to replace
(avec préfixe-
) et l'entrée int (n / 2) +1 à n-1 sontreplacement
(avec préfixe+
)gello
), puis m'envoyait les remplacements de lettres (-g +h
) parce qu'il voulait être ennuyeux au lieu de l'envoyerhello*
.Réponses:
05AB1E ,
1517 octetsEssayez-le en ligne!
Explication
Ou avec un format d'entrée moins strict
Essayez-le en ligne
la source
JavaScript (ES6),
8583 octetsCas de test
Afficher l'extrait de code
la source
Pyke,
1311 octetsEssayez-le ici!
Ou 2 octets si dans un format d'entrée différent:
Essayez-le ici!
la source
Perl, 58 octets
Code 57 octets + 1 pour
-p
.Nécessite le premier article sur une ligne, puis les remplacements sur la suivante. Un grand merci à @Dada qui a proposé une approche différente pour aider à réduire de 4 octets!
Usage
la source
perl -pE 's/(.*?) -(\S*)(.*?)\+(\S*)/"(\$1=~s%$2%$4%gr).\"$3\""/ee&&redo'
. Je n'arrive pas à le raccourcir, mais vous pouvez peut-être le faire :)perl -pE '$a=<>;1while$a=~s%-(\S*)(.*?)\+(\S*)%"s/$1/$3/g;q{$2}"%ee'
. (prend la chaîne sur une ligne et les "drapeaux" sur la ligne suivante)GNU sed 86 octets
Comprend +1 pour -r
Essayez-le en ligne!
Exemple:
la source
PHP,
9897 octetsCe défi décrit le comportement exact de str_replace, donc pour php, il s'agit de créer des tableaux de remplacements. J'ai essayé de le faire en utilisant une seule "sous-chaîne" mais ce n'est peut-être pas la meilleure solution. Utilisez comme:
edit: 1 octet sauvé grâce à Titus
la source
$v[0]>'+'
enregistre un octet de plus$v[0]=='-'
. Vous pouvez également utiliser à laord($v)&4
place.Java 7,
153133 octetsCode non testé et testé:
Essayez-le ici.
Production:
la source
new String[]{'Rom Ro. Rom", "-Ro." , "+No."}
? Juste écrire quelque chose qui (espérons-le) correspond à une mauvaise expression rationnelle.Rom No. Rom
. Btw, vous pouvez l'essayer vous-même en cliquant sur leTry it here.
lien dans le post, puis en le forçant. :)PHP, 164 octets
la source
Vim, 25 octets
qq+dE+r-PdiW:1s<C-R>"-g<CR>@qq@q
Suppose une entrée dans ce format:
+dE+r-PdiW
: Combine-
et+
en registre unique, avec le+
transformé en un-
.:1s<C-R>"-g
: Utilise le registre comme extrait de code, inséré directement dans la:s
commande, avec-
comme séparateur.la source
Convexe , 19 octets
Essayez-le en ligne!
la source
R,
9894 octetsEdit: sauvé 4 octets grâce à @rturnbull
Cas non testés et testés
Parce que
scan
(lit l'entrée de stdin) ne fonctionne pas correctement dans R-fiddle, je présente le programme en l'enveloppant dans une fonction à la place. Notez que la fonction prend un vecteur d'entrée et peut être exécuté par exemple:f(c("Hello world", "-wo", "-ld", "+Ea", "+th"))
. Le programme gofled ci-dessus inviterait l'utilisateur à entrer à l'aide de stdin, en tapant"Hello world" -wo -ld -Ea +th
dans la console donnerait le même résultat.Exécutez le code sur R-fiddle
la source
"
autour de la chaîne d'entrée?"Hello world" => enter => "-wo" => enter => "-ld" => enter => "+Ea" => enter =>"+th"
qui est généralement la façon dont les chaînes sont lues de toute façon.l=length(i)
àl=length(i)/2
jour les références ultérieuresl
.Haskell,
8578 octetsExemple d'utilisation:
("mississippi" # "-is -i") "+lz +p"
->"mlzslzspppp"
.Comment ça fonctionne:
Edit: @BlackCap a trouvé 6 octets à enregistrer et j'en ai moi-même un autre.
la source
import Data.Lists;a#b=foldl(uncurry replace
flip)a.zip(g b).g;g=map tail.words
flip
infixe. Le préfixe standard est un octet plus court.Python 3, 93 octets
Essayez-le en ligne!
L'entrée est une liste de chaînes, les chaînes de remplacement sont séparées par des espaces.
Exemple d'entrée:
['mississippi','-is -i','+iz +p']
la source
PowerShell v2 +, 90 octets
Prend l'entrée comme trois arguments, avec les chaînes
-
et+
séparées par des espaces. Effectue un-split
on$b
(le-split
quand il agit de façon unaire se divise sur les espaces blancs), puis passe en boucle|%{...}
dans chacun d'eux. À chaque itération, nous supprimons le-
, trouvant la[$i++]
chaîne de remplacement suivante et le supprimant+
de celui-ci, et en utilisant le-creplace
(remplacement sensible à la casse) pour découper et couper en dés$a
et le stocker dans$a
. Ensuite,$a
est laissé sur le pipeline et la sortie est implicite.la source
PHP, 106 octets
approche directe. Courez avec
php -r '<code> <arguments>
.la source