শব্দ পেরিয়ে


21

ইনপুট:

দুটি স্ট্রিং (দ্রষ্টব্য: ইনপুট ক্রমটি গুরুত্বপূর্ণ)।

আউটপুট:

উভয় শব্দ / বাক্যগুলির মধ্যে একটি ফাঁকা লাইন দিয়ে লাইনে শুরু হয়। তারা 'একে অপরের পাশে অনুভূমিকভাবে' হাঁটাচলা করে। কিন্তু যখন তাদের একই পজিশনে একই চরিত্র থাকে তখন তারা একে অপরকে অতিক্রম করে এবং তারপরে 'একে অপরের পাশে' হাঁটতে থাকে।

আপনি কি বিভ্রান্ত বলছেন? আসুন একটি উদাহরণ দিন:

ইনপুট: Words crossing overএবং Ducks quacking:

Word  quack n 
    s      i g
Duck  cross n  over

আপনি দেখতে পাচ্ছেন, এগুলি হ'ল পথগুলি:
খারাপ এমএস পেইন্টের ক্ষমা করুন ..

চ্যালেঞ্জ বিধি:

  • আমরা আবার পার হয়ে যাওয়ার আগে 'পার হয়ে' যাওয়ার পরে আমরা সর্বদা প্রথমে সরলরেখায় ফিরে যাই (পরীক্ষার কেস {1 above এর উপরে দেখুন - যেখানে ingসমান, তবে iআমরা প্রথমে ফিরে যেতে হবে) সোজা হাঁটা (এভাবে উপেক্ষা করা n) এর আগে আমরা আবার পার হব g)।
  • ইনপুটগুলি বিভিন্ন দৈর্ঘ্যের হতে পারে, এক্ষেত্রে দীর্ঘতর একটি সরলরেখায় চলতে থাকে (পরীক্ষার কেস 1, 2, 4 এবং 6 দেখুন)।
  • উভয় ইনপুট একই হতে পারে (পরীক্ষার কেস দেখুন 3)।
  • ইনপুটগুলিতে কোনও ট্যাব বা নতুন লাইন থাকবে না।
  • স্থানগুলি একই (একটি প্রান্তের কেস হিসাবে) অক্ষর হিসাবে অগ্রাহ্য করা হয় , এরপরে পরবর্তী (স্থান ছাড়াই) অক্ষর - যদি কোনও হয় - পরিবর্তে অতিক্রম করে চলেছে (পরীক্ষার কেস 3, 5 এবং 6 দেখুন)।
  • ইনপুটগুলির একই পজিশনে কোনও সংলগ্ন (স্পেসহীন) অক্ষর থাকতে পারে না, উভয় ক্ষেত্রে কেবল অনুভূমিকভাবে একটি সরলরেখায় হাঁটুন (পরীক্ষার কেস ২ দেখুন)।
  • প্রথম চরিত্রটি সমান হলেও, আমরা সর্বদা দুটি লাইন পৃথক করে শুরু করি (পরীক্ষার কেস 3 এবং 6 দেখুন)।
  • ট্রেলিং স্পেস এবং একটি একক পেছনের নতুন লাইন alচ্ছিক।
  • আপনি ধরে নিতে পারেন ইনপুটগুলিতে কেবল প্রিন্টযোগ্য এএসসিআইআই অক্ষর থাকবে (নতুন লাইন এবং ট্যাবগুলি বাদ দেওয়া হয়েছে)।
  • ইনপুট কেস সংবেদনশীল হয়, তাই Aএবং aসমান নয়, এবং (পরীক্ষা ক্ষেত্রে 7 দেখুন) নদী পার হয়ে করা হবে না।
  • উভয় ইনপুট দৈর্ঘ্য সর্বদা সর্বনিম্ন 2 হবে।
  • ইনপুট এবং আউটপুট যে কোনও যুক্তিসঙ্গত বিন্যাসে হতে পারে। নতুন লাইনের সাথে একক স্ট্রিং হতে পারে; একটি স্ট্রিং-অ্যারে / তালিকা; STDOUT এ মুদ্রিত; 2D অক্ষরের অ্যারে; প্রভৃতি

সাধারাইওন রুল:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার পক্ষে যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • স্ট্যান্ডার্ড নিয়মগুলি আপনার উত্তরের জন্য প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং রিটার্ন-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের জন্য একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন।
  • এছাড়াও, প্রয়োজনে একটি ব্যাখ্যা যোগ করুন।

পরীক্ষার কেস:

1. Input: "Words crossing over" & "Ducks quacking"

1. Output:
Word  quack n 
    s      i g
