ইন্টারলেস স্ট্রিং


34

আপনার চ্যালেঞ্জটি এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা সমান দৈর্ঘ্যের দুটি স্ট্রিং দেওয়া হলে প্রতিটি অন্যান্য চরিত্রের অদলবদল করে এবং ফলাফলটিকে উভয় ক্রমে আউটপুট দেয় / প্রদান করে।

উদাহরণ

"Hello," "world!" --> "Hollo!" "werld,"
"code" "golf" --> "codf" "gole"
"happy" "angry" --> "hnpry" "aagpy"
"qwerty" "dvorak" --> "qvertk" "dworay"
"1, 2, 3" "a, b, c" --> "1, b, 3" "a, 2, c"
"3.141592653589" "2.718281828459" --> "3.111291623489" "2.748582858559"
"DJMcMayhem" "trichoplax" --> "DrMcMoylex" "tJichapham"
"Doorknob" "Downgoat" --> "Doonkoot" "Dowrgnab"
"Halloween" "Challenge" --> "Hhlloeegn" "Caallwnee"

বিধি

  • স্ট্রিংগুলিতে কেবলমাত্র ASCII অক্ষর (32-126) থাকবে।
  • স্ট্রিংগুলি সর্বদা একই দৈর্ঘ্যের হবে এবং কখনই খালি থাকবে না।
  • আপনি যে কোনও উপযুক্ত বিন্যাসে ইনপুট গ্রহণ করতে পারেন: পৃথক প্যারামিটার, একটি অ্যারেতে আইটেমগুলি, এক বা একাধিক নিউলাইন দ্বারা পৃথক করা, এমনকি কনকনেটেড। শুধু এটুকু যে এক পংক্তি অন্য আগে সম্পূর্ণরূপে আসতে হবে (যেমন a1\nb2\nc3জন্য "abc", "123"অবৈধ)।
  • আউটপুটটি উভয় ক্রমে (যেমন আপনি প্রথম বা দ্বিতীয় চর থেকে সন্ধান করতে শুরু করতে পারেন) এবং উপরে উল্লিখিত কোনও বৈধ বিন্যাসে থাকতে পারে। (2-আইটেম অ্যারে, নিউলাইন (গুলি) দ্বারা পৃথক করা, সংক্ষিপ্ত ইত্যাদি)

স্কোরিং

এটি , তাই প্রতিটি ভাষার জন্য বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


11
জন্য +1 DrMcMoylex। : ডি
ডিজেএমসিহেম

3
"ডাওরঙ্গাব" এনাগ্রামগুলিকে "ডাউনগ্রাব" (͡ ° ͜ʖ ͡ °)
মামা ফান রোল

আপনার স্পষ্টভাবে উল্লেখ করা উচিত যে "উভয় ক্রম" নিয়মের অর্থ অদলবদল প্রথম অক্ষর বা দ্বিতীয় থেকে শুরু হতে পারে।
DLosc

@ DRMcMoylex এই কোডটি দেখুন, গল্ফের উদাহরণ। যদি আমরা দ্বিতীয় অক্ষর থেকে শুরু করে অদলবদল করি তবে আমরা পাই: সি ডি এফ , জি এল । প্রথম চরিত্র থেকে শুরু করে: g o l e, c o d f।
DLosc

উত্তর:


14

হাস্কেল, 37 বাইট

l=(,):flip(,):l
(unzip.).zipWith3($)l

দুটি স্ট্রিং জিপ করুন, পর্যায়ক্রমে অক্ষরগুলি অদলবদল করুন, তারপরে এগুলি আনজিপ করুন।

একটি 37 বাইট পুনরাবৃত্ত বিকল্প:

(a:b)?(c:d)=a:d?b
e?_=e
a%b=(a?b,b?a)

9

পাইথন, 42 / বাইট I / O গল্ফিং সহ

def f(a,b):a[1::2],b[1::2]=b[1::2],a[1::2]

দুটি তালিকার প্রত্যেকটি চরিত্রই অদলবদল করে। অক্ষরের দুটি তালিকা ইনপুট হিসাবে নেয় এবং সেগুলি সংশোধন করে আউটপুট দেয়

l=list('cat')
m=list('dog')    
print l,m

def f(a,b):a[1::2],b[1::2]=b[1::2],a[1::2]

f(l,m)
print l,m

দেয়

['c', 'a', 't'] ['d', 'o', 'g']
['c', 'o', 't'] ['d', 'a', 'g']

1
যে চালাক। আপনি কি ইনপুট / আউটপুট ফর্ম্যাটগুলিকে খুব নমনীয় হিসাবে দেখেন?
ইটিএইচ প্রোডাকশনস

