Briefwechsel Herausforderung

17

Die Idee ist einfach. Sie müssen einen "visualisierten" Buchstabenersatz erstellen, indem Sie 3 Zeichenfolgen bereitstellen (Eingabe kann durch Kommas getrennt, separate Eingaben oder als Array erfolgen). Das erste Segment ist das Wort, das Sie korrigieren möchten, und das zweite Segment sind die Buchstaben, die Sie ersetzen möchten, und das dritte Segment ist der Ersatz für die Buchstaben in Segment 2.

Beispielsweise:

|    | 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 |

Erläuterung

Der Austausch erfolgt schrittweise mit dem jeweiligen Paar. Hier ist eine Abbildung mit einer Eingabe von mississippi -is -i +iz +p, um die Ausgabe zu geben mpzspzsppp(siehe Beispiel #7oben)

| Step  | Input                         | Output        |
|------ |---------------------------    |-------------  |
| #1    | mississippi -is -i +iz +p     |               |
| #2    | mississippi -is +iz           | mizsizsippi   |
| #3    | mizsizsippi -i +p             | mpzspzspppp   |

Regeln

  • Die Eingaben erfolgen immer in dieser Reihenfolge <starting_string> <list_of_letters_to_replace> <replacement_letters>.
  • Zu ersetzende Buchstaben und Ersatzgruppen werden niemals gemischt (dh: es wird niemals Buchstaben geben -a +i -e +o).
  • Buchstaben, die ersetzt werden sollen, werden immer vorangestellt -und Ersatzbuchstaben immer vorangestellt +. (Das Präfix ist obligatorisch)
  • Möglicherweise müssen mehrere Buchstaben ersetzt werden. Sie müssen sich also das Präfix ansehen.
  • Angenommen, die Anzahl der zu ersetzenden Buchstabengruppen und die Anzahl der zu ersetzenden Buchstabengruppen sind immer gleich (dh, es wird niemals eine geben -a -e +i).
  • Bei Ersetzungen wird zwischen Groß- und Kleinschreibung unterschieden (siehe Beispiel #1und #2).
  • Ersetzungen erfolgen in der Reihenfolge, in der sie in der Eingabe angegeben wurden.
  • Briefersetzungen können durch andere Ersetzungen ersetzt werden. Siehe Beispiel #6.
  • Das erste Segment (Ausgangswort) wird nie enthalten -oder +Zeichen.
  • Das ist Code-Golf, also gewinnen die kürzesten Bytes.

Bestenlisten

Hier ist ein Stack-Snippet, um sowohl eine reguläre Rangliste als auch eine Übersicht der Gewinner nach Sprache zu generieren.

Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:

# Language Name, N bytes

Wo Nist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:

# Ruby, <s>104</s> <s>101</s> 96 bytes

Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:

# Perl, 43 + 2 (-p flag) = 45 bytes

Sie können den Namen der Sprache auch als Link festlegen, der dann im Leaderboard-Snippet angezeigt wird:

# [><>](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>

ʰᵈˑ
quelle
1
Angesichts der Regeln 2 und 5 müssen Sie sich das Präfix nicht unbedingt ansehen. Mit n Eingängen, die Eingabe 0 ist die Basiszeichenfolge, Eingänge 1 bis int (n / 2) ist letter to replace(mit Vorzeichen -) und Eingabe int (n / 2) +1 bis n-1 sind replacement(mit Vorzeichen +)
edc65
@ edc65 100% wahr, obwohl die Herausforderung auf das Präfix ausgelegt war (und ich könnte mir eine seltsame Erklärung ausdenken, dass ich ein Alien bin, der Buchstabenersetzungen ohne Präfix nicht verarbeiten kann), aber in Wirklichkeit ist es nur ein weiteres Hindernis, dies zu stoppen zu trivial zu sein - wenn man sich die aktuellen Antworten ansieht (alle sind übrigens großartig), war es keine komplexe Barriere. Die Idee zu dieser Herausforderung stammt aus einem Skype-Chat meines Freundes. Er hat ein Wort falsch geschrieben ( gello) und mir dann den Briefersatz geschickt ( -g +h), weil er nerven wollte, anstatt ihn zu senden hello*.
17.
1
Eingänge sind immer in dieser Reihenfolge Warum so restriktiv?
Luis Mendo
@ LuisMendo Ich denke, es ist nicht wirklich wichtig - aber es ist die Art und Weise, wie mein Freund und ich es formatiert haben, aber da Antworten auf diese Anforderung gepostet wurden, kann ich eine Regeländerung nicht wirklich vornehmen. Es wurde auf dem Sandkasten nicht in Frage gestellt, daher habe ich es nicht als negativ empfunden.
17.
1
@udioica hat vollkommen recht und unterstützt in der Tat die Regel "Ersetzungen sind case-sensitive". Führen Sie das Snippet in der JavaScript-Antwort aus, um die Implementierung zu sehen. (# 1 w orld` vs # 2 w orld)
edc65

Antworten:

6

05AB1E , 15 - 17 Bytes

IIð¡€áIð¡€á‚øvy`:

Probieren Sie es online!

Erläuterung

I                   # read starting string
 I                  # read letters to be replaced
  ð¡                # split on space
    ۇ              # and remove "-"
      I             # read replacement letters
       ð¡           # split on space
         ۇ         # and remove "+"
           ‚ø       # zip to produce pairs of [letters to replace, replacement letters]
             vy`:   # for each pair, replace in starting string

Oder mit einem weniger strengen Eingabeformat

vy`:

Probieren Sie es online aus

Emigna
quelle
6

JavaScript (ES6), 85 83 Bytes

f=(s,n=1,l=s.split(/ \W/))=>(r=l[n+l.length/2|0])?f(s.split(l[n]).join(r),n+1):l[0]

Testfälle

Arnauld
quelle
5

Pyke, 13 11 Bytes

z[zdcmt)[.:

Probieren Sie es hier aus!

z           - input()
 [zdcmt)    - def func():
  zdc       -  input().split(" ")
     mt     -  map(>[1:], ^)
            - func()
        [   - func()
         .: - translate()

Oder 2 Bytes, wenn in einem anderen Eingabeformat:

.:

Probieren Sie es hier aus!

Blau
quelle
Bei der Arbeit ist catbus.co.uk gesperrt. Können Sie bitte eine alternative Testsuite verlinken?
17.
2
@ ʰᵈˑ Ich halte es nicht für sinnvoll, die Firewall-Einstellungen Ihrer (willkürlichen) Arbeit anzupassen.
Orlp
1
@orlp - ich stimme zu, es ist Scheiße. Aber ich habe die Firewall-Einstellungen nicht festgelegt. Ich wollte es nur testen
ʰᵈˑ
2
Sie können Pyke unter github.com/muddyfish/pyke
Blue
4

Perl, 58 Bytes

57 Byte Code + 1 für -p.

Erfordert das erste Element in einer Zeile, dann das Ersetzen in der nächsten. Ein großes Dankeschön an @Dada, der sich einen anderen Ansatz ausgedacht hat , um die Anzahl der Bytes um 4 zu reduzieren!

$a=<>;1while$a=~s%-(\S*)(.*?)\+(\S*)%"s/$1/$3/g;q{$2}"%ee

Verwendung

perl -pe '$a=<>;1while$a=~s%-(\S*)(.*?)\+(\S*)%"s/$1/$3/g;q{$2}"%ee' <<< 'Football
-o -a +a +i'
Fiitbill
perl -pe '$a=<>;1while$a=~s%-(\S*)(.*?)\+(\S*)%"s/$1/$3/g;q{$2}"%ee' <<< 'mississippi
-is -i +iz +p'
mpzspzspppp
perl -pe '$a=<>;1while$a=~s%-(\S*)(.*?)\+(\S*)%"s/$1/$3/g;q{$2}"%ee' <<< 'mississippi
-ippi -i -mess +ee +e +tenn'
tennessee
Dom Hastings
quelle
4 Bytes länger gibt es perl -pE 's/(.*?) -(\S*)(.*?)\+(\S*)/"(\$1=~s%$2%$4%gr).\"$3\""/ee&&redo'. Ich schaffe es nicht, es kürzer zu machen, aber vielleicht kannst du das :)
Dada
1
Erwischt! 58 Bytes perl -pE '$a=<>;1while$a=~s%-(\S*)(.*?)\+(\S*)%"s/$1/$3/g;q{$2}"%ee'. (Nimmt die Zeichenfolge in einer Zeile und die "Flags" in der nächsten Zeile)
Dada
1
Genial! Ich bin nicht an einem Computer, aber das aktualisiere ich morgen! Vielen Dank!
Dom Hastings
Sind Sie sicher, dass Sie das q {} entfernen möchten, das $ 2 umgibt? Würde dies nicht scheitern, wenn es 3 - und 3 + Schalter gibt? (Ich kann es jetzt nicht testen, also haben Sie vielleicht Recht, entfernen Sie es;)
Dada
@Dada ahhh, ich habe mich gefragt, warum Sie es hinzugefügt haben, ich habe alle Fälle in der Testsuite getestet, aber nicht über einen 3-gegen-3-Ersatz nachgedacht ...
Dom Hastings
3

GNU sed 86 Bytes

Beinhaltet +1 für -r

:;s,^([^-]*)(\w+)([^-]*-)\2( [^+]*\+)(\w*),\1\5\3\2\4\5,
t;s,-[^-+]*,,;s,\+[^-+]*,,;t

Probieren Sie es online!

Beispiel:

$ echo 'Hello world -wo -ld +Ea +th'|sed -rf replace.sed
Hello Earth
Riley
quelle
3

PHP, 98 bis 97 Bytes

for($s=$argv[$i=1];$v=$argv[++$i];)$r[$v[0]>'+'][]=substr($v,1);echo str_replace($r[1],$r[0],$s);

Diese Herausforderung beschreibt das genaue Verhalten von str_replace. Für PHP dreht sich alles darum, die Arrays von Ersetzungen zu erstellen. Ich habe versucht, es mit nur einer "Teilzeichenfolge" zu tun, aber das ist möglicherweise nicht die beste Lösung. Verwenden Sie wie:

php -r "for($s=$argv[$i=1];$v=$argv[++$i];)$r[$v[0]>'+'][]=substr($v,1);echo str_replace($r[1],$r[0],$s);" "mississippi" "-is" "-i" "+iz" "+p"

edit: 1 Byte gespeichert dank Titus

user59178
quelle
Dies ist wahrscheinlich die kürzeste mögliche Sache. Aber $v[0]>'+'speichert ein Byte über $v[0]=='-'. Sie könnten ord($v)&4stattdessen auch verwenden .
Titus
2

Java 7, 153 133 Bytes

String c(String[]a){String r=a[0],z[]=a[1].split(" ?-");for(int i=0;i<z.length;r=r.replace(z[i],a[2].split(" ?[+]")[i++]));return r;}

Ungolfed & Testcode:

Probieren Sie es hier aus.

class M{
  static String c(String[] a){
    String r = a[0],
           z[] = a[1].split(" ?-");
    for(int i = 0; i < z.length; r = r.replace(z[i], a[2].split(" ?[+]")[i++]));
    return r;
  }

  public static void main(String[] a){
    System.out.println(c(new String[]{ "Hello world", "-wo -ld", "+Ea +th" }));
    System.out.println(c(new String[]{ "Hello World", "-wo -ld", "+Ea +th" }));
    System.out.println(c(new String[]{ "Hello", "-llo", "+y" }));
    System.out.println(c(new String[]{ "Red", "-R -d", "+Gr +en" }));
    System.out.println(c(new String[]{ "mississippi", "-is -i", "+lz +p" }));
    System.out.println(c(new String[]{ "Football", "-o -a", "+a +i" }));
    System.out.println(c(new String[]{ "mississippi", "-is -i", "+iz +p" }));
  }
}

Ausgabe:

Hello Earth
Hello Worth
Hey
Green
mlzslzspppp
Fiitbill
mpzspzspppp
Kevin Cruijssen
quelle
Funktioniert das für die Eingabe new String[]{'Rom Ro. Rom", "-Ro." , "+No."}? Schreiben Sie einfach etwas, das (hoffentlich) zu einer falschen Regex passt.
Roman Gräf
@ RomanGräf Ja, funktioniert und gibt aus Rom No. Rom. Übrigens, Sie können es selbst versuchen, indem Sie auf den Try it here.Link im Beitrag klicken und ihn dann teilen. :)
Kevin Cruijssen
Ich weiß, aber ich bin gerade auf meinem Handy. :(
Roman Gräf
2

PHP, 164 Bytes

preg_match_all("#^[^-+]+|-[\S]+|[+][\S]+#",$argv[1],$t);for($s=($a=$t[0])[0];++$i<$c=count($a)/2;)$s=str_replace(trim($a[+$i],"-"),trim($a[$i+$c^0],"+"),$s);echo$s;
Jörg Hülsermann
quelle
2

Vim, 25 Bytes

qq+dE+r-PdiW:1s<C-R>"-g<CR>@qq@q

Setzt die Eingabe in folgendem Format voraus:

mississippi
-is -i
+lz +p
  • +dE+r-PdiW: Kombiniert -und +in ein einzelnes Register, mit dem +in ein -.
  • :1s<C-R>"-g: Verwendet das Register als Code-Snippet, das direkt in den :sBefehl eingefügt wird , und -als Trennzeichen.
udioica
quelle
2

R 98 94 Bytes

Bearbeiten: 4 Bytes dank @rturnbull gespeichert

i=scan(,"");s=i[1];i=gsub("\\+|-","",i[-1]);l=length(i)/2;for(j in 1:l)s=gsub(i[j],i[l+j],s);s

Ungolfed und Testfälle

Da scan(liest die Eingabe von stdin) in R-Fiddle nicht richtig funktioniert, zeige ich das Programm, indem ich es stattdessen in eine Funktion einpacke. Beachten Sie, dass die Funktion einen Vektor als eine Eingabe nimmt und kann durch beispielsweise ausgeführt werden: f(c("Hello world", "-wo", "-ld", "+Ea", "+th")). Das obige überarbeitete Programm würde den Benutzer zur Eingabe mit stdin auffordern, wobei das Eingeben "Hello world" -wo -ld -Ea +thin die Konsole dasselbe Ergebnis liefern würde.

Führe den Code auf R-fiddle aus

f=function(i){
    s=i[1]                                   # Separate first element
    i=gsub("\\+|-","",i[-1])                 # Remove + and - from all elements except first, store as vector i
    l=length(i)/2                            # calculate the length of the vector i (should always be even)
    for(j in 1:l)s=gsub(i[j],i[l+j],s)       # iteratively match element j in i and substitute with element l+j in i
    s                                        # print to stdout
}
Billywob
quelle
Können Sie bitte auch einen Test-Suite-Link bereitstellen?
17.
@ ʰᵈˑ hat eine R-Fiddle-Testsuite hinzugefügt. Beachten Sie, dass die Testsuite eine Funktion verwendet, anstatt die Eingabe von stdin zu lesen, wie in der bearbeiteten Antwort erläutert.
Billywob
Ist diese Antwort gültig, da Sie "die Eingabezeichenfolge verwenden müssen?
Rturnbull
@rturnbull Ich verstehe nicht, warum nicht. Wenn Sie jeden Eintrag in Anführungszeichen setzen und die Eingabetaste drücken, erhalten Sie das entsprechende Ergebnis (z. B. "Hello world" => enter => "-wo" => enter => "-ld" => enter => "+Ea" => enter =>"+th":).
Billywob
1
Ja, es liegt wirklich an der OP! Ich persönlich mag Ihre Antwort so wie sie ist, aber ich habe mir Sorgen gemacht, dass sie möglicherweise ungültig ist. Auf der Suche nach Antworten für andere Sprachen scheinen Zitate ziemlich akzeptiert zu sein. Während ich Ihre Aufmerksamkeit haben, ich glaube , Sie Golf aus 4 Bytes können durch Änderung l=length(i)zu l=length(i)/2und die spätere Verweise auf die Aktualisierung l.
Rturnbull
2

Haskell, 85 78 Bytes

import Data.Lists
g=map tail.words
a#b=foldl(flip$uncurry replace)a.zip(g b).g

Anwendungsbeispiel: ("mississippi" # "-is -i") "+lz +p"-> "mlzslzspppp".

Wie es funktioniert:

g=map tail.words              -- helper function that splits a string into a
                              -- list of words (at spaces) and drops the first
                              -- char of each word

                zip(g b).g    -- make pairs of strings to be replaced and its
                              -- replacement
foldl(flip$uncurry replace)a  -- execute each replacement, starting with the
                              -- original string
                              -- -> "flip" flips the arguments of "uncurry replace"
                              --           i.e. string before pair of replacements
                              -- "uncurry" turns a function that expects two
                              --           lists into one that expects a list of pairs

Edit: @BlackCap hat 6 Bytes zum Speichern gefunden und ich selbst noch eins.

nimi
quelle
6 Bytes: import Data.Lists;a#b=foldl(uncurry replaceFlip)a.zip(g b).g;g=map tail.words
BlackCap
@BlackCap: Schön, danke! Keine Notwendigkeit, flipInfix zu machen . Das Standardpräfix ist ein Byte kürzer.
Nimi
1

Python 3, 93 Byte

def f(s):
  s,m,p=s
  for n,o in zip(m.split(),p.split()):s=s.replace(n[1:],o[1:])
  return s

Probieren Sie es online!

Die Eingabe ist eine Liste mit Zeichenfolgen, Ersetzungszeichenfolgen sind durch Leerzeichen getrennt.

Beispiel Eingabe: ['mississippi','-is -i','+iz +p']

Gábor Fekete
quelle
Können Sie bitte einen Test-Suite-Link hinzufügen?
17.
Link vorhanden und auch etwas verkleinert.
Gábor Fekete
1

PowerShell v2 +, 90 Byte

param($a,$b,$c)-split$b|%{$a=$a-creplace($_-replace'-'),((-split$c)[$i++]-replace'\+')};$a

Nimmt Eingaben als drei Argumente an, wobei die Zeichenfolge -und durch +Leerzeichen getrennt sind. Führt ein -splitOn aus $b( -splitwenn Sie auf unäre Weise agieren, wird das Whitespace aufgespalten) und |%{...}durchläuft dann jedes von diesen. Bei jeder Iteration entfernen wir die Zeichenfolge -, suchen die nächste [$i++]Ersatzzeichenfolge und entfernen die Zeichenfolge +, und verwenden die Zeichenfolge -creplace(Ersetzen unter Berücksichtigung der Groß- und Kleinschreibung), $aum sie in Scheiben zu schneiden und zu speichern $a. Wird $adann in der Pipeline belassen und die Ausgabe ist implizit.

PS C:\Tools\Scripts\golfing> .\letter-replacement-challenge.ps1 'mississippi' '-is -i' '+iz +p'
mpzspzspppp

PS C:\Tools\Scripts\golfing> .\letter-replacement-challenge.ps1 'Hello world' '-wo -ld' '+Ea +th'
Hello Earth

PS C:\Tools\Scripts\golfing> .\letter-replacement-challenge.ps1 'Hello World' '-wo -ld' '+Ea +th'
Hello Worth
AdmBorkBork
quelle
1

PHP, 106 Bytes

for($s=($v=$argv)[$i=1];$i++<$n=$argc/2;)$s=str_replace(substr($v[$i],1),substr($v[$n+$i-1],1),$s);echo$s;

geradliniger Ansatz. Laufen Sie mit php -r '<code> <arguments>.

Titus
quelle