একটি অ্যারে মধ্যে স্থির


25

ভূমিকা

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

[1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

চ্যালেঞ্জ হ'ল বাউন্সড অ্যারেগুলি আউটপুট করা । এগুলি তির্যক নিদর্শনগুলি থেকে তৈরি করা হয় যা ক্ষেত্রের প্রান্তে বাউন্স করে। এই পথটি উপরের দিকে নির্দেশ করা হয়েছে । প্রথম বাউন্সড অ্যারের জন্য পাথ (যেখানে পাথটি সরাসরি বাধা দেওয়া হয়),

[1, -, -, -, 5, -, -, -, 9]
[-, 8, -, 6, -, 4, -, 2, -]
[-, -, 3, -, -, -, 7, -, -]

বাম থেকে ডানে, এর ফলাফল হবে [1, 8, 3, 6, 5, 4, 7, 2, 9]। এটি আমাদের প্রথম বাউন্সড অ্যারে। দ্বিতীয় বাউন্স করা অ্যারের পথ:

[-, 2, -, -, -, 6, -, -, -]
[9, -, 7, -, 5, -, 3, -, 1]
[-, -, -, 4, -, -, -, 8, -]

এর ফলাফল [9, 2, 7, 4, 5, 6, 3, 8, 1]। তৃতীয় বাউন্সড অ্যারের পথ হ'ল:

[-, -, 3, -, -, -, 7, -, -]
[-, 8, -, 6, -, 4, -, 2, -]
[1, -, -, -, 5, -, -, -, 9]

এর ফলাফল [1, 8, 3, 6, 5, 4, 7, 2, 9]। তিনটি বাউন্সড অ্যারে হ'ল :

[1, 8, 3, 6, 5, 4, 7, 2, 9]
[9, 2, 7, 4, 5, 6, 3, 8, 1]
[1, 8, 3, 6, 5, 4, 7, 2, 9]

কার্য

কেবলমাত্র অ-নেতিবাচক পূর্ণ সংখ্যাসূচক কমপক্ষে 1 টি অ্যারে দেওয়া হয়েছে, সমস্ত অ্যারেগুলির দৈর্ঘ্য একই থাকে, সমস্ত বাউন্সড অ্যারে আউটপুট দেয়।

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

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

Input:                       Output:
[1, 2, 3, 4, 5]              [1, 7, 3, 9, 5]
[6, 7, 8, 9, 0]              [6, 2, 8, 4, 0]


Input:                       Output:
[1, 2, 3, 4, 5]              [1, 2, 3, 4, 5]


Input:                       Output:
[0, 0, 0, 0, 0, 0, 0, 0]     [0, 9, 0, 9, 0, 9, 0, 100]
[9, 9, 9, 9, 9, 9, 9, 100]   [9, 0, 9, 0, 9, 0, 9, 0]
[0, 0, 0, 0, 0, 0, 0, 0]     [0, 9, 0, 9, 0, 9, 0, 100]


Input:                       Output:
[0, 1, 2, 3, 4, 5]           [0, 7, 14, 9, 4, 11]
[6, 7, 8, 9, 10, 11]         [6, 1, 8, 15, 10, 5]
[12, 13, 14, 15, 16, 17]     [12, 7, 2, 9, 16, 11]


Input:                       Output:
[0, 0, 0, 0, 0, 0]           [0, 2, 2, 6, 2, 6]
[1, 2, 3, 4, 5, 6]           [1, 0, 3, 2, 5, 2]
[2, 2, 2, 2, 2, 2]           [2, 2, 0, 4, 2, 4]
[9, 8, 7, 6, 5, 4]           [9, 2, 3, 0, 5, 2]

এটি , তাই সর্বনিম্ন পরিমাণ বাইটের সাথে জমাটি জয়!


2
জেলি এটি জিতল।
lirtosiast

আপনি কি দয়া করে এমন তিন-অ্যারে টেস্টকেস যুক্ত করতে পারেন যেখানে শেষের অ্যারেটি প্রথমটির চেয়ে আলাদা এবং চার-অ্যারে টেস্টকেস?
ইটিএইচ প্রডাকশনগুলি

1
আমি সমস্যার বর্ণনা খুঁজে পাই না। কেউ আমাকে বলতে পারেন কোথায় আছে?
ফেডারাম

হ্যাঁ। আমি কাজের বিবরণ পাই না।
ফেভারস

1
@ লুইস মেনডো এটিই একমাত্র উপায়, বাউন্সের একমাত্র উপায় 0 লাইনে এটি আরও উপরে উঠতে পারে না
edc65

উত্তর:


7

পাইথ, 17 বাইট

>lQC.e.>bkC+_PtQQ

ব্যাখ্যা:

                      implicit: Q=input
>                     First
  l Q                   len(Q) elements of the
  C .e                  Transpose of enumerated map lambda b,k:
       .>                 Rotate the kth element rightwards by
          b
          k               k.
       C +              Transpose of: Q concatenated to
           _ P t Q        itself reversed without first and last elements.
           Q

এখানে চেষ্টা করুন


7

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

a=>a.map((r,k)=>r.map((e,j)=>(a[k-=d]||a[d=-d,k-=d+d]||r)[j],d=1,++k))

পরীক্ষা

F = a=>a.map((r,k)=>r.map((e,j)=>(a[k-=d]||a[d=-d,k-=d+d]||r)[j],d=1,++k))

test = [{
  I: [
    [1, 2, 3, 4, 5],
    [6, 7, 8, 9, 0]
  ],
  O: [
    [1, 7, 3, 9, 5],
    [6, 2, 8, 4, 0]
  ]
}, {
  I: [
    [1, 2, 3, 4, 5]
  ],
  O: [
    [1, 2, 3, 4, 5]
  ]
}, {
  I: [
    [0, 0, 0, 0, 0, 0, 0, 0],
    [9, 9, 9, 9, 9, 9, 9, 100],
    [0, 0, 0, 0, 0, 0, 0, 0]
  ],
  O: [
    [0, 9, 0, 9, 0, 9, 0, 100],
    [9, 0, 9, 0, 9, 0, 9, 0],
    [0, 9, 0, 9, 0, 9, 0, 100]
  ]
}, {
  I: [
    [0, 1, 2, 3, 4, 5],
    [6, 7, 8, 9, 10, 11],
    [12, 13, 14, 15, 16, 17]
  ],
  O: [
    [0, 7, 14, 9, 4, 11],
    [6, 1, 8, 15, 10, 5],
    [12, 7, 2, 9, 16, 11]
  ]
}, {
  I: [
    [0, 0, 0, 0, 0, 0],
    [1, 2, 3, 4, 5, 6],
    [2, 2, 2, 2, 2, 2],
    [9, 8, 7, 6, 5, 4]
  ],
  O: [
    [0, 2, 2, 6, 2, 6],
    [1, 0, 3, 2, 5, 2],
    [2, 2, 0, 4, 2, 4],
    [9, 2, 3, 0, 5, 2]
  ]
}];

console.log = x => O.textContent += x + '\n';

test.forEach(t => {
  var r = F(t.I),
    ok = r.join `\n` == t.O.join `\n`
  console.log((ok ? 'OK' : 'KO') + '\nInput\n' + t.I.join `\n` + '\nOutput\n' + r.join `\n` + '\n')
})
<pre id=O></pre>




2

রুবি (2.2.2p95), 124 বাইট

->*a{b=a.length;b<2?a:b.times.map{|i|d=i>0?-1:1;c=i;a[0].length.times.map{|j|r=a[c][j];c+=d;d*=-1if c==0||c==a.length-1;r}}}

এটি সম্ভবত আরও ভাল হতে পারে। আমি বুঝতে পারছি কিভাবে পরে!


2

জাপট, 55 49 41 39 বাইট

বাহ, এটি উভয়ই সত্যই কৌতুকপূর্ণ এবং উন্মাদ মজা ছিল।

C=2*Nl -2Nw £YoY+Ul)£NgLmX%CC-X%C)gY} ·

