प्रिंटिंग स्ट्रिस दो स्ट्रिंग्स के पार


9

एक ही लंबाई होने की गारंटी वाले दो तारों के एक सेट को देखते हुए, उनके क्रॉस को प्रिंट करें ।

क्रिस पार दो तार के रूप में निम्न प्रकार प्राप्त की है।

  1. दूसरे तार के दूसरे पात्र को ढालें, फिर पहले तार के पहले पात्र को।
  2. दूसरे तार के पहले पात्र को ढालें, फिर पहले तार के दूसरे पात्र को।
  3. प्रत्येक तार के पहले वर्ण को त्यागें।
  4. यदि तार में एक से अधिक वर्ण हैं, तो चरण 1 पर वापस जाएँ।

उदाहरण के लिए, यदि दो तार हैं

Truck
Tower

क्रिस पार है

oTTrwroueuwcrcek

जैसा कि निम्नलिखित चित्र में दिखाया गया है।

आरेख

प्रत्येक रंग क्रिस-क्रॉसिंग के एक अलग पुनरावृत्ति का प्रतिनिधित्व करता है। संख्याएँ आउटपुट में संबंधित वर्णों के सूचकांकों को दिखाती हैं।


आपको उत्तर को तब तक स्वीकार नहीं करना चाहिए जब तक कि लगभग एक सप्ताह कम से कम एक सप्ताह बीत न जाए, इसे किसी भी समय पीटा जा सकता है।
पावेल

@Phoenix ठीक है, मैं अगली बार इसे ध्यान में रखूंगा (इस स्टैटेक्सचेंज पर मेरा पहला सवाल था)
के स्प्लिट एक्स

जवाबों:


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.

वाह, बहुत बढ़िया
के स्प्लिट एक्स

स्पष्टीकरण, कृपया?
झग्गी

@ शैगी मैंने अपना उत्तर संपादित कर लिया है।
डेनिस



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 शीर्षलेख में 44 नहीं है: o
HyperNeutrino


0

सी ++ 14, 115 112 बाइट्स

अनाम लंबोदर के रूप में, पैरामीटर इस प्रकार होना चाहिए 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);
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.