印刷纵横交错的两根弦


9

给定一组保证长度相同的两个字符串,请打印其十字形

两根弦的十字交叉如下。

  1. 产生第二个字符串的第二个字符,然后是第一个字符串的第一个字符。
  2. 产生第二个字符串的第一个字符,然后产生第一个字符串的第二个字符。
  3. 丢弃每个字符串的第一个字符。
  4. 如果每个字符串都有多个字符,请返回步骤1。

例如,如果两个字符串是

Truck
Tower

十字交叉

oTTrwroueuwcrcek

如下图所示。

图

每种颜色代表不同的纵横交错。数字显示输出中相应字符的索引。


至少在一周左右过去之前,您不应该接受答案,答案可能随时会被击败。
Pavel

@Phoenix好的,下次我会记住这一点(这是我对这个stackexchange的第一个问题)
K Split X

Answers:


6

果冻10 8字节

żṚj@¥2\U

在线尝试!

怎么运行的

żṚ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.

哇,这真是太神奇了
K Split X

请解释一下?
毛茸茸的

@Shaggy我已经编辑了答案。
丹尼斯

6

JavaScript(ES6),51个字节

f=([G,...O],[L,...F])=>O[0]?F[0]+G+L+O[0]+f(O,F):''



3

Haskell44 38字节

划掉44仍然是44

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

打高尔夫球的次数略少/可能更具可读性:

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

1
有趣的事实:至少在我的浏览器上,标头中的划掉的44不再是44:o
HyperNeutrino


0

C ++ 14,115个 112字节

作为未命名的lambda,参数应类似于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]));}

脱胶和用法:

#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);
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.