এটি অনলাইন পরীক্ষা!

উদাহরণগুলিতে বিপরীত ক্রমে আউটপুট। এটি 100 টিরও বেশি অ্যারের ইনপুটগুলিতে কিছুটা ভাঙ্গবে; আশা করি এটি খুব বেশি পার্থক্য রাখে না।

           // Implicit: N = array of input arrays, U = first input array, J = -1, L = 100
           // Let's use the first example. 3 input arrays, each of length 9.
C=2*Nl -2  // Set variable C to 2*N.length - 2. In the example, C is 4.
Nw      }  // Reverse N and map each index Y to:
YoY+Ul)    //  Create the range [Y...U.length+Y).
           //  The first time through (Y=0), we have   [0, 1, 2, 3, 4, 5, 6, 7, 8]
£       }  //  Map each item X and index Y to:
X%C        //   Take X mod C.                          [0, 1, 2, 3, 0, 1, 2, 3, 0]
C-X%C      //   Take C - (X mod C).                    [4, 3, 2, 1, 4, 3, 2, 1, 4]
Lm         //   Take the minimum of these and 100.     [0, 1, 2, 1, 0, 1, 2, 1, 0]
Ng         //   Get the array at the resulting index.
gY         //   Get the item at index Y in this array. [1, 8, 3, 6, 5, 4, 2, 7, 9]
·          // Join the result with newlines. I guess this isn't necessary, but it helps with readability.