Duck  cross n  over

2. Input: "bananas" & "ananas"

2. Output:
bananas

ananas

3. Input: "I see my twin!" & "I see my twin!"

3. Output:
I  e   y  w n 
  s e m  t i !
I  e   y  w n 

4. Input: "Is the weather nice?" & "Not really, no.."

4. Output:
Is th ally, no..
     e
Not r  weather nice?

5. Input: "Codegolf & Programming Puzzles" & "The golfer might solve puzzles"

5. Output:
Code o f & Programming P z l s
    g l                 u z e
The  o fer might solve p z l s

6. Input: "Can you turn the lights off?" & "Can you try to solve this?"

6. Output:
C n  o   urn the  ve  s off?
 a  y u t        l   t 
C n  o   ry to so igh his?

7. Input: "one Ampere" & "two apples"

7. Output:
one Am les
      p
two ap ere

8. Input: "Words crossing" & "Words Quacking"

8. Output:
W r s cross n 
 o d       i g
W r s Quack n 

উত্তর:


4

জাপট , 56 47 33 বাইট

y ®m+S éBv ©ZꬩZx ?°B:B=c2)¯3÷y

এটি অনলাইন পরীক্ষা! দুটি স্ট্রিংয়ের অ্যারে হিসাবে ইনপুট নেয়।

আমি মোট মুরন ... y ®দুটি পৃথক দৈর্ঘ্যের স্ট্রিংয়ের চেয়ে মিলিয়ন গুণ বেশি সহজ U¬íV¬@...

ব্যাখ্যা

y ®   m+S éBv © Zê¬ © Zx ?° B:B= c2)¯  3à ·  y
y mZ{Zm+S éBv &&Zêq &&Zx ?++B:B=Bc2)s0,3} qR y

              Implicit: U = array of two strings
y             Transpose U, padding the shorter string with spaces in the process.
mZ{        }  Map each pair of chars Z by this function: (we'll call the chars X and Y)
  Zm+S          Append a space to each char, giving X + " " + Y + " ".
  Bv            If B is divisible by 2
  &&Zêq           and Z is a palindrome (X and Y are the same)
  &&Zx ?          and Z.trim() is not empty (X and Y are not spaces):
    ++B           Increment B. B is now odd; the top and bottom strings are swapping.
  :             Otherwise:
    B=Bc2         Ceiling B to a multiple of 2. (0 -> 0, 1 -> 2, 2 -> 2, etc.)
  é       )     Rotate the string generated earlier this many chars to the right.
  s0,3          Take only the first 3 chars of the result.
qR            Join the resulting array of strings with newlines.
y             Transpose rows with columns.
              Implicit: output result of last expression

B একটি পরিবর্তনশীল যা আমরা কোন রাজ্যে আছি তা ট্র্যাক করে রাখে:

  • B % 4 == 0 উপরে প্রথম শব্দটির অর্থ, তবে স্যুইচ করার জন্য প্রস্তুত;
  • B % 4 == 1 এর অর্থ আমরা সবে বদল করেছি;
  • B % 4 == 2 উপরে দ্বিতীয় শব্দটির অর্থ, তবে স্যুইচ করার জন্য প্রস্তুত;
  • B % 4 == 3 মানে আমরা সবে ফিরে এসেছি।

Bপ্রিসেট হতে পারে 11; যেহেতু 11 % 4 == 3, প্রথম কলামে সর্বদা প্রথম শব্দ থাকে। আমরা যে Bকোনও সময় শব্দের অবস্থানগুলি অদলবদল করে অথবা যে কোনও সময় এটি বিজোড় (সাথে B=c2) বাড়িয়েছি ।


6

এপিএল (ডায়ালগ) , 64 বাইট

{C←⎕UCS1e' '1 0 1⍀⍵⊖⍨≠\eC(2/⊃l)⎕R(lC⌽⍳2)C(0@0=⌿⍵)∧' '1⌷⍵}

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



@ মিঃ এক্সকোডার ধন্যবাদ এখনই ঠিক করা উচিত।
অ্যাডম

ঠিক আছে, তাহলে ভাল সমাধান। আপনার যদি সময় থাকে তবে সম্ভবত আপনি একটি ব্যাখ্যা যুক্ত করতে পারেন: পি
মিঃ এক্সকডার