@ ইথ প্রডাকশনগুলি নিশ্চিত নয়, এটি বেশিরভাগ পাইথন-নির্দিষ্ট হতে পারে যে তালিকাগুলি স্ট্রিংয়ের চেয়ে অনেক বেশি হেরফেরযোগ্য।
xnor

8

ভিম, 18 , 17 বাইট

qqyljvPkvPll@qq@q

এটি অনলাইন চেষ্টা করুন!

পিছনের সামঞ্জস্যের কারণে এটি ভি ইন্টারপ্লেটার ব্যবহার করে। ইনপুট এই বিন্যাসে আসে:

string1
string2

ব্যাখ্যা:

 qq                 " Start recording in register 'q'
   yl               " Yank one letter
     j              " Move down a row
      vP            " Swap the yanked letter and the letter under the cursor
        k           " Move back up a row
         vP         " Swap the yanked letter and the letter under the cursor
           ll       " Move two letters to the right. This will throw an error once we're done
             @q     " Call macro 'q' recursively
               q    " Stop recording.
                @q  " Start the recursive loop

দ্বিতীয়টির পরিবর্তে এবং তারপরে ন্যায়বিচারের xপরিবর্তে দুটি অক্ষর কেটে ylPvPlqqxjvPkPll@qq@q
ফেলুন

@ লুকাস্জ আমি প্রথমে চেষ্টা করেছিলাম, তবে যে কারণেই হোক না কেন এটি অনেক বার চালায় এবং শেষ অক্ষরগুলি অদলবদল করে যখন এটি করা উচিত নয়। যদিও আমি এটি আরও
কিছুতে দেখব

আমার জন্য কাজ করে v.tryitonline.net/…
হাউলিথ

1
@ AsukaszNiemier এই লিঙ্কটিতে আমার পোস্টের মতোই কোড রয়েছে। আপনি কি [save]বোতামটি আঘাত করেছেন ? যেভাবেই হোক, এটি আমার পক্ষে কাজ করছে না । আসল কারণটি হ'ল কারণ যখন আপনি xলাইনের শেষ চরিত্রটি হবেন তখন এটি আপনার কার্সারকে বাম দিকে নিয়ে যায়, অদলবদলের স্থানটি বিশৃঙ্খলা করে।
ডিজেএমসিএমহেম

6

হাস্কেল, 41 বাইট

(a:b)#(c:d)=(a,c):d#b
_#_=[]
(unzip.).(#)

স্ট্রিং সহ একটি জুড়ি ফেরত দেয়। ব্যবহারের উদাহরণ: ( (unzip.).(#) ) "Hello," "world!"-> ("Hollo!","werld,")

সাধারণ রিকার্সিভ অ্যাপ্রোচ: প্রতিটি স্ট্রিংয়ের প্রথম চরটি জোড়া হিসাবে গ্রহণ করুন এবং (বাকি অংশের) স্ট্রিংগুলি অদলবদল করে একটি পুনরাবৃত্ত কলটি সংযোজন করুন। unzipজোড়া তালিকার বাইরে তালিকা তৈরি করে।


6

05 এ বি 1 ই , 11 10 বাইট

øvyNFÀ}})ø

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

ইনপুট = ["code", "golf"]উদাহরণ হিসাবে ব্যবহৃত।

ø             # zip strings into list of pairs
              # STACK: ['cg', 'oo', 'dl', 'ef']
 vy           # for each pair
   NFÀ        # rotate left index times
      }}      # end-if, end-loop
              # STACK: 'cg, 'oo', 'dl', 'fe'
        )ø    # wrap in list and zip
              # OUTPUT: ['codf', 'gole']

5

পার্ল, 48 বাইট

বাইটকাউন্টে কোড এবং -pপতাকাের 47 বাইট অন্তর্ভুক্ত রয়েছে ।

say<>=~s%.\K(.)%"s/.{$-[0]}\\K(.)/$1/;\$1"%geer

সঙ্গে -pএবং -Eপতাকা চালান । প্রতিটি স্ট্রিং আলাদা লাইনে প্রত্যাশা করুন:

perl -pE 'say<>=~s%.\K(.)%"s/.{$-[0]}\\K(.)/$1/;\$1"%geer' <<< "Hello
World"

ব্যাখ্যা :

