সরকারের দেয়ালের একটি সীমাবদ্ধ সরবরাহ রয়েছে


28

ভূমিকা

জ্ঞানীয় কোড গল্ফরা আমাদেরকে কিয়ামতের দিন বন্যার জন্য প্রস্তুত করেছিল । ঝুঁকিপূর্ণ অঞ্চলগুলি সরিয়ে নেওয়া হয়েছিল, এবং জনসংখ্যা উচ্চ স্থলে চলে গেছে।

আমরা বন্যাকে অবমূল্যায়ন করেছি (অথবা সম্ভবত @ ব্যবহারকারীর নাম্বার 333 এর কোডটিতে একটি বাগ ছিল)। কিছু উচ্চ-স্থল অঞ্চল দ্রুত সমুদ্রপৃষ্ঠের দিকে এগিয়ে চলেছে। এখনকার ঘনবসতিযুক্ত শিবিরগুলির বেঁচে থাকার জন্য প্রাচীরগুলি অবশ্যই তৈরি করা উচিত। দুঃখের বিষয়, সরকারের দেয়ালের সীমিত সরবরাহ রয়েছে।

সমস্যা

আমাদের ডুমসডের দৃশ্যাবলী একটি একক লাইনে দুটি সংখ্যা দ্বারা বর্ণনা করা হয়েছে nএবং m। সেই রেখাটি অনুসরণ করা হ'ল প্রতি লাইনের মান nসহ লাইনগুলি mকেবল একটি একক স্পেস দ্বারা পৃথক। প্রতিটি মান চারটি অক্ষরের একটি হবে।

  • xদুর্গম। এখানে জল প্রবাহিত হতে পারে না। প্রাচীরগুলি এখানে খাড়া করা যায় না।
  • -অস্থিতিশীল. এখান দিয়ে জল প্রবাহিত হতে পারে। প্রাচীরগুলি এখানে খাড়া করা যায় না।
  • .স্থিতিশীল। এখান দিয়ে জল প্রবাহিত হতে পারে। দেয়াল এখানে তৈরি করা যেতে পারে।
  • oশিবির। এখান দিয়ে জল প্রবাহিত হতে পারে। যদি তা হয়, সবাই মারা যায়। দেয়াল এখানে নির্মিত যেতে পারে না।

মানচিত্রের সমস্ত প্রান্ত থেকে জল প্রবাহিত হবে, যদি না প্রান্তটি দুর্গম হয় না বা টালিটিতে একটি প্রাচীর নির্মিত হয় না। এমন একটি প্রোগ্রাম লিখুন যা কোনও শিবির সুরক্ষার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক দেয়াল আউটপুট করতে পারে।

উদাহরণ ইনপুট

 6 7
 x . . x x x x
 x . . x - - x
 x . x x - - x
 x . o o o - .
 x . o o o - .
 x x x x x x x

উদাহরণ আউটপুট

3

অনুমিতি

  • জল কেবল orthogonally প্রবাহিত
  • শিবিরগুলি কেবলমাত্র দৃশ্যের জন্য একটি orthononalally সুসংগত ব্লক হিসাবে বিদ্যমান
  • একটি সমাধান সর্বদা উপস্থিত থাকবে (যদিও এটি প্রচুর পরিমাণে প্রাচীরের প্রয়োজন হতে পারে)
  • শিবিরগুলি কোনও প্রান্তে অবস্থিত হতে পারে না, কারণ দৃশ্যের কোনও সমাধান নেই
  • 2 << n16
  • 2 << m16
  • স্ট্যান্ডিনের কাছ থেকে ইনপুট সরবরাহ করা যেতে পারে, "city.txt" থেকে পড়া বা একক যুক্তি হিসাবে স্বীকৃত হতে পারে

সবচেয়ে কম কোড জয়!


2
প্রোগ্রামটি সঠিক হওয়ার জন্য এটি কি গ্রহণযোগ্য হবে, তবে সমস্যার নির্দিষ্ট উদাহরণগুলির সমাধান দেওয়ার জন্য পরিচিত মহাবিশ্বের উপস্থিতি অপেক্ষা আরও বেশি সময় নিবে?
ক্লাদিউ

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

2
কোড গল্ফ সাধারণত সময় সীমাবদ্ধতার প্রয়োজন হয় না।
হোছ 250