@ মিঃ এক্সকোডার হ্যাঁ, আমি সবসময়ই করি। (আপনি যদি আমার কোনও
অব্যক্ত

1
@ অ্যাডাম হ্যাঁ অবশ্যই ... না হতে পারে ? কি কিছু থাকতে পারে এই পাশাপাশি ... ওহ এবং একটি অব্যাখ্যাত উত্তর ! নাকি দুটো ...? এবং কিছু আমি যথেষ্ট পেতে না
এরিক দ্য আউটগল্ফার

4

কাঠকয়লা , 69 বাইট

AE⮌θιθAE⮌ηιηW∧θη«A⊟θεA⊟ηδA∧¬∨φ⁼ε ⁼εδφ¿φ«εAθδAηθAδη»«↑↓ε↓↗δ»»¿θ↑↓↑⮌⁺θη

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

AE⮌θιθAE⮌ηιη        Turn the input strings into arrays and reverse them
W∧θη«               While both valus still have characters left
     A⊟θεA⊟ηδ       Extract the next pair of characters
     A∧¬∨φ⁼ε ⁼εδφ   Determine whether this is a crossing point
     ¿φ«εAθδAηθAδη  If so then print the character and switch the value
      »«↑↓ε↓↗δ»»     Otherwise print the two characters apart
¿θ↑↓                Move to print any remaining characters accordingly
↑⮌⁺θη               Print any remaining characters

3

পাইথন 2 , 217 210 বাইট

-1 বাইট ধন্যবাদ অফিসিয়ালাইমকে

a,b=map(list,input())
n=max(len(a),len(b))
c=[' ']*n
a=(a+c)[:n]
b=(b+c)[:n]
for i in range(1,n):
 if a[i]==b[i]!=' '==c[i-1]:c[i]=a[i];a[i]=b[i]=' ';a[i:],b[i:]=b[i:],a[i:]
print'\n'.join(map(''.join,[a,c,b]))

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


1
পূর্বনির্ধারিত দ্বারা 1 বাইটs=' '
অফিসিয়ালাইম

1
@officialaimm আমি কিছু পরিবর্তন করেছি, এখন এটির বাইট গণনা = /
রড

2

হাস্কেল, 142 138 বাইট

g(a:b)f(c:d)|f>0,a==c,a>' '=[' ',a,' ']:g d 0b|1<2=[a,' ',c]:g b 1d
g[]_[]=[]
g b f d=g(max" "b)f$max" "d
a&b=[[j!!i|j<-g a 0b]|i<-[0..2]]

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

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

g                    -- function g constructs a list of lists of three characters
                     --   the 1st char belongs to the upper line,
                     --   the 2nd char to the middle line and
                     --   the 3rd char to the lower line
      f              -- flag f indicates if crossing is allowed or not
 (a:b) (c:d)         -- strings to cross
  |f>0               -- if crossing is allowed
      ,a==c          -- and both strings start with the same char
           ,a>' '    --   that is not a space
   =[' ',a,' ']      -- return space for upper/lower line and char a for the middle line
      :g d 0b        -- and go on with crossing disabled and strings swapped
 |1<2=               -- else
   [a,' ',c]         -- keep chars in their lines and
      :g b 1d        --  go on with crossing enabled

g[]_[]=[]            -- base case: stop when both strings are empty

g b f d=             -- if exactly one string runs out of characters
 g(max" "b)f$max" "d --   replace it with a single space and retry

a&b=                 -- main function
          i<-[0..2]  -- for each line i from [0,1,2]    
       j<-g a 0b     -- walk through the result of a call to g with crossing disabled
    j!!i             -- and pick the char for the current line  

+1 সুন্দর উত্তর। এটি মনে হয় তবে এটি একটি সামান্য বাগ রয়েছে, কারণ এটি এখন প্রথম দুটি অক্ষর সমান হওয়ার পরে শুরু হয়, 3, 6 এবং 8 পরীক্ষার মতো ( টিআইও )। এছাড়াও, আমি মনে করি আপনি আপনার ব্যাখ্যা বাক্যটিতে একটি শব্দ ভুলে গেছেন "উপরের / নিম্ন রেখার জন্য ফিরে আসার জায়গা এবং মাঝের লাইনের জন্য " ¿¿ । "।
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন: বাগটি খুঁজে পাওয়ার জন্য ধন্যবাদ। ভাগ্যক্রমে এটি ঠিক করা সহজ: শুরু দিয়েই g 0। অনুপস্থিত শব্দটি সম্পর্কে: "এ" যেমন "ভেরিয়েবল নামের একটি", তবে এটি সত্যই বিভ্রান্তিকর, তাই আমি এটি উচ্চারণ করেছিলাম।
নিমি

আহ a! :) aভেরিয়েবলগুলিকে ইঙ্গিত করার সময় আমি ব্যক্তিগতভাবে আমার ব্যাখ্যাগুলিতে ব্যবহার করি যদিও এটি সাধারণত ছাড়াই যথেষ্ট clear স্পষ্টতার জন্য ধন্যবাদ, এবং আমি সত্যিই এটির জন্য একটি খুব সহজ বাগ-ফিক্স আশা করছিলাম।
কেভিন ক্রুইজসেন