অ-প্রতিযোগিতামূলক সংস্করণ, 36 বাইট

C=J+Nl)òC±C ®óUl)£NgLmX%CC-X%C)gY} ·

আমি চ্যালেঞ্জের আগে এই দুটি সংখ্যা কার্য সম্পাদন করেছি:

  • ò- হিসাবে একই o, কিন্তু [X..Y]পরিবর্তে ফিরে[X..Y)
  • ó- হিসাবে একই o, কিন্তু [X..X+Y)পরিবর্তে ফিরে[X..Y)

তবে একটি ভুল জায়গায় থাকার কারণে 0, তারা বগি ছিল এবং সর্বদা খালি অ্যারে ফিরত। এই এখন সংশোধন করা হয়েছে।

এটি অনলাইন পরীক্ষা!


2

পাইথন 2, 107 106 108 105 104 বাইট

(কিছু অতিরিক্ত পেরেন ফেলে দেওয়া হয়েছে) (ভুল শুরুর অবস্থান (ب_ب)) (ইতিমধ্যে সেই দৈর্ঘ্যের একটি তালিকা ছিল))

def b(a):
 r,e=len(a)-1,enumerate
 print[[a[abs((i-o-r)%(r*2or 1)-r)][i]for i,_ in e(q)]for o,q in e(a)]

কোনও ফাংশনের আর্গুমেন্ট হিসাবে ইনপুটটি রাখা বৈধ? আমার কোড গল্ফ উত্তর জমা দেওয়ার এটি আমার প্রথমবার।


হ্যাঁ এটি আইনী :)
আদনান

1

এপিএল, 33 টি অক্ষর

{(⍳≢⍵){0⌷(⍺-⍳≢⍉⍵)⊖⍵⍪1↓¯1↓⊖⍵}¨⊂↑⍵}

ধরে নিন ⎕IO ← 0। ধারণাটি হল যে ম্যাট্রিক্সের প্রথম এবং শেষ সারির শেভের সাথে বিপরীত ম্যাট্রিক্সের সাথে প্রথম মাপের সাথে মূল ম্যাট্রিক্সটি বৃদ্ধি করা হলে ম্যাট্রিক্সের উপরের দিকে সরল শিফট দ্বারা বাউন্সিং মুভমেন্টটি পাওয়া যায়। গ্রাফিক্যালি:

1 - - - - - 1 - - - -
- 2 - - - 2 - 2 - - -
- - 3 - 3 - - - 3 - 3
- - - 4 - - - - - 4 -

থেকে

1 - - - - - 1 - - - -
- 2 - - - - - 2 - - -
- - 3 - - - - - 3 - -
- - - 4 - - - - - 4 -
- - - - 3 - - - - - 3
- - - - - 2 - - - - -

APL সালে reverseএবং upward rotateএকই প্রতীক আছেন:


প্রথম স্টিফানো ব্যবহার করুন। পরিবর্তে 0⌷
জাকারি

আমি আশঙ্কা করি নেস্টেড অ্যারেতে প্রয়োগ করার সময় "প্রথম" এবং "0⌷" দুটি খুব আলাদা ফলাফল দেয়। নিজের জন্য চেষ্টা করুন। প্রথম বনাম 0⌷
lstefano

1

ক্লোজার, 125 বাইট

বাহ, এই জমে থাকা চরিত্রগুলি বেশ দ্রুত।

(fn[v](let[H(count v)r range R(r H)](for[i R](map #((v %2)%)(r(count(v 0)))(drop i(cycle(concat R(reverse(r 1(dec H))))))))))

letঘন ঘন ব্যবহৃত মানগুলি নির্ধারণ করে কেবল বাইটগুলি সংরক্ষণ করার চেষ্টা করছি ।


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