-p: ইনপুট ক্যাপচার করুন এবং $_শেষে এটি মুদ্রণ করুন। (প্রথম স্ট্রিং পেতে এবং মুদ্রণ করতে)
<>: ইনপুট একটি লাইন পেতে। (দ্বিতীয় স্ট্রিং পেতে)।
=~: এতে একটি রেজেক্স প্রয়োগ করুন <>: s%%%geerযেখানে rপরিবর্তিত স্ট্রিংয়ের জন্য ধন্যবাদ ফিরে আসে (এবং তারপরে ধন্যবাদ মুদ্রিত হয় say)।
রেজেক্স:
.\K(.)দুটি অক্ষর সন্ধান করে এবং এই কোডটির মূল্যায়নের ফলাফলের সাথে দ্বিতীয়টি প্রতিস্থাপন করবে "s/.{$-[0]}\\K(.)/$1/;\$1":
প্রথম অংশটি s/.{$-[0]}\\K(.)/$1/একটি রেজেেক্স প্রয়োগ করে $_: .{$-[0]}বহিরাগত রেজেক্সের একই বিন্দুতে প্রথম অক্ষরগুলি এড়িয়ে যায় (যেহেতু $-[0]এতে রয়েছে প্রথম ক্যাপচার গ্রুপটির সূচক, সুতরাং সেই ক্ষেত্রে অক্ষরের সূচি প্রতিস্থাপনের জন্য), এবং তারপরে আমরা একটি চর ক্যাপচার করি(.)এবং এটিকে বহিরাগত রেজেক্স ( $1) এর অক্ষর দিয়ে প্রতিস্থাপন করুন । এবং তারপরে আমরা যুক্ত করি $1সুতরাং এর ফলাফলটি "s/.{$-[0]}\\K(.)/$1/;\$1"আমরা অভ্যন্তরীণ রেজেক্সে ধারণ করা চরিত্র।
আপনি লক্ষ্য করেছেন যে $1চরিত্রটি আমরা উভয় স্ট্রিংয়ে প্রতিস্থাপন করতে চাই (সুতরাং দুটি পৃথক অক্ষর) উল্লেখ করুন, তাই আমরা /eeরেগেক্সের সংশোধকটির সাথে খেলি যা রেগেক্সের ডান দিকটিকে দু'বার মূল্যায়ন করে: প্রথমটি কেবলমাত্র সেই $1দ্বীপটিকেই প্রতিস্থাপন করবে এর আগে নেই \


5

পাইথন, 55 বাইট

lambda a,b:[(-~len(a)/2*s)[::len(a)+1]for s in a+b,b+a]

Slicing!

58 বাইট:

def f(a,b):n=len(a);print[(s*n)[:n*n:n+1]for s in a+b,b+a]

64 বাইট:

f=lambda a,b,s='',t='':a and f(b[1:],a[1:],s+a[0],t+b[0])or[s,t]

পুনরাবৃত্তভাবে দুটি স্ট্রিংয়ের অক্ষরগুলিকে এবং এর মধ্যে একত্রিত করে sএবং tশেষে তাদের জোড়াটি আউটপুট করে। বিকল্পটি প্রতিটি পুনরাবৃত্ত কলকে ইনপুট স্ট্রিং স্যুইচ করে সম্পন্ন করা হয়। একটি স্পেস-বিভাজিত স্ট্রিং আউটপুটিং একই দৈর্ঘ্য ছিল:

lambda a,b,s='',t=' ':a and f(b[1:],a[1:],s+a[0],t+b[0])or s+t

এটি প্রথমটি হিসাবে দুটি সম্ভাব্য স্ট্রিংয়ের প্রতিটি দিয়ে পর্যায়ক্রমে প্রতিটি স্ট্রিং থেকে অক্ষর গ্রহণের একটি পৃথক পুনরাবৃত্ত কৌশলকে ছাড়িয়ে যায়। (65 বাইট)

g=lambda a,b:a and a[0]+g(b[1:],a[1:])
lambda a,b:(g(a,b),g(b,a))

4

এমএটিএল , 11 10 9 8 বাইট

বাইট অফ বন্ধের জন্য ইটিএইচ প্রডাকশনগুলিকে ধন্যবাদ!

"@X@YS&h

ইনপুট যেমন দুটি স্ট্রিং, ধারণকারী একটি 2D অ্যারে হল: ['Halloween'; 'Challenge']। আউটপুট স্ট্রিংগুলি বিপরীত ক্রমে রয়েছে।

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

        % Input 2D array implicitly
"       % For each column
  @     %   Push current column
  X@    %   Push iteration index, starting at 1
  YS    %   Circularly shift the column by that amount
  &h    %   Concatenate horizontally with (concatenated) previous columns
        % End implicitly
        % Display implicitly