কীভাবে 'আর একটি মন্তব্যে 'a' ( ব্যাক-টিক দিয়ে প্রতিস্থাপন করা হবে) কীভাবে করবেন তা নিশ্চিত নই, যা আমি বলতে চেয়েছিলাম .. (তাই আমি আমার কোড-ব্লকের ভিতরে ভেরিয়েবলের চারপাশে ব্যাক-টিক্স ব্যবহার করি।)
কেভিন ক্রুইজসেন

2

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

(a,b,c='',g=([a,...A],[b,...B],w)=>a?w&a==b&a>' '?' '+g(B,A,c+=a):a+g(A,B,1,c+=' '):'')=>g(a,b)+`
`+c+`
`+g(b,a)

Ungolfed:

f=
(a,b,                                    //the inputs
 c='',                                   //c will hold the middle sentence
 g=([a,...A],[b,...B],w)=>               //define a function to walk through the strings
                                         //w will be false if we're at the beginning,
                                         //... or if we've just done a swap
     a?                                  //are there any letters left?
       w&a==b&a>' '?' '+g(B,A,c+=a):     //if we haven't just swapped and the letters match,
                                         //... add the current letter to c 
                                         //... and recurse swapping the strings
                    a+g(A,B,1,c+=' '):   //else add a space to c and continue processing
                    ''
)=>
g(a,b)+'\n'+                             //call g with a, b
c+'\n'+                                  //output c
g(b,a)                                   //call g with b, a

পরীক্ষার কেস:


1

এপিএল (ডায়ালগ) , 50 বাইট

{3↑(0,+\2∨/2|{⍵⌈a×1+11↓⍵}⍣≡a←>⌿2=⌿3↑⍵)⊖⍵⍀⍨¯1*⍳4}

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

⍵⍀⍨¯1*⍳4 ম্যাট্রিক্স দেয়:

Words.crossing.over
...................
Ducks.quacking.....
...................

(বিন্দুগুলি স্থানগুলিকে উপস্থাপন করে)। এর কলামগুলি বিভিন্ন পরিমাণে আবর্তিত হবে যাতে প্রথম তিনটি সারি পছন্দসই ফলাফলের মতো দেখতে শেষ হয় - তাই3↑ এটি শুরুতে কাছাকাছি। বাকি অ্যালগরিদম ঘোরার পরিমাণের গণনা করে।

পেরেনগুলির মধ্যে: 3↑⍵একটি ম্যাট্রিক্সের মতো তৈরি করে

Words.crossing.over
Ducks.quacking.....
...................

এবং 2=⌿এর সারিগুলিকে জোড় করে তুলনা করে, অর্থাত প্রথম স্ট্রিং বনাম দ্বিতীয় স্ট্রিং এবং দ্বিতীয় স্ট্রিং বনাম সমস্ত শূন্যস্থান সারি।

0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1

প্রাক্তনটি সত্য যেখানে (1) এবং পরবর্তীটি মিথ্যা (0) সে বিষয়ে আমরা আগ্রহী, সুতরাং আমরা >⌿বুলিয়ান ভেক্টর নামটি কমাতে কমিয়ে আনব a

0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0

এখন, 1-s এর প্রতিটি প্রান্তে আমাদের এমনকি সংঘটনগুলি শূন্য করা দরকার কারণ কোনও দুটি বাঁক একে অপরের পাশে ঘটতে পারে না। প্রথমে আমরা একটি নম্বর পেয়েছি:

0 0 0 0 1 0 0 0 0 0 0 1 2 3 0 0 0 0 0

দ্বারা ঢিলেঢালাভাবে ভাষী প্রতিস্থাপন, a[i]সঙ্গে a[i]*max(a[i-1]+1, a[i])পর্যন্ত ফলাফলের স্থির রাখে: {⍵⌈a×1+1,¯1↓⍵}⍣≡, এবং আমরা যে গেলিক ভাষার 2 নেওয়া:2|

0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0

এখন আমরা জানি টুইস্টগুলি কোথায় ঘটবে। আমরা প্রত্যেককে 1বামে অনুলিপি করি - 2∨/ (জোড়াযুক্ত "বা"):

0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0

এবং আংশিক পরিমাণ গণনা - +\

0 0 0 0 1 2 2 2 2 2 2 3 4 5 6 6 6 6 6

