বোমা চেইন প্রতিক্রিয়া


32

পরিচিতি:

কাজের আগে, প্রতিটি উপাদান মানচিত্রে যা করে তা এখানে:

সমভূমি ( X): এটি কিছুই করে না।

ধ্বংস হওয়া জমি ( -): এটি সমভূমি সমান, তবে বোমা দ্বারা ধ্বংস হয়েছে destroyed

সক্রিয় বোমা ( !): একটি মানচিত্রে, এটি 3x3 বর্গক্ষেত্রের সমস্ত কিছু ধ্বংস করবে:

XXXXX                         XXXXX
XXXXX                         X---X
XX!XX     > will become >     X---X
XXXXX                         X---X
XXXXX                         XXXXX

প্যাসিভ বোমা ( @): এটি অন্য বোমা দ্বারা বিস্ফোরণ না হওয়া পর্যন্ত এটি কিছুই করে না। এটিতে একটি 3x3 বর্গ বিস্ফোরণ ব্যাসার্ধও রয়েছে:

XXXXX                         XXXXX
XXXXX                         XXXXX
XX@XX     > will become >     XX@XX (nothing happened)
XXXXX                         XXXXX
XXXXX                         XXXXX

কিন্তু:

XXXXX                         XXXXX
XXXXX                         X---X
XX@XX     > will become >     ----X (both bombs have exploded)
X!XXX                         ----X
XXXXX                         ---XX

নিউক ( ~): এটি অন্য কোনও বোমার বিস্ফোরণ না হওয়া পর্যন্ত কিছুই করে না। পার্থক্য হ'ল এই বোমাটিতে একটি 5x5 বর্গ বিস্ফোরণ ব্যাসার্ধ রয়েছে:

XXXXX                         XXXXX
XXXXX                         XXXXX
XX~XX     > will become >     XX~XX (nothing happened)
XXXXX                         XXXXX
XXXXX                         XXXXX

কিন্তু:

XXXXX                         -----
XXXXX                         -----
XX~XX     > will become >     ----- (both bombs have exploded)
X!XXX                         -----
XXXXX                         -----

কাজটি

  • একটি 9x9 মানচিত্র দেওয়া , চেইন প্রতিক্রিয়া পরে মানচিত্র আউটপুট ।
  • আপনি কোনও ফাংশন বা একটি প্রোগ্রাম সরবরাহ করতে পারেন।
  • এটি , তাই সর্বনিম্ন পরিমাণ বাইটের সাথে জমাটি জয়!

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

পরীক্ষার কেস 1 ( 3 পদক্ষেপ ):

XXXXXXXXX           XXXXXXXXX
----XXXXX           ----XXXXX
XXXX@XXXX           XXXX@XXXX
XXXXXXXX-           XXX---XX-
XXXX@XXXX     >     ------XXX
XXXXXXXX-           ------XX-
XX~XXXXXX           -----XXXX
X!XXXXXX-           -----XXX-
XXXXXXXXX           -----XXXX

পরীক্ষার কেস ২ ( ২ টি পদক্ষেপ ):

XXXXXXXXX           XXXXXXXXX
XXXXXXXXX           XXXXXXXXX
XX~XXXXXX           XX~XXXXXX
---------           ---------
XXXX!XXXX     >     XXX---XXX
XXXXXXXXX           XXX------
XXX@@X@!X           XXX@@----
XXXXXXXXX           XXXXX----
XXXXXXXXX           XXXXXXXXX

পরীক্ষার কেস 3 ( 2 পদক্ষেপ ):

XXXXXXXXX           XXXXXXXXX
XXXXXXXXX           XXXXXXXXX
XX~XXXXXX           XX~XXXXXX
XXXXXXXXX           XXX---XXX
XXXX!XXXX     >     XXX---XXX
XXXXXXXXX           XXX------
XXX@@X@!X           XXX@@----
XXXXXXXXX           XXXXX----
XXXXXXXXX           XXXXXXXXX

পরীক্ষার কেস 4 ( 1 পদক্ষেপ ):

