গ্রিডের বৃহত্তম বর্গ [বন্ধ]


10

চ্যালেঞ্জ

এর মতো গ্রিড দেওয়া হয়েছে,

  1 2 3 4 5 6 7 8
1 . . . . . . . .
2 . # . . . # . .
3 . . . . . . . .
4 . . . . . . . .
5 . . . . . . . .
6 . . # . . . . .
7 . . . . . . . .
8 . . . . . . . .

একটি কোডের টুকরো লিখুন যা বৃহত্তম স্কোয়ারের আকার নির্ধারণ করতে পারে যা কোনও '#' অন্তর্ভুক্ত করে না। (এই ইনপুটটির উত্তর 5x5 হ'ল নীচের ডান 5x5 গ্রিডটি সবচেয়ে বড় বর্গ সম্ভব)।

বর্গক্ষেত্রটি অবশ্যই x এবং y অক্ষের সমান্তরাল হওয়া উচিত।

কিছু ছোট বিবরণ হিসাবে: মূল গ্রিডটি সর্বদা একটি বর্গাকার এবং এর পাশের দৈর্ঘ্য আপনাকে দেওয়া হয়। '#' চিহ্নগুলির স্থানাঙ্কগুলিও আপনাকে দেওয়া হয়।

ইনপুট বিশদ

প্রথম লাইন: এন (1 <= এন <= 1000), বর্গাকার গ্রিডের পাশের দৈর্ঘ্য এবং টি (1 <= টি <= 10,000) '#' চিহ্নের সংখ্যা।

পরবর্তী টি লাইন: টি # এর প্রত্যেকটির সমন্বয়ক ates

পরীক্ষার কেস

ইনপুট # 1:

8 3
2 2
2 6
6 3

ফলাফল # 1: 5

================

ইনপুট # 2:

8 4
1 1
1 8
8 1
8 8

ফলাফল # 2: 6

================

ইনপুট # 3:

5 1
3 3

ফলাফল # 3: 2

এটি একটি সমস্যা, তাই রেক্সটেস্টারের সংকলকটিতে দ্রুততম পরীক্ষিত কোডটি জিতল

আনন্দ কর!



3
জন্য fastest-code1000x1000 যদিও, খুবই ছোট
l4m2

1
তবে রেক্সটেস্টার জেলি বা হেক্সাগনিকে সমর্থন করে না।
ব্যবহারকারী 202729

6
রেক্সটেস্টারের মতো সক্ষম, আমি কি এটি পরিবর্তে অনলাইনে ব্যবহারের পরামর্শ দিতে পারি ? এটিতে আরও অনেক ল্যাঙ্গেজ রয়েছে এবং এটি সম্প্রদায় পরিচালিত।
এটাকো

1
"রেক্সটেস্টার সংকলকটিতে দ্রুততম কোড পরীক্ষা করা" - কোন ইনপুটটিতে দ্রুততম?
নাথানিয়েল

উত্তর:


1

node.js

(ডাব্লু, এল) হিসাবে ইনপুট নেয় , যেখানে ডাবল প্রস্থ এবং এল স্থানাঙ্কগুলির একটি অ্যারে [x, y] । (যদি ইনপুট ফর্ম্যাটটি বর্ণিত হিসাবে যথাযথ হয় তবে এটি পরিবর্তন করা যেতে পারে)) ও (ডাব্লু) এ কাজ করে

f = (w, l) => {
  var x, y,
      W = w * w,
      a = new Uint16Array(W),
      best = 0;

  l.forEach(([x, y]) => a[(y - 1) * w + x - 1] = 1);

  for(y = w; y < W; y += w) {
    for(x = y + 1; x < y + w; x++) {
      if(a[x]) {
        a[x] = 0;
      }
      else {
        best = Math.max(
          best,
          a[x] = Math.min(a[x - 1], a[x - w], a[x - w - 1]) + 1
        );
      }
    }
  }

  return best;
}

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


console.log(f( 1000, [...Array(10000)].map(_=>[Math.random()*1000+1|0,Math.random()*1000+1|0]) )); 114ms এর ব্যয়, যদিও এটি ভাষার স্বল্প দক্ষতা হতে পারে
l4m2

এটি জেআইটি সংকলনের পরে এফ () এর ভিতরে 8 মিমের মতো । (তবে হ্যাঁ ... উত্তরগুলি সেভাবে স্কোর করা যাচ্ছে না))
আর্নল্ড

আমি সন্দেহ করি যে ওপি আরও বেশি উদ্দেশ্যমূলক বিজয়ী মানদণ্ড যুক্ত করবে ...
ব্যবহারকারীর 272729

1

সি (জিসিসি)

এখানে কোনও অভিনব অ্যালগরিদম নেই, কেবল প্রায় ব্রুটফোর্স ... তবে আরে, সি দ্রুত is

ইনপুট: থেকে ইনপুট লাগে stdin

আউটপুট: আউটপুট লিখেছেন stdout- এ

#include <stdio.h>
#include <stdint.h>

int main(void) {
    uint_fast16_t n, t, i, j, h, x, y, flag, biggest = 0;
    scanf("%hi %hi", &n, &t);
    uint_fast8_t m[n][n];
    for (uint_fast16_t c = 0; c < t; ++c) {
        scanf("%hi %hi", &i, &j);
        m[i-1][j-1] = '#';
    }
    for (i = 0; i < n - 1; ++i) {
        for (j = 0; j < n - 1; ++j) {
            flag = 1;
            for (h = 1; flag && i + h < n + 1 && j + h < n + 1; ++h) {
                for (y = i; flag && y < i + h; ++y) {
                    for (x = j; flag && x < j + h; ++x) {
                        if (m[y][x] == '#') flag = 0;
                    }
                }
                if (flag && h > biggest) biggest = h;
            }
        }
    }
    printf("%d", biggest);
}

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

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