In chéo chéo của hai chuỗi


9

Cho một tập hợp hai chuỗi được đảm bảo có cùng độ dài, in chéo chéo của chúng .

Các chéo criss của hai chuỗi thu được như sau.

  1. Mang lại ký tự thứ hai của chuỗi thứ hai, sau đó là ký tự đầu tiên của chuỗi thứ nhất.
  2. Mang lại ký tự đầu tiên của chuỗi thứ hai, sau đó là ký tự thứ hai của chuỗi thứ nhất.
  3. Hủy ký tự đầu tiên của mỗi chuỗi.
  4. Nếu mỗi chuỗi có nhiều hơn một ký tự, quay lại bước 1.

Ví dụ: nếu hai chuỗi là

Truck
Tower

các criss chéo

oTTrwroueuwcrcek

như được minh họa trong sơ đồ sau.

biểu đồ

Mỗi màu đại diện cho một lần lặp khác nhau của chéo chéo. Các con số hiển thị các chỉ số của ký tự tương ứng trong đầu ra.


Bạn không nên chấp nhận câu trả lời cho đến khi ít nhất khoảng một tuần trôi qua, nó có thể bị đánh bất cứ lúc nào.
Pavel

@Phoenix được rồi tôi sẽ ghi nhớ điều đó vào lần tới (đây là câu hỏi đầu tiên của tôi về stackexchange này)
K Split X

Câu trả lời:


6

Thạch , 10 8 byte

żṚj@¥2\U

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

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

żṚj@¥2\U  Main link. Arguments: s, t (strings)

          Arguments:    "Truck", Tower"
ż         Ziphwith; create all pairs of corresponding characters.
          Return value: ["TT", "ro", "uw", "ce", "kr"].
     2\   Reduce each pair of adjacent strings by the quicklink to the left.
    ¥       Combine the two links to the left into a dyadic chain.
 Ṛ            Reverse the left string.
  j@          Join the second string, using the previous result as separator.
          Map:          "TT", "ro" -> join("ro", "TT") -> "rTTo"
                        "ro", "uw" -> join("uw", "or") -> "uorw"
                        etc.
          Return value: ["rTTo", "uorw", "cwue", "kecr"]
       U  Upend; reverse each string.
          Return value: ["oTTr", "wrou", "euwc", "rcek"]
          (implicit) Flatten and print.

Wow thật tuyệt vời
K Split X

Xin giải thích?
Xù xì

@Shaggy Tôi đã chỉnh sửa câu trả lời của tôi.
Dennis



3

Haskell , 44 38 byte

Vượt qua 44 vẫn là 44

[_]#_=""
(a:b)#(x:y)=y!!0:a:x:b!!0:b#y

Hơi ít chơi golf / có thể dễ đọc hơn một chút:

[_]      # [_]      = ""
(a:b:bs) # (x:y:ys) = y:a:x:b:((b:bs) # (y:ys))

1
Sự thật thú vị: Ít nhất trên trình duyệt của tôi, gạch bỏ 44 không còn là 44 trong tiêu đề: o
HyperNeutrino


0

C ++ 14, 115 112 byte

Như lambda chưa được đặt tên, các tham số sẽ giống như std::string:

#define P putchar(
[](auto A,auto B){for(int i=0;++i<A.size()&&i<B.size();P B[i]),P A[i-1]),P B[i-1]),P A[i]));}

Ungolfed và cách sử dụng:

#include<iostream>
#include<string>

using namespace std;

#define P putchar(
auto f=
[](auto A,auto B){
 for(int i=0;
     ++i<A.size() && i<B.size();
     P B[i]),
     P A[i-1]),
     P B[i-1]),
     P A[i]));
}
;

int main(){
 string A="Truck",B="Tower";
 f(A,B);
}
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.