পুরানো সংস্করণ: 9 বাইট

tZyP:1&YS

ব্যাখ্যা

        % Take input implicitly
t       % Duplicate 
        % STACK: ['Halloween'; 'Challenge'], ['Halloween'; 'Challenge']
Zy      % Size
        % STACK: ['Halloween'; 'Challenge'], [2 9]
P       % Flip array
        % STACK: ['Halloween'; 'Challenge'], [9 2]
:       % Range. Uses first element of the array as input
        % STACK: ['Halloween'; 'Challenge'], [1 2 3 4 5 6 7 8 9]
1&YS    % Circularly shift each column by those amounts respectively
        % STACK: [Caallwnee';'Hhlloeegn']
        % Display implicitly

পছন্দ করুন ধন্যবাদ!
লুইস মেন্ডো

4

জেলি , 5 বাইট

żṚż¥/

ইনপুট পৃথক যুক্তি হিসাবে, আউটপুট সংক্ষিপ্ত হয়।

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

কিভাবে এটা কাজ করে

żṚż¥/  Main link. Left argument: s (string). Right argument: t (string)

ż      Zipwith; yield the array of pairs of corresponding characters of s and t.
   ¥   Combine the two links to the left into a dyadic chain:
 Ṛ         Reverse the chain's left argument.
  ż        Zip the result with the chain's right argument.
    /  Reduce the return value of the initial ż by the quicklink Ṛż¥.

4

জেলি , 9 8 6 বাইট

2 বাইট সংরক্ষণের জন্য ডেনিসকে ধন্যবাদ !

Zṙ"J$Z

জেলি এনকোডিং ব্যবহার করে ।

এটি অনলাইন চেষ্টা করুন!


আপনি ṙ"J$পরিবর্তে ব্যবহার করতে পারেন Ėṙ@/€। এছাড়াও, স্ট্রিং পৃথক করার প্রয়োজন হয় না, তাই আপনি ড্রপ করতে পারেন Y
ডেনিস

@ ডেনিস আহ, এটা পরিষ্কার। ধন্যবাদ! :)
আদনান

3

ভি , 12 বাইট

lòyljvPkvPll

এটি অনলাইন চেষ্টা করুন!

খুব আকর্ষণীয় কিছু নয়, আমার ভিআইএম উত্তরের কেবল একটি প্রত্যক্ষ বন্দর যাতে আমি 05AB1E এর সাথে প্রতিযোগিতা করতে পারি (তবে পরাজিত করব না)।



3

জাভাস্ক্রিপ্ট (ES6), 51 54

সম্পাদনা করুন 3 সংরক্ষিত ধন্যবা বাইট @Neil

অ্যারে ইনপুট / আউটপুট সহ ফাংশন

p=>p.map((w,i)=>w.replace(/./g,(c,j)=>p[i+j&1][j]))

আমি এটি আরও একটি পছন্দ করি তবে এটি 55 টি (ইনপুটটিতে 2 টি স্ট্রিং, আউটপুটে অ্যারে)

(a,b)=>[...a].reduce(([p,q],c,i)=>[q+c,p+b[i]],['',''])

পরীক্ষা

f=
p=>p.map((w,i)=>w.replace(/./g,(c,j)=>p[i+j&1][j]))

function go() {
  var a=A.value, b=B.value
  if (a.length == b.length)
    O.textContent = f([a,b]).join('\n')
  else
    O.textContent = '- different length -'
    
}

go()
<input id=A value='Hello,'><input id=B value='world!'>
<button onclick='go()'>go</button><pre id=O></pre>


replaceআপনি সংরক্ষণ 3 বাইট: p=>p.map((w,i)=>w.replace(/./g,(c,j)=>a[i+j&1][j]))
নীল

2

পাইথ, 8 বাইট

C.e_FbkC

অনলাইনে চেষ্টা করুন: বিক্ষোভ

শব্দগুলি স্থানান্তর করে, প্রতিটি জোড়ের অক্ষরকে 'বর্তমান সূচি' -বারগুলি বিপরীত করে, আবার স্থানান্তর করে।


2

জাভাস্ক্রিপ্ট (ES6), 55 বাইট

f=([c,...s],[d,...t],o="",p="")=>c?f(t,s,o+c,p+d):[o,p]

বিকল্প চরিত্রগুলি প্রতিস্থাপন করতে আমি রিজেপ এক্স ব্যবহার করে কিছু চালাক করতে চেয়েছিলাম তবে এটি 67 that 57 বাইট নিয়ে শেষ হয়েছিল :

a=>a.map((s,i)=>a[+!i].replace(/.(.?)/g,(_,c,j)=>s[j]+c))

