두 줄의 십자형 인쇄


9

동일한 길이를 보장하는 두 줄의 세트가 주어지면 십자형을 인쇄하십시오 .

두 줄 의 십자형 크로스 는 다음과 같이 구합니다.

  1. 두 번째 문자열의 두 번째 문자를 생성 한 다음 첫 번째 문자열의 첫 번째 문자를 생성하십시오.
  2. 두 번째 문자열의 첫 번째 문자를 생성 한 다음 첫 번째 문자열의 두 번째 문자를 생성하십시오.
  3. 각 문자열의 첫 문자를 버리십시오.
  4. 문자열에 각각 하나 이상의 문자가 있으면 1 단계로 돌아가십시오.

예를 들어 두 문자열이

Truck
Tower

골 크로스 입니다

oTTrwroueuwcrcek

다음 다이어그램에 표시된대로

도표

각 색상은 서로 다른 교차 교차 반복을 나타냅니다. 숫자는 출력에서 ​​해당 문자의 인덱스를 보여줍니다.


최소한 일주일이 지날 때까지 답변을 수락하면 안됩니다.
Pavel

@Phoenix 괜찮아 다음 번에이 점을 명심하겠습니다 (이 스택 교환에 대한 첫 번째 질문이었습니다)
K Split X

답변:


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 내 답변을 편집했습니다.
Dennis



3

하스켈 , 44 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를 넘어
서면


0

C ++ 14, 115112 바이트

명명되지 않은 람다로서 매개 변수는 다음과 같아야합니다 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);
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.