ম্যাট্রিক্সে প্রতি 2x2 ব্লক ঘোরান


11

চ্যালেঞ্জ

একটি প্রদত্ত n x mসঙ্গে ম্যাট্রিক্স n > 1এবং m > 1 পূর্ণসংখ্যার ভরা

1 2 3
4 5 6

এবং 2x2ম্যাট্রিক্সের ব্লকগুলির মতো হুবহু মান সহ পূর্ণসংখ্যার একটি তালিকা (আপনার (n-1)*(m-1)যদি সঠিক সংখ্যাটি প্রয়োজন হয়)

[১, ২]

2x2প্রদত্ত ক্রমে তালিকার বর্তমান মান দ্বারা আবর্তিত প্রতিটি ব্লকের সাথে ম্যাট্রিক্স আউটপুট করুন । উপরের উদাহরণটি ফল দেয়

4 6 2
5 3 1

প্রথম ব্লকটি এক সময় ডানে ঘোরানো হয় এবং দ্বিতীয় ব্লকটি ডানদিকে দুটি ঘোরানো হয়।

মন্তব্য

  • ধনাত্মক পূর্ণসংখ্যার অর্থ আপনি সেই অনেক ধাপে ডানদিকে ঘোরান।
  • একটি নেতিবাচক পূর্ণসংখ্যার অর্থ আপনি সেই অনেক ধাপে বাম দিকে ঘোরান।
  • একটি শূন্য মানে আপনি ঘোরান না।
  • আপনি ব্লকগুলি সারিবদ্ধভাবে ঘোরান। তার মানে আপনি প্রথম সারিতে শুরু করে ডানদিকে যান। একবার আপনি এই সারির প্রতিটি ব্লক ঘোরানোর পরে আপনি পরবর্তী একটিতে যান। শেষে প্রতিটি ব্লক ঠিক একবার ঘোরানো হয়েছিল।
  • মনে রাখবেন যে ব্লকগুলি একে অপরকে ওভারল্যাপ করে। উপরের প্রথম ম্যাট্রিক্সে ব্লক রয়েছে [[1,2],[4,5]]এবং [[2,3],[5,6]]উদাহরণস্বরূপ।
  • একটি ব্লকের প্রতিটি ঘূর্ণন সংলগ্ন ব্লকগুলির ঘূর্ণনকে প্রভাবিত করে। এজন্য আপনাকে উপরে বর্ণিত প্যাটার্নে আবর্তন করতে হবে।

বিধি

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

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

এখানে ইনপুট ফর্ম্যাট ম্যাট্রিক্সের তালিকার একটি তালিকা এবং মানগুলির জন্য একটি সাধারণ তালিকা।

[[1,2], [3,4]], [-3] -> [[4,1], [3,2]]
[[1,1,1], [1,1,1]], [-333, 666] -> [[1,1,1], [1,1,1]]
[[1,2,3], [4,5,6]], [1,2] -> [[4,6,2], [5,3,1]]
[[1,2,3], [4,5,6], [7,8,9]], [4,0,12, -20] -> [[1,2,3], [4, 5,6], [7,8,9]]
[[1,2,3,4,5], [5,4,3,2,1], [1,2,3,4,5]], [2, -3,4,1,6, 24,21, -5] -> [[4,1,5,2,4], [2,1,3,5,5], [3,2,4,3,1]]

শুভ কোডিং!

উত্তর:


4

সিজেএম ( 42 40 বাইট)

{(\@2$,(/.{@a@a+z(\@.{4,={+2/zW%~}*}z~}}

অনলাইন ডেমো

মূলত ব্লকটি ভাঁজ করার জন্য এটি একই কৌশলটি দুইবার প্রয়োগ করে

{4,={+2/zW%~}*}

যা 2x2 ম্যাট্রিক্স এবং ঘোরানোর জন্য বেশ কয়েকবার পরিচালনা করে।

[first row] [[second row] [third row] ... [last row]] [value_0 value_1 ... value_n]

সঙ্গে প্রক্রিয়াজাত করা যেতে পারে

.{block}

এবং এর প্রভাব আছে

[first row]
[second row] value_0 {block}~
[third row] value_1 {block}~
...

কারণ .( %সিজেমে মত ) ফলাফল শেষ না হওয়া পর্যন্ত অ্যারেতে ফলাফল সংগ্রহ করে না।


আপনি 4,=সঠিক মডুলো ব্যবহার করে একটি বাইট সংরক্ষণ করতে পারেন (যদি না আপনার ব্লকটি কমপক্ষে একবার চালানোর প্রয়োজন হয়?)
মার্টিন এন্ডার

এছাড়াও zW%ঘূর্ণন জন্য কি ?
মার্টিন ইন্ডার

@ মার্টিনবাটনার, আমি ভেবেছিলাম যে ঘূর্ণনটি খুব দীর্ঘ বলে মনে হচ্ছে, তবে আমি এর চেয়ে ছোটটি মনে করতে পারি না। মডুলোর উপর দুর্দান্ত কৌশল।
পিটার টেলর

2

সিজেম, 65 63 60 55 বাইট

সেখানে আবশ্যক এই কাজ করতে একটি ভাল উপায় হতে ...

{_e_\z,:N(@/Ta*ee{~4,=,f{;1$,,\[XTN_)]f+_(+er\f=}~}/N/}

এটি একটি নামবিহীন ফাংশন যা স্ট্যাকের উপর নির্দেশাবলী এবং ম্যাট্রিক্স (সেই ক্রমে) প্রত্যাশা করে এবং ফলস্বরূপ ম্যাট্রিক্সকে তাদের জায়গায় রেখে দেয়।

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

কোডের জন্য এখনই পুরো ব্রেকডাউনটি লেখার মতো মনে হচ্ছে না, সুতরাং এখানে মোটামুটি একটি ওভারভিউ দেওয়া হল:

  • 2 ডি অ্যারে ম্যানিপুলেশনটি সিজেমে একটি ব্যথা, সুতরাং আমি পরিবর্তে ম্যাট্রিক্সটিকে আন্রোল করছি, প্রতিটি ঘূর্ণন নির্দিষ্ট অবস্থানগুলিতে উপাদানগুলির অনুক্রম হিসাবে গণনা করুন এবং তারপরে আবার অ্যারেটিকে আবার সারিগুলিতে বিভক্ত করুন। ম্যাট্রিক্সের প্রস্থটি সংরক্ষণ করা হয় N
  • অবস্থানে একটি ঘূর্ণন kunrolled অ্যারের মধ্যে চার সূচকের পরিবর্তন: k <- k+1, k+1 <- k+1+N, k+N <- k, k+1+N <- k+1kনির্দেশ তালিকার বরাবর প্রতিটি সূচকের জন্য , আমি এটির সাথে সম্পর্কিত একটি ক্রমশক্তি গণনা করি এবং এটি অনিবন্ধিত ইনপুট অ্যারেতে প্রয়োগ করি।
  • এটি সমস্যাটি ফেলে দেয় যে লিনিয়ার অ্যারেতে কিছু আবর্তন ইনপুটটির শেষ স্তম্ভের উপরে বাম কোণে অবস্থিত হবে। এগুলি এড়িয়ে যান, আমি নির্দেশ তালিকায় শূণ্যসমূহ তাস শাফল করা, এই ধরনের যে এই অবৈধ 2x2 উপ-ব্লক করছে টেকনিক্যালি প্রক্রিয়া, কিন্তু একটি নো-অপ সঙ্গে।

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