এটি আমাদের প্রথমদিকে কলাম ঘোরার পরিমাণ দেয়। মডুলো 4 নিহিত


নিস! এমনকি অ্যাডামের চেয়ে 14 বাইট কম । আপনি কি একটি ব্যাখ্যা যুক্ত করতে পারেন (আমি নিশ্চিত যে আমরা কথা বলার সাথে সাথে এটি তৈরি করে দিচ্ছি, তবে আপনি যদি না হন তবে ..;)
কেভিন ক্রুইজসেন

ব্যাখ্যাগুলি এটি কীভাবে আপনার নিজের উপর কাজ করে তা অনুধাবনের আনন্দকে কেবল দূরে সরিয়ে দেয় ... :)
এনজিএন

1

পার্ল 5 , 211 বাইট

@a=map[/./g],<>;$b=1;($f,@{$r[$i]})=$a[0][$i]eq$a[1][$i]&&$f&&$a[0][$i]ne$"?(0,$",$a[0][$i],$",$t=$b++):(1,$a[$t%2][$i],$",$a[$b%2][$i]),$i++while$a[0][$i]||$a[1][$i];for$i(0..2){print$r[$_][$i]for 0..$#r;say''}

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

# পার্ল 5 , 234 বাইট

কেভিন নির্দেশিত বাগ স্থির করে

@a=map[/./g],<>;$l=@{$a[0]}>@{$a[1]}?@{$a[0]}:@{$a[1]};$b=1;@{$r[$_]}=$a[0][$_]eq$a[1][$_]&&$_&&$r[$_-1][1]eq$"&&$a[0][$_]ne$"?($",$a[0][$_],$",$t=$b++):($a[$t%2][$_],$",$a[$b%2][$_])for 0..$l;for$i(0..2){print$r[$_][$i]for 0..$l;say}

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


হাই, যখন আমি পরীক্ষার কেসটি পরীক্ষা করার চেষ্টা "Can you turn the lights off?" & "Can you try to solve this?"করি তখন মনে হয় একটি ত্রুটি হচ্ছে: এটি Modification of non-creatable array value attempted, subscript -1 at .code.tio line 1, <> line 2.কি কোনও বাগ, বা আমি কিছু ভুল করছি? এখানে টিআইও রয়েছে।
কেভিন ক্রুইজসেন

1
বাগ। যখন প্রথম দুটি অক্ষর একই ছিল, একটি অ্যারে সাবস্ক্রিপ্ট -1 ছিল, যা অ্যারেতে ডেটা থাকলে কেবল বৈধ। আরও 4 টি বাইট সহ এটি স্থির করে।
এক্সকালি

0

05 এ বি 1 ই , 31 বাইট

ζεËNĀ¾Èyðå_Pi¼ë¾É½}yð«S¾._¨}øJ»

@ ইথপ্রোডাকশনগুলির জ্যাপের উত্তর বন্দর , তবে দুটি ছোটখাট পার্থক্য সহ:
1) আমি স্ট্রিংগুলির তালিকার পরিবর্তে অক্ষরের 2D তালিকা হিসাবে ইনপুটটি গ্রহণ করি।
২) counter_variableজাপানের মতো ১১ (বা ৩) এর পরিবর্তে ০৫ এএবি 1 ই এর মান ডিফল্টরূপে 0 হয় B, সুতরাং এটি মানচিত্রের ভিতরে অতিরিক্ত চেক হিসাবে যুক্ত করা হয় (এবং আমি বামের পরিবর্তে ডানদিকে ঘোরান)।

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

ব্যাখ্যা:

ζ                  # Zip/transpose (swapping rows/columns) the (implicit) input-list
                   # with space filler by default to create pairs
 ε          }      # Map each pair `y` to:
  Ë                #  Check if both values in the pair are equal
  NĀ               #  Check if the map-index is not 0
  ¾È               #  Check if the counter_variable is even
  yðå_             #  Check if the pair contains no spaces " "
  Pi               #  If all checks are truthy:
    ¼              #   Increase the counter_variable by 1:
   ë               #  Else:
    ¾É             #   Check if the counter_variable is odd
      ½            #   And if it is: increase the counter_variable by 1
   }               #  Close the if-else
    yð«            #  Add a space after both characters in the pair
       S           #  Convert it to a list of characters (implicitly flattens)
        ¾._        #  Rotate this list the counter_variable amount of times towards the right
           ¨       #  And then remove the last character
             ø     # Zip/transpose; swapping rows/columns
              J    # Join each inner character-list to a single string
               »   # Join everything by newlines (and output implicitly)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.