Thử thách thay thế thư


17

Ý tưởng rất đơn giản. Bạn đã tạo một thay thế chữ "trực quan hóa", bằng cách cung cấp 3 chuỗi (đầu vào có thể được phân tách bằng dấu phẩy, đầu vào riêng biệt hoặc dưới dạng một mảng). Phân đoạn đầu tiên là từ bạn muốn sửa và phân đoạn thứ hai là các chữ cái bạn muốn thay thế và phân khúc thứ ba là thay thế cho các chữ cái trong phân khúc 2.

Ví dụ:

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

Giải trình

Việc thay thế sẽ được thực hiện từng bước với cặp tương ứng của chúng. Đây là một minh họa với đầu vào mississippi -is -i +iz +pđể cung cấp đầu ra mpzspzsppp(xem ví dụ #7ở trên)

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

Quy tắc

  • Đầu vào luôn theo thứ tự này <starting_string> <list_of_letters_to_replace> <replacement_letters>.
  • Thư để thay thế và nhóm thay thế sẽ không bao giờ được trộn lẫn (nghĩa là: sẽ không bao giờ có -a +i -e +o).
  • Các chữ cái để thay thế luôn được thêm tiền tố -và các chữ cái thay thế luôn được thêm tiền tố+ . (Tiền tố là bắt buộc)
  • Có thể có nhiều hơn một bộ chữ cái để thay thế, vì vậy bạn cần xem tiền tố.
  • Giả sử số lượng nhóm chữ thay thế và số lượng nhóm chữ thay thế luôn bằng nhau (nghĩa là: sẽ không bao giờ có -a -e +i)
  • Thay thế là trường hợp nhạy cảm (xem ví dụ #1#2).
  • Thay thế được thực hiện theo thứ tự chúng đã được đưa ra trong đầu vào.
  • Thay thế thư có thể được thay thế bằng thay thế khác. Xem ví dụ #6.
  • Phân đoạn đầu tiên (từ bắt đầu) sẽ không bao giờ bao gồm -hoặc +ký tự.
  • Đây là mã golf để byte ngắn nhất giành chiến thắng.

Bảng xếp hạng

Dưới đây là Stack Snippet để tạo cả bảng xếp hạng thông thường và tổng quan về người chiến thắng theo ngôn ngữ.

Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:

# Language Name, N bytes

nơi Nlà kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh bại chúng thông qua. Ví dụ:

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

Nếu bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ của thông dịch viên), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:

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

Bạn cũng có thể đặt tên ngôn ngữ thành một liên kết mà sau đó sẽ hiển thị trong đoạn trích bảng xếp hạng:

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


1
Đưa ra quy tắc 2 và 5, bạn thực sự không cần phải nhìn vào tiền tố. Với n đầu vào, đầu vào 0 là chuỗi cơ sở, đầu vào 1 đến int (n / 2) là letter to replace(có tiền tố -) và đầu vào int (n / 2) +1 đến n-1 là replacement(có tiền tố +)
edc65

@ edc65 đúng 100%, mặc dù thử thách được thiết kế để có tiền tố (và tôi có thể đưa ra một lời giải thích kỳ lạ rằng tôi là người ngoài hành tinh không thể xử lý thay thế thư mà không có tiền tố của họ) nhưng thực tế, đó chỉ là một rào cản khác để ngăn chặn điều này quá tầm thường - mặc dù nhìn vào các câu trả lời hiện tại (tất cả đều tuyệt vời) đó không phải là một rào cản phức tạp. Ngoài ra thực tế thú vị, ý tưởng đằng sau thử thách này được sinh ra từ bạn tôi trong một cuộc trò chuyện trên Skype. Anh ấy đã đánh vần sai một từ ( gello), và sau đó gửi cho tôi thư thay thế ( -g +h) vì anh ấy muốn gây phiền nhiễu thay vì gửi hello*.
ʰᵈˑ

1
Đầu vào luôn theo thứ tự này Tại sao lại hạn chế như vậy?
Luis Mendo

@LuisMendo Tôi đoán nó không thực sự quan trọng - nhưng đó là cách mà bạn tôi và tôi định dạng nó, nhưng vì các câu trả lời đã được đăng lên yêu cầu này, tôi thực sự không thể thay đổi quy tắc. Nó không được hỏi trên hộp cát, vì vậy tôi không nghĩ đó là một điều tiêu cực.
17/10/2016

1
@udioica hoàn toàn đúng và thực tế nó hỗ trợ quy tắc "Thay thế là phân biệt chữ hoa chữ thường". Chạy đoạn mã trong câu trả lời JavaScript để xem nó được triển khai. (# 1 w orld` so với # 2 W orld)
edc65

Câu trả lời:


6

05AB1E , 15 17 byte

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

Hãy thử trực tuyến!

Giải trình

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

Hoặc với một định dạng đầu vào ít nghiêm ngặt hơn

vy`:

Dùng thử trực tuyến


6

JavaScript (ES6), 85 83 byte

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]

Các trường hợp thử nghiệm


5

Pyke, 13 11 byte

z[zdcmt)[.:

Hãy thử nó ở đây!

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

Hoặc 2 byte nếu ở định dạng đầu vào khác:

.:

Hãy thử nó ở đây!


Tại nơi làm việc catbus.co.uk bị chặn. Bạn có thể liên kết một bộ thử nghiệm thay thế xin vui lòng?
17/10/2016

2
@ Tôi không tin rằng việc tuân thủ các cài đặt tường lửa làm việc (tùy ý) của bạn là hợp lý.
orlp

1
@orlp - Tôi đồng ý, thật tệ. Nhưng tôi không đặt cài đặt tường lửa. Tôi chỉ muốn thử nghiệm nó
17/10/2016

2
@hd bạn có thể tải xuống Pyke tại github.com/muddyfish/pyke
Blue

4

Perl, 58 byte

Mã 57 byte + 1 cho -p .

Yêu cầu mục đầu tiên trên một dòng, sau đó thay thế trên dòng tiếp theo. Xin chân thành cảm ơn @Dada đã đưa ra một cách tiếp cận khác để giúp giảm 4 byte!

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

Sử dụng

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

4 byte dài hơn, có perl -pE 's/(.*?) -(\S*)(.*?)\+(\S*)/"(\$1=~s%$2%$4%gr).\"$3\""/ee&&redo'. Tôi không thể quản lý để có được nó ngắn hơn, nhưng có lẽ bạn có thể :)
Dada

1
Gotcha! 58 byte : perl -pE '$a=<>;1while$a=~s%-(\S*)(.*?)\+(\S*)%"s/$1/$3/g;q{$2}"%ee'. (lấy chuỗi trên một dòng và "cờ" trên dòng tiếp theo)
Dada

1
Tuyệt vời! Tôi không ở máy tính nhưng tôi sẽ cập nhật vào ngày mai! Cảm ơn!
Dom Hastings

Bạn có chắc chắn về việc xóa q {} xung quanh $ 2 không? Điều này có thất bại không khi có các công tắc 3 - và 3 +? (Tôi không thể kiểm tra ngay bây giờ, vì vậy có lẽ bạn đã đúng nên xóa nó đi;))
Dada

@Dada ahhh, tôi đã tự hỏi tại sao bạn đã thêm vào nó, tôi đã kiểm tra tất cả các trường hợp trong bộ phần mềm kiểm tra, nhưng không suy nghĩ về một 3 trong 3 thay thế ...
Dom Hastings

3

GNU sed 86 byte

Bao gồm +1 cho -r

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

Hãy thử trực tuyến!

Thí dụ:

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

3

PHP, 98 97 byte

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

Thử thách này mô tả hành vi chính xác của str numplace, vì vậy đối với php, tất cả chỉ là tạo ra các mảng thay thế. Tôi đã cố gắng làm điều đó bằng cách chỉ sử dụng một "chuỗi con" nhưng đó có thể không phải là giải pháp tốt nhất. Sử dụng như:

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"

chỉnh sửa: 1 byte được lưu nhờ Titus


Đây có lẽ là điều ngắn nhất có thể. Nhưng $v[0]>'+'tiết kiệm hơn một byte $v[0]=='-'. Bạn cũng có thể sử dụng ord($v)&4thay thế.
Tít

2

Java 7, 153 133 byte

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

Mã thử nghiệm & mã hóa:

Hãy thử nó ở đây.

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" }));
  }
}

Đầu ra:

Hello Earth
Hello Worth
Hey
Green
mlzslzspppp
Fiitbill
mpzspzspppp

Điều này có làm việc cho đầu vào new String[]{'Rom Ro. Rom", "-Ro." , "+No."}? Chỉ cần viết một cái gì đó (hy vọng) phù hợp với một regex sai.
Roman Gräf

@ RomanGräf Có, hoạt động và đầu ra Rom No. Rom. Btw, bạn có thể tự thử nó bằng cách nhấp vào Try it here.liên kết trong bài đăng, và sau đó rẽ nhánh. :)
Kevin Cruijssen

Tôi biết nhưng tôi hiện đang ở trên điện thoại di động của tôi. :(
Roman Gräf

2

PHP, 164 byte

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;

2

Vim, 25 byte

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

Giả sử đầu vào ở định dạng này:

mississippi
-is -i
+lz +p
  • +dE+r-PdiW: Kết hợp -+thành một thanh ghi, với việc +biến thành một- .
  • :1s<C-R>"-g: Sử dụng thanh ghi dưới dạng đoạn mã, được chèn trực tiếp vào :slệnh, với -tư cách là dấu phân cách.


2

R, 98 94 byte

Chỉnh sửa: đã lưu 4 byte nhờ @rturnbull

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 và các trường hợp thử nghiệm

Bởi vì scan(đọc đầu vào từ stdin) không hoạt động chính xác trong R-fiddle, tôi hiển thị chương trình bằng cách gói nó trong một hàm thay thế. Lưu ý rằng hàm lấy một vectơ làm đầu vào và có thể được chạy bằng ví dụ : f(c("Hello world", "-wo", "-ld", "+Ea", "+th")). Chương trình được gofled ở trên sẽ nhắc người dùng nhập liệu bằng cách sử dụng stdin, theo đó việc gõ "Hello world" -wo -ld -Ea +thvào bàn điều khiển sẽ mang lại kết quả tương tự.

Chạy mã trên R-fiddle

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
}

Bạn có thể cung cấp một liên kết bộ thử nghiệm, xin vui lòng?
17/10/2016

@ Đã thêm bộ kiểm tra R-fiddle. Lưu ý rằng bộ kiểm tra sử dụng một chức năng thay vì đọc đầu vào từ stdin như được giải thích trong câu trả lời được chỉnh sửa.
Billywob

Câu trả lời này có hợp lệ không, vì bạn phải sử dụng "xung quanh chuỗi đầu vào?
rturnbull

@rturnbull Tôi không thấy tại sao không. Kết thúc mọi mục nhập bằng dấu ngoặc kép và nhấn enter sẽ mang lại kết quả tương đương (ví dụ "Hello world" => enter => "-wo" => enter => "-ld" => enter => "+Ea" => enter =>"+th":) thường là cách các chuỗi được đọc bằng mọi cách.
Billywob

1
Vâng, nó thực sự lên đến OP! Cá nhân tôi thích câu trả lời của bạn, nhưng tôi lo lắng rằng nó có thể không hợp lệ. Nhìn vào câu trả lời cho các ngôn ngữ khác, có vẻ như trích dẫn khá được chấp nhận. Trong khi tôi có sự chú ý của bạn, tôi nghĩ bạn có thể chơi golf tắt 4 byte bằng cách thay đổi l=length(i)để l=length(i)/2và cập nhật các tài liệu tham khảo sau này để l.
rturnbull

2

Haskell, 85 78 byte

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

Ví dụ sử dụng: ("mississippi" # "-is -i") "+lz +p"->"mlzslzspppp" .

Làm thế nào nó hoạt động:

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

Chỉnh sửa: @BlackCap đã tìm thấy 6 byte để lưu và bản thân tôi là một byte khác.


6 byte: import Data.Lists;a#b=foldl(uncurry replacelật)a.zip(g b).g;g=map tail.words
BlackCap

@BlackCap: Rất vui, cảm ơn! Không cần phải thực hiện flip. Tiền tố tiêu chuẩn ngắn hơn một byte.
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

Hãy thử trực tuyến!

Đầu vào là một danh sách với các chuỗi, các chuỗi thay thế được phân tách không gian.

Ví dụ đầu vào: ['mississippi','-is -i','+iz +p']


Bạn có thể thêm một liên kết bộ kiểm tra, xin vui lòng?
ʰᵈˑ

Liên kết cung cấp và cũng giảm kích thước một chút.
Gábor Fekete

1

PowerShell v2 +, 90 byte

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

Đưa đầu vào thành ba đối số, với khoảng cách -+chuỗi được phân tách bằng dấu cách. Thực hiện -splitbật $b( -splitkhi hành động theo kiểu unary tách ra trên khoảng trắng), sau đó lặp |%{...}qua từng vòng . Mỗi lần lặp, chúng tôi sẽ loại bỏ chuỗi -, tìm [$i++]chuỗi thay thế tiếp theo và xóa chuỗi +đó và sử dụng -creplace(thay thế phân biệt chữ hoa chữ thường) để cắt và xúc xắc $avà lưu trữ lại vào$a . Sau đó, $ađược để lại trên đường ống và đầu ra là ẩn.

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

1

PHP, 106 byte

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;

tiếp cận thẳng về phía trước. Chạy với php -r '<code> <arguments>.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.