তুমি কি আমার তাঁতি হয়ে যাবে?


14

আমি সম্প্রতি ' দ্য ওয়েভার'-এর মধ্য দিয়ে খেলছি এবং আমি মনে করি এটি জন্য একটি আকর্ষণীয় চ্যালেঞ্জ উপস্থাপন করে ।

চত্বর:

ওয়েভার এমন একটি গেম যেখানে আপনাকে 2 দিক থেকে 90 ডিগ্রি দূরে অনেকগুলি ফিতা দেওয়া হয় এবং একটি লক্ষ্য পছন্দসই আউটপুট অর্জনের জন্য নির্দিষ্ট মোড়ে সেগুলি অদলবদল করা আপনার লক্ষ্য।

   এটির মতো: এটি একটি অদলবদল: এটি নয়:

এটার মতবিনিময়অদলবদল নয়

ইনপুট:

3 অ্যারে:

  • শীর্ষ ফিতা (বাম থেকে ডান)
  • বাম ফিতা (উপরে থেকে নীচে)
  • চৌরাস্তাগুলির স্থানাঙ্কগুলি অদলবদল করতে

আউটপুট:

2 অ্যারে:

  • নীচে ফিতা (বাম থেকে ডান)
  • ডান ফিতা (উপরে থেকে নীচে)

উদাহরণ:

আমি উপরের চিত্রটি প্রথম উদাহরণ হিসাবে ব্যবহার করব:

ইনপুট: [r, y, b], [r, y, b], [(0, 1), (2, 1), (2, 2)]

কি ঘটেছে:

   r   y   b
   r   y   b
r r r r•y y y y
   r   r   b
y y y y y y y y
   r   r   b
b b b b•r r•b b
   r   b   r
   r   b   r

যেখানে অদলবদল প্রতিনিধিত্ব করে।

আউটপুট: [r, b, r], [y, y, b]


ইনপুট: [a, b, c], [d, e, f], [(0, 0), (2, 1)]

কি ঘটেছে:

   a   b   c
   a   b   c
d d•a a a a a a
   d   b   c
e e e e e e e e
   d   b   c
f f f f•b b b b
   d   f   c
   d   f   c

আউটপুট: [d, f, c], [a, e, b]


ইনপুট: [a, b], [a, b, c], [(0, 1), (1, 0), (1, 1), (2, 0), (2, 1), (3, 1)]

কি ঘটেছে:

   a   b
   a   b
a a a a•b b
   a   a
b b•a a•a a
   b   a
c c•b b•a a
   c   b
   c   b

আউটপুট: [c, b], [b, a, a]

মন্তব্য:

  • উদাহরণগুলি প্রদত্ত স্থানাঙ্কগুলি দেখায় (row, column)যেন আপনি সেগুলি গ্রহণ করতে পারেন (column, row)
  • উপরের সারি এবং বাম কলামে একই রঙের ফিতা থাকতে পারে
  • বোর্ডটি আয়তক্ষেত্রাকার হতে পারে
  • সমস্ত স্থানাঙ্কগুলি অ-নেতিবাচক ( >=0) বা কঠোরভাবে ইতিবাচক ( >=1) যদি আপনি 1-ইনডেক্সিং চয়ন করেন)
  • বোর্ডের বাইরে থাকা কোনও অদলবদল উপেক্ষা করুন
  • আপনি অক্ষর ( [a-zA-Z]), পূর্ণসংখ্যা ( [0-9]) বা উভয় দিয়ে কাজ করতে বেছে নিতে পারেন
  • আপনার আউটপুটে ফিতাগুলি অবশ্যই ইনপুটটিতে ফিতাগুলির সাথে মিলবে ( a -> a)
  • আপনি ধরে নিতে পারেন যে অদলবদলের তালিকাটি আপনি যেভাবে চান বাছাই করা হয়েছে, যতক্ষণ না এটি সামঞ্জস্যপূর্ণ হয় (যদি আপনি এটি করেন তবে দয়া করে এটি কীভাবে বাছাই করা উচিত তা নির্দিষ্ট করুন)
  • আপনি অদলবদ সমন্বয়গুলি 0 বা 1-ইনডেক্সড হিসাবে নিতে পারেন
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ

আরও উদাহরণ:

Input:
[b], [r], []
Output:
[b], [r]

Input:
[b], [r], [(0, 0)]
Output:
[r], [b]

Input:
[r, p, y], [r, y, p], [(0, 0), (1, 2), (2, 1), (3, 2)]
Output:
[r, p, y], [r, y, p]

Input:
[b, y, o, r],
[r, o, b, y],
[(0, 0), (2, 0), (3, 2)]
Output:
[b, y, y, r],
[b, o, r, o]