খুশী হলাম। আমার f=([a,...A],[b,...B])=>a?[a+f(B,A)[0],b+f(A,B)[0]]:[""]একই দৈর্ঘ্য ছিল।
ETH প্রোডাকশনগুলি

আমি অনেক ভাল করার আশাবাদী, তবে কোনও উপায় নেই, কেবল 1 কম। একটি পুনরাবৃত্ত উত্তর পোস্ট করার সময়
edc65

@ edc65 ব্যবহার করার জন্য দুর্দান্ত ধারণা map, এটি আমার রেজিএক্সএক্স উত্তরটি 10 ​​বাইট শেভ করে । এখনও অনেক দীর্ঘ যদিও।
নীল

2

পার্ল, 40 বাইট

এর জন্য +1 অন্তর্ভুক্ত -n

STDIN এ রেখা হিসাবে স্ট্রিং দিন

interlace.pl
hello
world
^D

interlace.pl

#!/usr/bin/perl -n
s/./${1&$.+pos}[pos]=$&/seg}{print@0,@1

2

জাভা, 132 103 100 বাইট

কেভিন ক্রুইজসেনকে অ্যারে ফিরিয়ে দেওয়ার (অন্য উন্নতির মধ্যে) পরামর্শ দেওয়ার জন্য এবং 29 বাইট সংরক্ষণ করার জন্য ধন্যবাদ! এছাড়াও 3 বাইটের জন্য অলিভিয়ের গ্রাগোয়ার!

char[]c(char[]s,int l){for(int o=l;o-->0;)if(o%2>0){char t=s[o];s[o]=s[l+o+1];s[l+o+1]=t;}return s;}

এভাবে ডাকা:

public static void main(String[] args) {
    System.out.println(c("Hello,world!".toCharArray(), 5)); // 5 is the length of each "String"
}

আউটপুট:

Hollo,werld!

ইনপুটটি মূলত যে কোনও উপায়ে ফর্ম্যাট করা যায় (এই ক্ষেত্রে স্ট্রিংগুলির একটি একক চর অ্যারে যা কমা দ্বারা বিসর্জনিত হয়) এবং সেইসাথে বেশ লেন্সিয়েন্ট আউটপুট নিয়মেরও সুবিধা গ্রহণ করে।


হাই, আসল ইনপুট ফর্ম্যাটটি আপনি সেখানে পেয়েছেন। আপনি এটি আরও কিছুটা গল্ফ করতে পারেন: char[]c(char[]s,int l){for(int o=l,t;o-->0;)if(l%2>0){t=s[l];s[l]=s[l+o+1];s[l+o+1]=(char)t;}return s;}( 103 বাইট ) সরাসরি মুদ্রণের পরিবর্তে আউটপুট ফেরত দিয়ে। উদাহরণ ইনপুট: System.out.println(c("Hello,world!".toCharArray(), 5));; উদাহরণ আউটপুট: Hollo,werld!
কেভিন ক্রুইজসেন

যথেষ্ট সত্য, আমি কোনও কারণে কেবল চর অ্যারে ফিরিয়ে আনার বিষয়টি বিবেচনা করি নি। দারুণ!
হাইপিনো

ফলাফলটি হওয়া উচিত Hollo!werld,এবং না Hollo,werld!(বিরামচিহ্ন ভুল)। আমি বিশ্বাস করি এটি 5 এর পরিবর্তে 6 এর ইনপুট মান দিয়ে স্থির করা যেতে পারে
অলিভিয়ের গ্রাগোয়ার

আপনি যেহেতু কাস্ট tকরেছেন char, আপনি কেন সরাসরি লুপের জন্য এটিকে ঘোষণা করেন না char? আপনি এটি করতে কয়েক বাইট ছাড়বেন।
অলিভিয়ার গ্রোগোয়ার 14

দুর্ভাগ্যক্রমে আপনি লুপ ইনিশিয়ালাইজারের মধ্যে চরটি ঘোষণা করতে পারবেন না, তবে আপনি আমাকে আলাদাভাবে চরটি ঘোষণার মাধ্যমে কাস্টের চেয়ে সংক্ষিপ্ত হবে কিনা তা পরীক্ষা করতে অনুপ্রেরণা দিয়েছিলেন এবং এটি সত্যই 1 বাইট দ্বারা রয়েছে।
হাইপিনো

1

সি, 124 বাইট

main(c,v)char**v;{char a[99],b[99];for(c=0;v[1][c]^0;++c){a[c]=v[1+c%2][c];b[c]=v[2-c%2][c];}a[c]=0;b[c]=0;puts(a);puts(b);}

সাথে কল করুন:

program.exe string1 string2

স্ট্রিং দৈর্ঘ্য 98 টি অক্ষরের মধ্যে সীমাবদ্ধ।


1

অক্টাভা , 64 61 বাইট

@(x)reshape(x((t=1:end)+(2*mod(t,2)-1).*(mod(t-1,4)>1)),2,[])

বেনামে ফাংশন যা প্রতিটি স্ট্রিংয়ের সাথে একটি সারিতে 2D চর অ্যারে ইনপুট করে এবং একই ফর্ম্যাটে আউটপুট উত্পাদন করে।

Ideone এ ব্যবহার করে দেখুন


1

র‌্যাকেট 208 বাইট

(let((sl string->list)(ls list->string)(r reverse))(let p((s(sl s))(t(sl t))(u'())(v'())(g #t))(if(null? s)
(list(ls(r u))(ls(r v)))(p(cdr s)(cdr t)(cons(car(if g s t))u)(cons(car(if g t s))v)(if g #f #t)))))

Ungolfed:

(define (f s t)
  (let ((sl string->list)                ; create short names of fns
        (ls list->string)
        (r reverse))
    (let loop ((s (sl s))                ; convert string to lists
               (t (sl t))
               (u '())                   ; create empty new lists
               (v '())
               (g #t))                   ; a boolean flag
      (if (null? s)                      ; if done, return new lists converted back to strings
          (list (ls (r u))
                (ls (r v)))
          (loop (rest s)
                (rest t)                 ; keep adding chars to new lists alternately
                (cons (first (if g s t)) u) 
                (cons (first (if g t s)) v)
                (if g #f #t))            ; alternate the boolean flag
          ))))

পরীক্ষামূলক:

(f "abcdef" "123456")

আউটপুট:

'("a2c4e6" "1b3d5f")

উপরে পুনরাবৃত্ত সংস্করণ।

Iterative সংস্করণ:

(let*((sl string->list)(ls list->string)(r reverse)(s(sl s))(t(sl t))(l'())(k'())(p(λ(a b g)(set! l(cons(if g a b)l))
(set! k(cons(if g b a)k)))))(for((i s)(j t)(n(in-naturals)))(p i j(if(= 0(modulo n 2)) #t #f)))(list(ls(r l))(ls(r k))))

Ungolfed:

(define (f s t)
  (let* ((sl string->list)              ; create short form of fn names
         (ls list->string)
         (r reverse)

         (s (sl s))                     ; convert strings to lists
         (t (sl t))

         (l '())                        ; create empty lists for new sequences
         (k '())

         (p (λ(a b g)                   ; fn to add chars to one or other list
              (set! l (cons (if g a b) l))
              (set! k (cons (if g b a) k)))))

    (for ((i s)(j t)(n (in-naturals)))  ; loop with both strings
          (p i j                        ; add to new lists alternately
             (if (= 0 (modulo n 2)) #t #f)))

    (list (ls (r l))                  ; convert reversed lists to strings
          (ls (r k)))))

1

পাওয়ারশেল ভি 2 +, 82 বাইট

param($a,$b)$i=0;[char[]]$a|%{$c+=($_,$b[$i])[$i%2];$d+=($b[$i],$_)[$i++%2]};$c;$d

এখনও গল্ফ করছে ... না অন্যান্য উত্তরের মতো একটি রেজেেক্স ব্যবহার না করে (এ্যালগোরিদমগুলি অনুলিপি করার ক্ষেত্রে) এটিকে গল্ফ বলে মনে হচ্ছে না।

সুতরাং আমরা স্ট্রিং হিসাবে গ্রহণ করি $aএবং $bসূচি সেট $iকরে 0, অ্যারে $aহিসাবে কাস্ট charকরি এবং এটি একটি লুপের মাধ্যমে প্রেরণ করি |%{...}। প্রতিটি পুনরাবৃত্তির, আমরা করছি স্ট্রিং-concatenating সম্মুখের $cএবং $dএকটি অ্যারের-নির্বাচন মধ্যে ইন্ডেক্স দ্বারা (অর্থাত, তাই এটি বিকল্পসমূহ আগে পিছে)। তারপরে, আমরা প্রস্থান করি $cএবং $dপাইপলাইনে, এবং অন্তর্ভুক্ত মাধ্যমে আউটপুট Write-Outputপ্রোগ্রামের সমাপ্তিতে ঘটে।


1

লিথপ , 120 টি অক্ষর (+3 -v1 পতাকার জন্য)

পঠনযোগ্যতার জন্য 2 এ লাইন বিভক্ত:

#P::((invoke P "map" (js-bridge #W,I::(replace W (regex "." "g")
     (js-bridge #C,J::(index (index P (& (+ I J) 1)) J))))))

প্রয়োজন -v1run.jsকিছু ফাংশন এখনও স্ট্যান্ডার্ড লাইব্রেরির অংশ না পতাকাটি আবশ্যক ।

নমুনা ব্যবহার:

(
    (def f #P::((invoke P "map" (js-bridge #W,I::(replace W (regex "." "g")
                (js-bridge #C,J::(index (index P (& (+ I J) 1)) J)))))))
    (print (f (list "Hello," "world!")))
)

এই ধরণের হাইলাইটগুলি যা আমি স্ট্যান্ডার্ড লাইব্রেরিতে যথেষ্ট সময় ব্যয় করি না। js-bridge/1দু'বার ব্যবহার করতে হবে এবং লম্বা রেইগেক্স ফর্মটি ব্যবহার করার পাশাপাশি মানচিত্রটিও চাওয়া হবেinvoke/* এই সব অনেক লম্বা তুলনায় এটি করা প্রয়োজন হচ্ছে অবদান।

আমার স্ট্যান্ডার্ড লাইব্রেরিতে কাজ করার সময়টি আমার বেশি মনে হয়।


1

পিএইচপি, 79 বাইট

for(;$i<=strlen(($a=$argv)[1]);$y.=$a[2-$i%2][$i++])echo$a[1+$i%2][+$i]??" $y";

পূর্ববর্তী সংস্করণ পিএইচপি, 82 বাইট

for(;$i<strlen(($a=$argv)[1]);$y.=$a[2-$i%2][$i++])$x.=$a[1+$i%2][$i];echo"$x $y";

for(...)echo$a[1+$i%2][$i];echo" $y";(-2)
তিতাস

তিতাসের মন্তব্যে তৈরি for(;$i<=strlen(($a=$argv)[1]);$y.=$a[2-$i%2][$i++])echo$a[1+$i%2][$i]??" $y";করা আরও -2, যদিও এটি পিএইচপি 7
ইউজার 59178

@ ব্যবহারকারী59178 ভাল তবে আপনার আরও 1 বাইট দরকার
Jörg Hülsermann

আপনি কি? এটি আমার পক্ষে কাজ করে, আপনি কেবল একটিNotice: String offset cast occurred in Command line code on line 1
वापरकर्ता59178

@ ব্যবহারকারী59178 হ্যাঁ প্রথম শব্দের প্রথম অক্ষর মুদ্রণ করতে
জার্গ হালসারম্যান

1

সি, 54 52 বাইট

f(char*a,char*b,char*c){while(*c++=*a++,*c++=*b++);}

অনুমান আউটপুট cইতিমধ্যে পছন্দসই দৈর্ঘ্য আছে।

ব্যবহার:

main(){
 char a[]="123456";
 char b[]="abcdef";
 char c[sizeof(a)+sizeof(b)-1];
 f(a,b,c);
 puts(c);

}

আপনি যদি আউটপুট তৈরিতে জোর দিয়ে থাকেন তবে এখানে একটি 91 বাইট সমাধান রয়েছে:

char*g(char*a,char*b){char*c=malloc(2*strlen(a)),*d=c;while(*c++=*a++,*c++=*b++);return d;}

ব্যবহার:

main(){
 char a[]="123456";
 char b[]="abcdef";
 puts(g(a,b));
}

0

সি, 150 বাইট

আমি হেডার ফাইলগুলির main()রিটার্ন টাইপ এবং রিটার্নের বিবৃতিগুলির সাধারণ বাদ দিয়েছি । এটি একটি সতর্কতা ছুড়ে, তবে ইস্যু ছাড়াই সংকলন করে। আমি একটি জিসিসি-নির্দিষ্ট কৌশলও ব্যবহার করেছি যা ভেরিয়েবল এক্সপ্রেশন সহ অ্যারে ঘোষণার অনুমতি দেয় allows

প্রোগ্রামটি কমান্ড লাইন থেকে স্ট্রিংগুলি প্রত্যাশা করে এবং এর মতো করে প্রোগ্রামটি চালানো উচিত ./a.out string1 string2

main(int a,char**v){int x=strlen(v[1]);char s[x],t[x],c;strcpy(s,v[1]);strcpy(t,v[2]);for(a=0;a<x;++a)if(a%2)c=s[a],s[a]=t[a],t[a]=c;puts(s),puts(t);}

বা আরও সুস্পষ্টভাবে,

main(int a,char**v){
    int x=strlen(v[1]);
    char s[x],t[x],c;
    strcpy(s,v[1]);strcpy(t,v[2]);
    for(a=0;a<x;++a)
        if(a%2)c=s[a],s[a]=t[a],t[a]=c;
    puts(s),puts(t);
}

0

গণিত, 51 বাইট

একই বিন্যাসে আউটপুট সহ অক্ষরের দুটি অ্যারের অ্যারে হিসাবে ইনপুট নেয়। ফাংশনটি কেবল একটি (মড 2) ক্রিয়া ব্যবহার করে নতুন অ্যারে তৈরি করে।

Table[#[[Mod[j+i,2]+1,j]],{i,2},{j,Length@#[[1]]}]&

0

কিউব্যাসিক 4.5, 172 বাইট

খুব, এই ওল 'কিউবাসিক ...

DEFSTR A-D:INPUT A,B
IF LEN(A)MOD 2=1 THEN A=A+" ":B=B+" "
FOR x=1 TO LEN(A) STEP 2
C=C+MID$(A,x,1)+MID$(B,x+1,1):D=D+MID$(B,x,1)+MID$(A,x+1,1):NEXT:?RTRIM$(C),RTRIM$(D)

মজাদার ঘটনা: DEFSTRব্যয়ের চেয়ে বেশি বাইট ব্যবহার করা কারণ এখন আমি এর Aপরিবর্তে ব্যবহার করতে পারতাম a$


0

কিউবিআইসি , 112 বাইট

কিউবিআইসি অনেকগুলি কিউব্যাসিক বয়লারপ্লেটকে প্রবাহিত করতে পারে তবে মূল MID$ইঞ্জিনটি এখনও কিউব্যাসিকে করা দরকার কারণ কিউবিআইসিতে একটি স্ট্রিং-ফাংশন নেই। তবুও, আমাকে 60 বাইট সংরক্ষণ করে

;;_LA|~a%2=1|A=A+@ | B=B+C][1,a,2|X=X+$MID$(A$,b,1)+MID$(B$,b+1,1):Y$=Y$+MID$(B$,b,1)+MID$(A$,b+1,1)|]?_tX|,_tY|

MIND$=> MIN$পাঠ্যে।
চার্লস

0

জাভা, 68 বাইট

(a,b)->{for(int i=a.length;--i>0;){char t=a[--i];a[i]=b[i];b[i]=t;}}

Ungolfed এবং পরীক্ষা

import java.util.Arrays;
import java.util.Collection;
import java.util.function.BiConsumer;

public class Main {

  static BiConsumer<char[], char[]> func = (left, right) -> {
      for (int i = left.length; --i > 0;) {
        char temp = left[--i];
        left[i] = right[i];
        right[i] = temp;
      }
    };

  public static void main(String[] args) {
    test("Hello,","world!", "Hollo!", "werld,");
    test("code", "golf", "codf", "gole");
    test("happy", "angry", "hnpry", "aagpy");
  }

  private static void test(String left, String right, String x, String y) {
    char[] leftChars = left.toCharArray();
    char[] rightChars = right.toCharArray();
    func.accept(leftChars, rightChars);
    Collection mixed = Arrays.asList(new String(leftChars), new String(rightChars));
    if (mixed.containsAll(Arrays.asList(x, y))) {
      System.out.println("OK");
    } else {
      System.out.printf("NOK: %s, %s -> %s%n", left, right, mixed);
    }
  }
}

0

এপিএল, 12

{↓(⍳⍴⊃⍵)⊖↑⍵}

ব্যাখ্যা: {... a একটি ফাংশন সংজ্ঞায়িত করে, ⍵ সঠিক যুক্তি। টেক (↑) দুটি স্ট্রিংয়ের মধ্যে একটি ম্যাট্রিক্স তৈরি করে, তারপরে প্রতিটি কলামকে (times) n বার ঘোরায়, যেখানে এন বন্ধনী (⍳⍴⊃⍵) এর অংশ। এটি প্রথম আর্গুমেন্টের দৈর্ঘ্যের আইওটা হিসাবে সংজ্ঞায়িত। (উদা: দৈর্ঘ্য = 5 ==> 1 2 3 4 5)। সুতরাং প্রথম কলামটি একবার ঘোরানো হয়, দ্বিতীয়বার দ্বিতীয়বার (মূল অবস্থানে ফিরে আসা), তৃতীয় কলামটি তিনবার, ইত্যাদি ...

এ ব্যবহার করে দেখুন tryapl.org

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.