XXXXXXXXX           XXXXXXXXX
XXXX-XXXX           XXXX-XXXX
XXXXXXXXX           XXX---XXX
XX-X!X-XX           XX-----XX
XXXXXXXXX     >     XXX---XXX
XX-----XX           XX-----XX
XXXX-XXXX           XXXX-XXXX
XXXXXXXXX           XXXXXXXXX
XXXXXXXXX           XXXXXXXXX

পরীক্ষার কেস 5 ( 9 টি পদক্ষেপ ):

!XXXXXXXX           ---XXXXXX
X@XXXXXXX           ----XXXXX
XX@XXXXXX           -----XXXX
XXX@XXXXX           X-----XXX
XXXX@XXXX     >     XX-----XX
XXXXX@XXX           XXX-----X
XXXXXX@XX           XXXX-----
XXXXXXX@X           XXXXX----
XXXXXXXX@           XXXXXX---

পরীক্ষার কেস 6 ( 9 টি পদক্ষেপ ):

XX@@@XXXX           ------XXX
XXXXXXXXX           ------XXX
~XXXXXXXX           ---XXXXXX
XXXXXXXXX           ---XXXXXX
~XXXXXXXX     >     ---XXXXXX
XXXXXXXXX           ---XXXXXX
~XXXXXXXX           ---XXXXXX
@XXXXXXXX           ---XXXXXX
!XXXXXXXX           ---XXXXXX

পরীক্ষার কেস 7 ( 3 পদক্ষেপ ):

!XXXXXXXX           ---XXXXXX
X@XXXXXXX           ----XXXXX
XX@XXXXXX           ----XXXXX
XXXXXXXXX           X---X----
XXXXXX@@!     >     XXXXX----
XXXXXXXXX           X---X----
XX@XXXXXX           ----XXXXX
X@XXXXXXX           ----XXXXX
!XXXXXXXX           ---XXXXXX

4
আমার উত্তর গৃহীত উত্তরটির চেয়ে উল্লেখযোগ্যভাবে ছোট।
অ্যাডম

এই চ্যালেঞ্জ একটি ওয়ার্কশপ অংশ বেস করতে পারেন?
আদম

উত্তর:


10

মতলব, 120 111 বাইট

function f=c(f);c=@(x,i)conv2(x+0,ones(i),'s');a=c(f<34,3);for k=f;a=c(a&f<65,3)|a;a=c(a&f>99,5)|a;end;f(a)='-'

সংকল্প সাফল্যের মূল চাবিকাঠি।

ধারণাটি নিম্নলিখিত: সক্রিয় বোমাটি সন্ধান করুন। এই অঞ্চলটি একটি 3x3 স্কোয়ারে বাড়ান। নতুন ক্ষতিগ্রস্থ বোমা সন্ধান করুন, দায়িত্বশীল অঞ্চলগুলিকে সংশ্লিষ্ট আকারে বাড়ান এবং সেগুলি পূর্বের ধ্বংসস্তূপে যুক্ত করুন। নিশ্চিত হয়েছি যে আমরা কোনও স্থির বিন্দুতে পৌঁছেছি (= আর কোনও বিস্ফোরক বোমা নেই) এ জন্য পর্যাপ্ত সময়টি পুনরাবৃত্তি করুন (আমাদের ক্ষেত্রে যতবার ইনপুট চরিত্র রয়েছে ততবার, কারণ এটি সংক্ষিপ্ততম রূপ)। তারপরে সমস্ত ধ্বংস হওয়া অঞ্চল সেট -করে ফলাফলটি প্রদর্শন করুন।

ইনপুটটি অক্ষরের ম্যাট্রিক্স হিসাবে ধরে নেওয়া হয়, যেমন

['!XXXXXXXX';
'X@XXXXXXX';
'XX@XXXXXX';
'XXX@XXXXX';
'XXXX@XXXX';
'XXXXX@XXX';
'XXXXXX@XX';
'XXXXXXX@X';
'XXXXXXXX@'];