শেষ উদাহরণটি এই মামলার সাথে সম্পর্কিত (যদি এটি ভিজ্যুয়ালাইজ করা সহজ করে):

উদাহরণ

এটি তাই প্রতিটি ভাষার জন্য বাইটের মধ্যে সংক্ষিপ্ত উত্তর।


1
পুনরায় " বোর্ডের বাইরের যে কোনও অদলবদল উপেক্ষা করুন " - এর অর্থ কি আমরা ধরে নিতে পারি না যে সমস্ত অদলবদ সমন্বয় বোর্ডে রয়েছে, এবং আমাদের তাদের বৈধতার জন্য ফিল্টার করতে হবে (অবৈধগুলি উপেক্ষা করুন), বা এর অর্থ এই যে আমরা উপেক্ষা করতে পারি স্থানাঙ্কগুলির ক্ষেত্রে বোর্ডের বাইরে থাকার কারণে ইনপুটটি সর্বদা কার্যকর হবে?
বার্গি 21

@ বার্গি এর অর্থ হ'ল ইনপুটটিতে বোর্ডের বাইরে অদলবদল অন্তর্ভুক্ত থাকতে পারে এবং আপনাকে সেগুলি ফিল্টার করতে বা এড়িয়ে যেতে হবে। (তৃতীয় উদাহরণে এ জাতীয়
স্বাপের

উহু. আমি মনে করি যে যদি অদলবদলের বৈধ স্থানাঙ্ক থাকত তবে আমরা চ্যালেঞ্জটি আরও আকর্ষণীয় হতে পারতাম, তবে আমরা ধরে নিতে পারি না যে সেগুলি আমাদের ক্রমবিন্যাসের সাথে মাপসই করা হয়েছে order
বার্গি 21

1
@ বেরগি আপনি সম্ভবত সঠিক, ভাল, এখন পরিবর্তন হতে খুব দেরী হয়েছে। এবং না, সমস্ত স্থানাঙ্ক ইতিবাচক হবে, আমি প্রশ্নটি আপডেট করব।
অসোন তুহিদ

1
@ অ্যাসোনটিউহিদ যদি কর্ডগুলি হয় (সারি, কর্নেল), তবে এটি প্রথমে বাম ফিতা এবং দ্বিতীয় শীর্ষে ফিতাটি আরও বোধগম্য করে। এটা কি অনুমোদিত?
এনজিএন

উত্তর:


8

পাইথন 3 , 74 বাইট

def g(a,b,l):
 for x,y in l:
  if x<len(a)and y<len(b):a[x],b[y]=b[y],a[x]

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

lশব্দের ক্রম অনুসারে বাছাই করা প্রয়োজন । aএবং bপ্রতিনিধিত্বকারী অক্ষরের তালিকাগুলি (বাম ফিতা, শীর্ষ ফিতা)।

তালিকাটি পরিবর্তন করে aএবং ফিরে আসে b


3

জেলি , 37 35 30 বাইট

ṙ"z0U1¦Zḟ€0ṙ"N}
<Ạ¥ÐfL€}⁹ṭṚç/Y

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

ডায়াডিক প্রোগ্রাম, ডান আর্গুমেন্ট হিসাবে বাম আর্গুমেন্ট (বিপরীত লেকোগ্রাফিকাল ক্রমে সাজানো) এবং (বাম ফিতা, শীর্ষ ফিতা) হিসাবে অদলবদল সূচকগুলির 0-সূচক তালিকাটি নিন। রিটার্ন (ডান ফিতা, নীচে পটি)।


জেলি একটি স্বচ্ছ ভাষা। এর সাথে কাজ করার জন্য (প্রায়) কোনও ভেরিয়েবল নেই, তাই একবারে দু'বারের বেশি ভেরিয়েবল জড়িত কোনও কিছুতেই গোলযোগ।

প্রথম লিংক লাগে [l,t], তার বাম আর্গুমেন্ট হিসাবে [x,y]আগমন তার ডান আর্গুমেন্ট হিসাবে (0-ইন্ডেক্স), এবং [l,t]সঙ্গে l[x]এবং r[y]বিনিময় করেন।