শান্ত! অন্য প্রশ্ন: ইনপুটটি কি আপনার নির্দিষ্ট হিসাবে হওয়া প্রয়োজন বা আমরা এটিকে অন্য কোনও আকারে রাখতে পারি?
ক্লাদিউ

@ ক্লডিউ আমি প্রয়োজনীয়তার বাইরে কিছু গ্রহণ করতে পারি না। আপনি যাইহোক, সম্পাদনা বোতামটি ব্যবহার করে প্রয়োজনীয়গুলিতে সম্পাদনার পরামর্শ দিতে পারেন। এখনও কোনও উত্তর নেই বলেই সম্ভবত আমি সম্ভবত সম্পাদনাটি এখনই গ্রহণ করব।
রেইনবোল্ট

উত্তর:


10

গণিত, 257 253 অক্ষর

d="city.txt"~Import~"Table";g=EdgeAdd[#,∞<->Tr@#&/@Position[VertexDegree@#,2|3]]&@GridGraph@d[[1,{2,1}]];{o,x,s}=Tr/@Position[Join@@d[[2;;]],#]&/@{"o","x","."};Catch@Do[If[Min[GraphDistance[VertexDelete[g,x⋃w],∞,#]&/@o]==∞,Throw@Length@w],{w,Subsets@s}]

ইনপুট থেকে পড়া হয় "city.txt"

ব্যাখ্যা:

ম্যাথমেটিকায় গ্রাফ নিয়ে কাজ করার জন্য অনেকগুলি কাজ রয়েছে।

প্রথমত, আমি থেকে ডেটা পড়ি "city.txt"

d="city.txt"~Import~"Table";

তারপরে আমি 'এম' * 'এন' শীর্ষকোষ ( ) দিয়ে একটি গ্রিড গ্রাফ তৈরি করি এবং এর সাথে GridGraph@d[[1,{2,1}]]একটি "ভার্টেক্স এ ইনফিনিটি" যুক্ত করি যা গ্রাফের "প্রান্তগুলিতে" প্রতিটি প্রান্তিকের সাথে সংযুক্ত থাকে। এই প্রান্তটি যেখানে জল প্রবাহিত করে।

g=EdgeAdd[#,∞<->Tr@#&/@Position[VertexDegree@#,2|3]]&@GridGraph@d[[1,{2,1}]];

এবং o, xএবং s"o", "x" এবং "এর অবস্থানগুলি বোঝান।" যথাক্রমে।

{o,x,s}=Tr/@Position[Join@@d[[2;;]],#]&/@{"o","x","."};

তারপরে যেকোন উপসেটের wজন্য s(উপগ্রহগুলি দৈর্ঘ্য অনুসারে বাছাই করা হয়), আমি ( ) প্রবেশদ্বারটি xএবং এর wথেকে শিখরগুলি মুছুন এবং শিবিরের "ভার্ভেক্সে আনুভূমি" থেকে সবচেয়ে দীর্ঘতম দৈর্ঘ্যের সন্ধান করুন । দৈর্ঘ্য যদি অনন্ত হয় তবে শিবির নিরাপদ থাকবে। সুতরাং প্রথম যেমন দৈর্ঘ্য হ'ল একটি শিবির সুরক্ষার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যা।gVertexDelete[g,x⋃w]ow

Catch@Do[If[Min[GraphDistance[VertexDelete[g,x⋃w],∞,#]&/@o]==∞,Throw@Length@w],{w,Subsets@s}]

নিস! আমি অনুভব করেছি যে আমি ভিন্ন ভাষায় ভিন্ন পদ্ধতির দ্বারা স্কুপ হয়ে যাব।
ক্লাদিউ

1
আপনি যদি আমাদের বাকী অংশের জন্য আপনার কোডটি ব্যাখ্যা করেন তবে আমি আরও গর্বের সাথে তা করব Up
মাইকেল স্টারন

কেউ উত্তর দিতে পারে যে এই উত্তরটি সঠিক বা "গণিত" এর জন্য কোনও অনলাইন ইন্টারপ্রেটার সরবরাহ করতে পারে? একটি খুঁজে পেতে সমস্যা হচ্ছে।
রেইনবোল্ট

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

4

সি, 827 799 522

Golfed:

#define N for(
#define F(W,X,Y,Z) N i= W;i X Y;i Z)
#define C(A,B,C) if(c[A][B]==C)
#define S(W,X,Y,Z,A,B) p=1;F(W,X,Y,Z)C(A,B,120)p=0;if(p){F(W,X,Y,Z){C(A,B,46){c[A][B]='x';z++;Q();break;}}}else{F(W,X,Y,Z){C(A,B,120)break;else c[A][B]='o';}}
p,m,z,w,h,o,i,u,l,x,y;char c[16][16];Q(){N u=0;u<h;u++)N l=0;l<w;l++)if(c[u][l]=='o'){x=u;y=l;S(x,>,m,--,i,y)S(y,>,m,--,x,i)S(y,<,w,++,x,i)S(x,<,h,++,i,y)}}main(int a, char **v){h=atoi(v[1]);w=atoi(v[2]);N m=-1;o<h;o++)N i=0;i<w;i++)scanf("%c",&c[o][i]);Q();printf("%d",z);}

ইনপুটটি উচ্চতার সাথে এবং কমান্ড লাইন আর্গুমেন্ট হিসাবে দেওয়া হয় এবং তারপরে গ্রিডটি স্টিডিনের মতো একক স্ট্রিং হিসাবে পড়তে হয়: ./a.out 6 7 < inputযেখানে ইনপুটটি এই ফর্মটিতে থাকে (বাম থেকে ডানদিকে, নীচে থেকে নীচে):

x..xxxxx..x - xx.xx - xx.ooo-.x.ooo-.xxxxxxx

"রিডেবল":

#define F(W,X,Y,Z) for(i= W;i X Y;i Z)
#define C(A,B,C) if(c[A][B]==C)
#define S(W,X,Y,Z,A,B) p=1;F(W,X,Y,Z)C(A,B,120)p=0;if(p){F(W,X,Y,Z){C(A,B,46){c[A][B]='x';z++;Q();break;}}}else{F(W,X,Y,Z){C(A,B,120)break;else c[A][B]='o';}}

/*Example of an expanded "S" macro:
p=1;
for(i=x;i>m;i--) if(c[i][y]==120) p=0;
if(p)
{
    for(i=x;i>m;i--)
    {
        if(c[i][y]==46)
        {
            c[i][y]='x';
            z++;
            Q();
            break;
        }
    }
}
else
{
    for(i= x;i > m;i --)
    {
        if(c[i][y]==120) break;
        else c[i][y]='o';
    }
}
*/

p,m,z,w,h,o,i,u,l,x,y;
char c[16][16];
Q(){
    for(u=0;u<h;u++)
        for(l=0;l<w;l++)
            if(c[u][l]=='o')
            {
        x=u;y=l;
        S(x,>,m,--,i,y)
        S(y,>,m,--,x,i)
        S(y,<,w,++,x,i)
        S(x,<,h,++,i,y)
            }
}

main(int a, char **v)
{
    h=atoi(v[1]);
    w=atoi(v[2]);
    for(m=-1;o<h;o++)
        for(i=0;i<w;i++)
            scanf("%c",&c[o][i]);
    P();
    Q();
    printf("%d\n",z);
    P();
}

//Omitted in golfed version, prints the map.
P()
{
    for(o=0;o<h;o++)
    {
        for (i=0;i<w;i++) printf("%c",c[o][i]);
        printf("\n");
    }   
}

@ ক্লাডিউ দ্বারা সমাধান হিসাবে সংক্ষিপ্ত কাছাকাছি কোথাও না, কিন্তু এটি নির্মমভাবে দ্রুত চলে। প্রান্তগুলি থেকে বন্যার ভরাটের পরিবর্তে এটি শিবিরটি সন্ধান করে এবং 'ও' টোকেনগুলি থেকে বাইরের দিকে কাজ করে।

  • যদি শিবিরের পাশের কোনও অস্থির মাটির মুখোমুখি হয় তবে এটি তার উপর শিবিরটি প্রসারিত করে।
  • যদি গ্রিডে থাকা কোনও শিবিরের প্রতিটি দিকে কমপক্ষে একটি প্রাচীর না থাকে তবে এটি প্রাচীর তৈরি না করা অবধি এই দিকে চলে যায়।
  • প্রতিটি নতুন প্রাচীর বিভাগ স্থাপন করার পরে, এটি পরবর্তী দেয়াল বিভাগ স্থাপন করার জন্য পুনরাবৃত্তি করে।

নমুনা প্রাচীর স্থাপনা:

x..xxxx                           x..xxxx
x..x--x                           x..xoox
x.xx--x                           x3xxoox
x.ooo-.  <-- results in this -->  xooooo1
x.ooo-.                           xooooo2
xxxxxxx                           xxxxxxx

ওহ আকর্ষণীয় পদ্ধতির! এটি কি সর্বদা সংক্ষিপ্ত উত্তর দেয়? উদাহরণস্বরূপ, এই মানচিত্রের জন্য এটি কী উত্তর দেয় ? এটি 3 হওয়া উচিত (যেখানে নতুন দেয়ালগুলি সেখানে চিহ্নিত রয়েছে @)। আমি আপনার কোডটি নিজে চালানোর চেষ্টা করেছি তবে এটি কাজ করে বলে মনে হচ্ছে না
ক্লোদিয়

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

2
@ ক্লাডিউ - উপরে আমার মন্তব্য দেখুন, আপনি পোস্ট করা মানচিত্রের ফলাফল পেস্টবিন . com/r9fv7tC5 এ রয়েছে । এটি সর্বদা সংক্ষিপ্ত উত্তর দেওয়া উচিত , তবে আমি কেবল এটি 10 ​​বা 15 মানচিত্র দিয়ে পরীক্ষা করেছি যা আমি ভেবেছিলাম কোণার কেসগুলি উপস্থাপন করতে পারে। আমি দেখার জন্য কৌতূহল করব যে কেউ মানচিত্রে এটি ব্যর্থ হয়েছে তা সনাক্ত করতে পারে কিনা।
Comintern

4

পাইথন, 553 525 512 449 414 404 387 368 টি অক্ষর (প্রার্থনার জন্য +4?)

আমি এটি গল্ফ করে অনেক মজা পেয়েছিলাম। আপনি যদি এটি সংকোচনের চেষ্টা করেন তবে এটি 82 বাইট বড়! এখন এটি সংক্ষিপ্তকরণ এবং পুনরাবৃত্তি অভাব একটি পরিমাপ।

R=range;import itertools as I
f=map(str.split,open('city.txt'))[1:]
S=[]
def D(q):
 q=set(q)
 def C(*a):
    r,c=a
    try:p=(f[r][c],'x')[a in q]
    except:p='x'
    q.add(a)
    if'.'==p:S[:0]=[a]
    return p<'/'and C(r+1,c)|C(r-1,c)|C(r,c+1)|C(r,c-1)or'o'==p
 if sum(C(j,0)|C(j,-1)|C(0,j)|C(-1,j)for j in R(16))<1:print n;B
D(S);Z=S[:]
for n in R(len(Z)):map(D,I.combinations(Z,n))

ইনডেন্টেশন স্তরগুলি হল স্থান, ট্যাব।

ব্যবহার :

থেকে পড়া city.txt:

6 7
x . . x x x x
x . . x - - x
x . x x - - x
x . o o o - .
x . o o o - .
x x x x x x x

নিম্নলিখিত হিসাবে আহ্বান:

$ python floodfill_golf.py 2>X
3

2>Xএকটি ব্যতিক্রম উত্থাপন করে প্রোগ্রাম প্রস্থানের যেহেতু দ্বারা stderr লুকাতে হয়। যদি এটিকে অন্যায় হিসাবে বিবেচনা করা হয় তবে আহ্বানের জন্য নির্বিঘ্নে 4 টি অক্ষর যুক্ত করুন।

ব্যাখ্যা :

সাধারণ উদ্দীপনা। Cএকটি বন্যা ভরাট করে এবং সত্য যদি এটি একটি শিবিরে আঘাত করে তবে ফিরে আসবে। অতিরিক্ত প্যাডিং নেই যেহেতু প্যাডিং সঠিকভাবে সেট আপ করতে খুব বেশি জায়গা নিয়েছে। Dপূরণের জন্য দেয়ালের একটি সেট দেওয়া হয়েছে, Cপ্রান্তের প্রতিটি বিন্দু থেকে কল আসে যাতে Cএই দেয়ালগুলির জন্য অ্যাকাউন্ট থাকে এবং দৈর্ঘ্য মুদ্রণ করে এবং যদি তাদের কেউ শিবিরে না পৌঁছায় তবে প্রস্থান করে। দেয়ালগুলির তালিকা বন্যা-ভরাট ট্র্যাক রাখতে ব্যবহার করা হয়, সুতরাং বোর্ডের কোনও অনুলিপি প্রয়োজন হয় না! Trickily, Cতার সাথে সাথে খালি দাগ এটি একটি লিস্টে খুঁজে বের করে appends, S, তাই ফাংশন Dহয় এছাড়াও প্রথম কনস্ট্রাক্ট খালি দাগ তালিকা ব্যবহার করেছিলেন। এই কারণে, আমি এর sumপরিবর্তে ব্যবহার করি any, সমস্ত .রান প্রথমবারের মতো সংগ্রহ করা হয়েছে তা নিশ্চিত করতে।

আমি Dএকবার অনুরোধ করছি, তারপরে খালি দাগগুলির তালিকাটি অনুলিপি করুন Zযেহেতু এতে Sযুক্ত হয়ে থাকবে (অক্ষম, তবে চরিত্রের গণনায় সস্তা)। তারপরে আমি itertools.combinations0 টি দাগ থেকে খালি দাগের প্রতিটি কম্বো নির্বাচন করতে ব্যবহার করব । আমি প্রতিটি কম্বো চালিত করি Dএবং এটি প্রথমটি যে কাজ করে তার দৈর্ঘ্য মুদ্রণ করে, প্রোগ্রামটি থেকে বেরিয়ে আসার ব্যতিক্রম বাড়িয়ে তোলে। যদি কোনও উত্তর না পাওয়া যায় তবে কিছুই মুদ্রিত হয় না।

মনে রাখবেন যে বর্তমানে কোনও প্রাচীরের প্রয়োজন না থাকলে প্রোগ্রামটি কাজ করে না। এই কেসটির যত্ন নেওয়া এটি +3 অক্ষর হতে পারে; নিশ্চিত না যে এটি প্রয়োজনীয় কিনা।

এছাড়াও মনে রাখবেন যে এটি একটি O(2^n)অ্যালগরিদম, যেখানে nখালি দাগগুলির সংখ্যা। সুতরাং, মাঝখানে একটি শিবির সহ 15x15 সম্পূর্ণ খালি বোর্ডের জন্য, এটি সম্পূর্ণ করতে 2^(15*15-1)= 2.6959947e+67পুনরাবৃত্তিগুলি নেবে , যা সত্যই খুব দীর্ঘ সময় হতে চলেছে!


1

গ্রোভি: 841 805 754

i=new File("city.txt").getText()
x=i[2] as int
y=i[0] as int
m=i[4..i.length()-1].replaceAll('\n','').toList()
print r(m,0)
def r(m,n){if(f(m))return n;c=2e9;g(m).each{p=r(it,n+1);if(p<c)c=p;};return c;}
def f(m){u=[];u.addAll(m);for(i in 0..(x*y)){for(l in 0..m.size()-1){n(l,u);s(l,u);e(l,u);w(l,u);}};m.count('o')==u.count('o')}
def n(i,m){q=i-x;if((((q>=0)&(m[q]=='!'))|(q<0))&m[i]!='x'&m[i]!='W'){m[i]='!'}}
def s(i,m){q=i+x;if((((q>=0)&(m[q]=='!'))|(q<0))&m[i]!='x'&m[i]!='W'){m[i]='!'}}
def e(i,m){q=i+1;if((((q%x!=0)&(m[q]=='!'))|(q%x==0))&m[i]!='x'&m[i]!='W'){m[i]='!'}}
def w(i,m){q=i-1;if((((i%x!=0)&(m[q]=='!'))|(i%x==0))&m[i]!='x'&m[i]!='W'){m[i]='!'}}
def g(m){v=[];m.eachWithIndex{t,i->if(t=='.'){n=[];n.addAll(m);n[i]='W';v<<n}};return v}

Ungolfed:

def i = new File("city.txt").getText()
x=i[2].toInteger()
y=i[0].toInteger()
def m=i[4..i.length()-1].replaceAll('\n','').toList()
println r(m, 0)

def r(m, n){
    if(f(m)) return n
    def c = Integer.MAX_VALUE

    getAllMoves(m).each{ it -> 
        def r = r(it, n+1)
        if(r < c) c = r
    }
    return c;
}

def f(m){
    def t = []
    t.addAll(m)
    for(i in 0..(x*y)){
        for(l in 0..m.size()-1){
            n(l,t);s(l,t);e(l,t);w(l,t);
        }
    }
    m.count('o')==t.count('o')
}

def n(i,m){
    def t = i-x;
    if( ( ( (t >= 0) && (m[t]=='!') ) || (t < 0)) && m[i]!='x' && m[i]!='W'){
        m[i]='!'
    }
}

def s(i,m){
    def t = i+x;
    if( ( ( (t >= 0) && (m[t]=='!') ) || (t < 0)) && m[i]!='x' && m[i]!='W'){
        m[i]='!'
    }
}

def e(i,m){
    def t = i+1;
    if( ( ( (t%x!=0) && (m[t]=='!') ) || (t%x==0)) && m[i]!='x' && m[i]!='W'){
        m[i]='!'
    } 
}

def w(i,m){
    def t = i-1;
    if( ( ( (i%x!=0) && (m[t]=='!') ) || (i%x==0)) && m[i]!='x' && m[i]!='W'){
        m[i]='!'
    }
}

def getAllMoves(m){
    def moves = []
    m.eachWithIndex { t, i ->
        if(t=='.'){
            def newList = []
            newList.addAll(m)
            newList[i]='W'
            moves << newList
        }
    }
    return moves
}

আরও অনেক গল্ফ আসছে ...

কোনও সমাধান না হলে 2E9 প্রদান করে।


0

ডায়ালগ এপিএল , 91 বাইট

⊃∊{1∊a[⍸×{(×d)∧s 3∨/3∨⌿⍵}⍣≡4=d←0@⍵⊢a]:⍬⋄≢⍵}¨c[⍋≢¨c←(,⍳2⊣¨b)/¨⊂b←⍸2=a←(s←(4,4,⍨⍉)⍣2)'xo.'⍳⎕]

ধরে নেওয়া ⎕IO=0, v16.0 ( @এবং ) থেকে বৈশিষ্ট্যগুলি ব্যবহার করে , চলমান সময় .-s এর সংখ্যায় তাত্পর্যপূর্ণ

ইনপুট মূল্যায়ন করা হয়, অক্ষর একটি ম্যাট্রিক্স হতে হবে

'xo.'⍳x0, o1 এর .সাথে 2, 2 সহ এবং অন্যান্য 3 দিয়ে প্রতিস্থাপন করুন

s←(4,4,⍨⍉)⍣2 একটি ফাংশন যা 4 মেট্রিক্সকে ঘিরে

a← একটি ভেরিয়েবল 4s দ্বারা বেষ্টিত সংখ্যা ম্যাট্রিক্স নির্ধারণ করুন a

b←⍸2= bকর্ড জোড়গুলির তালিকা যেখানে 2s (অর্থাত্ .) হয়

(,⍳2⊣¨b)/¨⊂b এর উপাদানগুলির সমস্ত সংমিশ্রণ তৈরি করে b

c[⍋≢¨c←...] আকার অনুযায়ী তাদের বাছাই করুন

{... :⍬⋄≢⍵}¨ প্রতিটি সংমিশ্রণের জন্য, কিছু পরীক্ষা করুন এবং তার দৈর্ঘ্য বা একটি খালি তালিকা ফিরে আসুন

⊃∊ প্রথম খালি ফলাফল

d←0@⍵⊢a dহয় a0 দিয়ে প্রতিস্থাপিত কিছু উপাদানের সঙ্গে

4= বুলিয়ান ম্যাট্রিক্স তৈরি করুন - 4s কোথায়? অর্থাৎ আমরা যে সীমানা যুক্ত করেছি

{...}⍣≡{}ফল স্থির না হওয়া পর্যন্ত ফাংশন প্রয়োগ করতে থাকুন

3∨/3∨⌿⍵ প্রতিবেশীদের সাথে প্রতিটি উপাদান "বুলিয়ান বা"

s ফলাফল আরও ছোট হবে, তাই আসুন সীমানাটি আবার তৈরি করি

(×d)∧dবুলিয়ান মাস্ক হিসাবে অ-শূন্য উপাদানগুলির (নন-ওয়ালগুলি) প্রয়োগ করুন

a[⍸× ...] কি aআমাদের বুলিয়ান ম্যাট্রিক্স মধ্যে 1s সাথে সঙ্গতিপূর্ণ?

1∊ কোন 1s আছে, অর্থাত oশিবির?

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