10

রেটিনা , 188 168 154 152 বাইট

আইএসও 8859-1 হিসাবে গণনা করা বাইটস।

+Tm`@~X!:`!:\-`(.)?.?.(.?(?<1>.)?)(?<=(:|(?(1)_)!|^(?(5)_)(?<-5>.)*(:|(?(1)_)!)(?<1>.*¶)?.*¶(.)*.|(?=(.)*¶.*(?<1>¶.*)?(:|(?(1)_)!)(?<-6>.)*(?(6)_)$))\2)

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

এটি ধারণার প্রমাণ হিসাবে আরও বেশি। বোমা এবং নিউকসের মধ্যে একটি ভয়াবহ পরিমাণে নকল রয়েছে, যা আমি ব্যাখ্যা যোগ করার আগে এড়াতে চেষ্টা করব। ঠিক আছে, আমি সেই অনুলিপি থেকে মুক্তি পেয়েছি তবে জটিলতাটি উল্লেখযোগ্যভাবে বৃদ্ধি পেয়েছে ফলে এর ফলে আসলে বিশাল সঞ্চয় হয়নি ...


6

এপিএল (ডায়ালগ) , 56 টি অক্ষর বা 62 বাইট *

আমার সহকর্মী মার্শাল একটি মার্জিত সমাধান নিয়ে এসেছেন, আমার চেয়ে 21 টি অক্ষর কম:

{'-'@(({1∊⍵≥∘.⌈⍨51+41}⌺5 5×∘(('X'≠⍵)+'~'=⍵))⍣≡'!'∘=)⍵}

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

{} বেনামে ফাংশন যেখানে আর্গুমেন্টটি represented দ্বারা প্রতিনিধিত্ব করে

'-'@(... )⍵ড্যাশ অবস্থানের নিম্নলিখিত মৌন ফাংশন দ্বারা ছদ্মবেশী:

  '!'∘= বুলিয়ান যেখানে বিস্মৃত বিবরণ যুক্তির সমান

  ()⍣≡ আরও কিছু পরিবর্তন না হওয়া পর্যন্ত নিম্নলিখিত সারণী ফাংশনটি প্রয়োগ করুন:

   ×∘() নিম্নলিখিত ধ্রুবক দ্বারা গুণ করুন:

    '~'=⍵ বুলিয়ান যেখানে টিলডে মূল আর্গুমেন্টের সমান হয়

    ()+ এটি যোগ করুন:

     'X'≠⍵ বুলিয়ান যেখানে এক্স মূল যুক্তি থেকে পৃথক

   {}⌺5 5 প্রত্যেকের জন্য, এটি কেন্দ্রিক 5 × 5 অঞ্চলে নিম্নলিখিত ফাংশনটি প্রয়োগ করুন:

    4↑1 একের প্রথম চারটি উপাদান নিন, শূন্যের সাথে প্যাডিং করুন [1,0,0,0]

    1+ একটি যোগ করুন [2,1,1,1]

    5⍴ দৈর্ঘ্য পাঁচটি চক্রাকারে পুনরায় আকার দিন [2,1,1,1,2]

    ∘.⌈⍨ উভয় অক্ষতে নিজেই সর্বাধিক সারণী

    ⍵≥ বুলিয়ান যেখানে সংশ্লিষ্ট প্রতিবেশী তার চেয়ে বড় বা সমান

    1∊ যদি সত্য হয় তবে বুলিয়ান


* শুধু প্রতিস্থাপন সঙ্গে ⎕U233A চরিত্র প্রতি একক বাইট জন্য ক্লাসিক অধীনে।


টিও লিঙ্কে, ইনপুট (">" এর বাম দিকে) আউটপুট (">" এর ডানদিকে) সমান, এটি কি এমন দেখাচ্ছে বলে মনে হয়?
এনজিএন

@ngn নিসলি স্পটেড Dispফাংশন কাজ করেছি না পারে। অপারেটর হিসাবে আপডেট হয়েছে। ধন্যবাদ।
অ্যাডম

... এবং একটি প্রশ্ন: @ক্লাসিক 1 বাইট হিসাবে গণনা না? আমার অনুমান হ্যাঁ
ngn


এখানে 61 বাইটের জন্য একটি ধারণা রয়েছে: '-'@({i/⍨∨⌿↑(↓⌈/¨|⍵∘.-i)≤3|'X@~-'⍳a[⍵]}⍣≡('!'=,a)/i←,⍳⍴a)⊢a←⎕( ⎕io←0)
এনজিএন

4

জাভা, 574 562 558 549 525 523 বাইট

import java.util.*;interface B{static char[][]g=new char[9][9];static void d(int i,int j,int r){g[i][j]=45;for(int x=Math.max(i-r,0);x<Math.min(i+r+1,9);x++)for(int y=Math.max(j-r,0);y<Math.min(j+r+1,9);y++)if(g[x][y]==64){d(x,y,1);}else if(g[x][y]>99){d(x,y,2);}else g[x][y]=45;}static void main(String[]a){Scanner q=new Scanner(System.in);for(int i=0;i<9;i++){int j=0;for(char c:q.nextLine().toCharArray())g[i][j++]=c;}for(int j=0;j<9;j++)for(int k=0;k<9;k++)if(g[j][k]==33)d(j,k,1);for(char[]z:g)System.out.println(z);}}

আমি জানি আপনি এটি পোস্ট করার পরে বেশ কিছুক্ষণ হয়ে গেছে। তবে আপনি কয়েকটি জিনিস গল্ফ করতে পারেন: উভয়ই '-'হতে পারে 45। উভয় Math.max(...,0)যাবে ...>0?...:0(একই সঙ্গে সম্পন্ন করা যেতে পারে Math.min(...,9)কিন্তু এটা বাইটের সঠিক একই পরিমাণ। for(int i=0;i<9;i++){int j=0;for(char c:q.nextLine().toCharArray())g[i][j++]=c;}for(int j=0;j<9;j++)for(int k=0;k<9;k++)if(g[j][k]==33)d(j,k,1);হতে পারে int i=0,j;for(;i<9;i++){j=0;for(char c:q.nextLine().toCharArray())g[i][j++]=c;}for(i=0;i<9;i++)for(j=0;j<9;j++)if(g[i][j]<34)d(i,j,1);এবং হয়ত আপনি একটি ফাংশন বের করে পরিবর্তে প্রোগ্রামের করতে পারে।।
কেভিন Cruijssen

1

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

'-'@({i/⍨∨⌿↑(↓⌈/¨|⍵∘.-i)≤3|'X@~-'a[⍵]}⍣≡('!'=,a)/i←,⍳⍴a)⊢a←⎕

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

a←⎕ ইনপুট মূল্যায়ন এবং নির্ধারিত a

i←,⍳⍴a সমস্ত কক্ষের সূচকগুলি (কর্ডগুলির জোড়া)

('!'=,a)/ শুধুমাত্র প্রাথমিকভাবে সক্রিয় বোমা ফিল্টার করুন

{ }⍣≡ স্থিতিশীল না হওয়া পর্যন্ত তালিকায় একটি রূপান্তর সম্পাদন করুন

  • 'X@~-'⍳a[⍵]অন্য যে কোনও কিছুর জন্য 0 X, 1 এর জন্য 0 বিকল্প করুন @( !)

  • 3|প্রভাবের "ব্যাসার্ধ" পেতে Mod 3; এটি অবশ্যই বৃহত্তর বা সমান হতে হবে ...

  • (↓⌈/¨|⍵∘.-i)≤ ... তালিকার ঘর এবং সমস্ত কক্ষের মধ্যে ম্যানহাটান দূরত্ব

  • i/⍨∨⌿↑ কোন কোষ প্রভাবিত হয়েছে তার বিটমাস্ক পান এবং সেগুলি থেকে নির্বাচন করুন i

'-'@( )⊢aকরা -ঐ অবস্থানের সময়ে

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