r "z0U1|Zḟ € 0ṙ" এন}
`" জিপউইথটি ঘোরান Current বর্তমান মান: `[l ṙ x, t ṙ y]` `
                   (সুতরাং l [x] এবং r [x] যথাক্রমে l [0] এবং r [0] হয়ে যায়)
  z0 জিপ, 0 সহ পূরণ করুন (নতুন) সূচকগুলিতে উপাদান রয়েছে
                   ফিলার হিসাবে 0 সহ একসাথে জুটিবদ্ধ
    U1¦ সূচীতে pair 1` (প্রথম সূচক) জুটির বিপরীত।
       Zḟ € 0 আবার জিপ করুন এবং কার্যকরভাবে z0টিকে পূর্বাবস্থায় ফিরিয়ে আনুন `0`s ফিল্টার করুন।
           N "N} জিপউইথ negativeণাত্মক শিফট পরিমাণে ঘোরান,` ṙ "` এর বিপরীত `

সুতরাং মূলত " U1¦আন্ডার ṙ"z0"।


দ্বিতীয় লিঙ্কটি কেবল ওওবি সূচকগুলি ফিল্টার করে ( <Ạ¥Ðf L€), দ্বিতীয় যুক্তি যুক্ত করে ( ⁹ṭ), বিপরীত ( ) এবং কমিয়ে দেয় ç(হাস্কেলের অনুরূপ foldl)



2

এপিএল (ডায়ালগ ক্লাসিক) , 31 30 বাইট

{⊃{⌽@(0 1,¨⍺)⊢⍵}/(⍵∩,⍳≢¨⍺),⊂⍺}

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

বাম যুক্তি হ'ল অক্ষর ভেক্টরগুলির একটি জুটি - বাম ফিতা এবং শীর্ষ ফিতা। ডান যুক্তি হ'ল স্থানাংক জোড়াগুলির একটি ভেক্টর - অদলবদল অবস্থান। এক জোড়া ডান ফিতা এবং নীচে ফিতা দেয়। (নোট করুন যে উদাহরণগুলির বিপরীতে, আমি স্থানাঙ্কগুলিতে সারি-কর্ণ অক্ষ ক্রমের সাথে সামঞ্জস্য রাখতে ফিতাগুলির জন্য বাম-শীর্ষ এবং ডান-নীচের ক্রমটি ব্যবহার করি))

অদলবদল তাই সাজানো করা আবশ্যক যে আরেকটি উপরের অংশে বাম একটি swap আসে সামনে পর এটা। যদি দুটি অদলবদল একে অপরের নীচে-বাম / উপরের-ডানদিকে হয় তবে তাদের ক্রমটি কোনও ব্যাপার নয়।

সম্পাদনা: ইনপুটটিতে অদলবদলের বিপরীত ক্রমের প্রয়োজনের মাধ্যমে একটি বাইট ( ) সংরক্ষণ করা হয়েছে


1

জাভাস্ক্রিপ্ট, 87 76 62 বাইট

(c,r,s)=>{for([i,j]of s)if(r[i]&&c[j])[r[i],c[j]]=[c[j],r[i]]}

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

পাইথন 3 উত্তর হিসাবে একই তুচ্ছ আলগোরিদম। সমন্বিত টিউপস হিসাবে অ্যারে ব্যবহার করে। সত্যের মানগুলির দ্বারা নির্ধারিত ফিতা রঙগুলির প্রয়োজন। আংশিক অর্ডার করার জন্য স্থানাঙ্কের প্রয়োজন যাতে এটি x1,y1আগে আসে x2,y2যদি হয় x1 < x2 && y1 = y2বা হয় x1 = x2 && y1 < y2। ইনপুট অ্যারে সংশোধন করে ফিরে আসে।


আমি নিশ্চিত যে আপনি মুছে ফেলতে ;return[r,c]এবং এটি পরিবর্তন
অসোন তুহিদ

if(r[i]&&c[j])আরও কিছু বাইট সংরক্ষণ করতে হবে।
নীল

আমি জানি যে আমার অবস্থা খুব শক্তিশালী তবে আপনার অবস্থা স্ববিরোধী। বিবেচনা করুন x1=1,x2=2,y1=2,y2=1। কারণ x1<x2, (x1,y1)আগে আসে (x2,y2); কিন্তু কারণ y2<y1, (x2,y2)আগে আসে (x1,y1)। আমি " x1 < x2এবং y1 < y2" যথেষ্ট মনে করি ।
ব্যবহারকারী 202729

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

1
প্রশ্ন: "এর অর্থ কি এই যে ভাষাগুলি এটির অনুমতি দেয়, ফেরত দেওয়ার জন্য সাতটি অক্ষর কেবল একটি অ্যাসাইনমেন্টের সাথে প্রতিস্থাপন করা যায়?" উত্তর: "হ্যাঁ, পরিবর্তিত মানটি তখন ফাংশন বলা প্রসঙ্গে অ্যাক্সেসযোগ্য হবে।" আমার কাছে বেশ পরিষ্কার মনে হচ্ছে।
আসোন তুহিদ

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