ইটের কাঠামো কি স্থিতিশীল?


24

আসুন একটি আদর্শ গাঁথুনি ইট হিসাবে উপস্থাপন করুন [__](এবং শীর্ষটি খোলা আছে তা উপেক্ষা করুন)। যখন এই ইটগুলি স্ট্যাক করা থাকে তখন প্রতিটি অন্যান্য স্তর অর্ধেক ইট দিয়ে অফসেট করা হয়, যেমনটি ইট নির্মাণের ক্ষেত্রে যথারীতি:

  [__][__][__][__]
[__][__][__][__]  
  [__][__][__][__]
[__][__][__][__]  

সুতরাং প্রতিটি ইটের সর্বাধিক ছয় প্রতিবেশী থাকে এবং দুটি ইট সরাসরি উল্লম্বভাবে লাইন করা অসম্ভব।

মূল বক্তব্যটি হ'ল এই ইটগুলির বিন্যাস বন্ধকযুক্ত নয় , কেবল মহাকর্ষ দ্বারা একত্রে রাখা। সুতরাং এটি গুরুত্বপূর্ণ যে কাঠামোর প্রতিটি ইট স্থিতিশীল, অন্যথায় পুরো কাঠামোটি অস্থির।

পৃথক ইট স্থিতিশীল থাকতে পারে এমন তিনটি উপায় রয়েছে:

  1. মাটিতে যে কোনও ইট (ইটের সর্বনিম্ন রেখা) স্থিতিশীল।
  2. সরাসরি নীচে দুটি ইটযুক্ত যে কোনও ইট স্থিতিশীল:

      [__]   <- this brick is stable
    [__][__] <- because these bricks hold it up
    
  3. একই দিকের উপরে এবং নীচে উভয়ই ইট স্থিতিশীল:

      [__]  [__]
    [__]      [__] <- these middle bricks are stable
      [__]  [__]      because the upper and lower bricks clamp them in
    
    [__]          [__]
      [__]      [__]   <- these middle bricks are NOT stable
        [__]  [__]
    

এই নিয়মগুলি থেকে আমরা উদাহরণস্বরূপ, ব্যবস্থাটি দেখতে পারি

  [__][__][__][__]
[__][__][__][__]  
  [__][__][__][__]
[__][__][__][__]  

অস্থির কারণ উপরের ডানদিকে ইটটি অস্থির, যা এটি গ্রহণ করে।

একটি ইটের কাঠামো কেবলমাত্র স্থিতিশীল হয় যদি এর সমস্ত ইট স্থিতিশীল থাকে।

চ্যালেঞ্জ

আপনার কাজটি এমন একটি ফাংশন লিখুন যা ইটের কাঠামোর স্ট্রিংয়ের মধ্যে পড়ে এবং কাঠামো স্থিতিশীল থাকলে সত্যবাদী মান এবং অস্থির হলে মিথ্যা মান প্রদান করে। ( সত্যবাদী / মিথ্যা সংজ্ঞা )

ইনপুট স্ট্রিংটি নির্বিচারে বড় হতে পারে তবে এটি সর্বদা অক্ষরের একটি আয়তক্ষেত্রাকার গ্রিড হবে, স্পেসগুলি ইট শূন্যস্থান পূরণ করে। চরিত্রের গ্রিডের প্রস্থ 4 দ্বারা বিভাজ্য হবে তবে উচ্চতাটি বিজোড় বা এমনকি সমান হতে পারে।

ইটের গ্রিড সর্বদা উপরে এবং নীচের বাম ইটের অবস্থানের ডানদিকে প্রসারিত হয়:

         .
         .
         .
  BRK?BRK?BRK?BRK?  
BRK?BRK?BRK?BRK?BRK?
  BRK?BRK?BRK?BRK?  
BRK?BRK?BRK?BRK?BRK? . . .
  BRK?BRK?BRK?BRK?  
BRK?BRK?BRK?BRK?BRK?

কাঠামোর উপর নির্ভর করে প্রতিটি BRK?হয় একটি ইট ( [__]) বা ফাঁকা স্থান (4 স্পেস) উপস্থাপন করে।

লক্ষ্য করুন যে অক্ষর গ্রিডটি আয়তক্ষেত্রাকার হয়েছে তা নিশ্চিত করার জন্য অর্ধ-ইটের গহ্বরগুলি ফাঁকা জায়গাগুলিতে পূর্ণ হয়েছে।

স্কোরিং

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

নোট

  • ইচ্ছা করলে আপনি .স্থানের পরিবর্তে খালি স্থানের অক্ষর হিসাবে ব্যবহার করতে পারেন ।
  • খালি স্ট্রিং স্থিতিশীল হিসাবে বিবেচনা করা হয়।
  • যদি আপনার ভাষার ফাংশন না থাকে আপনি ইনপুট হিসাবে একটি নামযুক্ত স্ট্রিং ভেরিয়েবল ব্যবহার করতে পারেন এবং ফলাফলটি অন্য ভেরিয়েবলের কাছে নির্ধারণ করতে পারেন।
  • যদি আপনার ভাষার স্ট্রিং না থাকে তবে আপনি ইনপুটটির জন্য উপযুক্ত বলে মনে করতে পারেন।

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

খালি লাইন দ্বারা বিভক্ত বিভিন্ন পরীক্ষার কেস। স্বচ্ছতার .জন্য ফাঁকা জায়গার পরিবর্তে স্থানের পরিবর্তে ব্যবহৃত হয় is

স্থিতিশীল:

[__]

..[__]..
[__][__]

........[__]........
......[__][__]......
........[__]........

..[__][__]..
[__][__][__]
..[__][__]..
[__]....[__]

............[__]..
..[__][__][__][__]
[__][__][__][__]..
..[__][__][__][__]
[__][__][__][__]..

..[__]........[__]..
[__][__][__][__][__]
..[__][__][__][__]..
....[__][__][__]....
......[__][__]......
........[__]........

অস্থিতিশীল:

..[__]..
........

..[__]..
[__]....

..[__]..
....[__]

..[__][__]..
[__]....[__]
..[__][__]..
[__]....[__]

..[__][__][__][__]
[__][__][__][__]..
..[__][__][__][__]
[__][__][__][__]..

[__][__][__][__][__]
..[__][__][__][__]..
....[__][__][__]....
......[__][__]......
........[__]........

7
আমি দৃ sure়ভাবে নিশ্চিত যে আপনার স্থিতিশীলতার সংজ্ঞা বাস্তবের সাথে মেলে না ;-)
জন ডিভোরাক

14
@ জানডভোরাক আমি জানি তবে কে পুরো পদার্থবিজ্ঞানের ইঞ্জিন গল্ফ করতে চাইবে: পি
ক্যালভিনের

........[__].... ......[__][__].. ....[__][__].... ..[__][__]...... [__][__]........ ..[__]..........(আপনাকে মানসিকভাবে একে অপরের শীর্ষে এই রেখাগুলি স্ট্যাক করে ফেলতে হবে The বিষয়টি হ'ল আপনার নিয়মগুলি এমন কাঠামোর অনুমতি দেয় যার মাধ্যাকর্ষণ কেন্দ্রটি ভূমির সাথে তাদের যোগাযোগের দিক থেকে অনেক দূরে রয়েছে this এটি এড়াতে তাদের আরও কঠোর করা সম্ভব হয়েছিল) , কোনও পদার্থবিজ্ঞানের ইঞ্জিনের প্রয়োজন ছাড়াই, যদি আপনি এটির মতো অনুভব করেন))
নাথানিয়েল

2
পদার্থবিজ্ঞানের ভেরিসিমিলিটিড হ'ল কৃমির বিশাল ক্যান। একসাথে অনেকগুলি সহজ ক্ষেত্রে হাজির হতে পারে যেখানে স্থিতিশীলতা নির্ভরযোগ্য ঘর্ষণ এবং / অথবা উপরের ইটের ওজনের উপর।
COTO

10
"স্থিতিশীল" ... হেহ
wchargin

উত্তর:


12

80386 মেশিন কোড, 98

কোড:

60 8b f1 8b f9 b0 0a f2 ae 8b ef 2b ee b0 00 f2
ae 2b fe 83 ef 02 2b fd 72 41 03 f7 2b f5 33 c9
8a 7c 6e fc 8a 1c 6e b1 02 33 d2 8b c7 f7 f5 83
fa 02 75 03 b7 00 41 8a 66 fc 8a 06 3b fd 7d 02
33 c0 23 c3 0a c4 22 df 0b c3 f6 44 2e fe 01 74
04 d1 e8 73 06 2b f1 2b f9 73 c5 61 d1 d0 83 e0
01 c3

কোডটি ASCII আর্টটি শেষ থেকে শুরু পর্যন্ত স্ক্যান করে, একবারে 2 টি অক্ষর ঝাঁপিয়ে। এটি প্রয়োজনীয় চেক দ্বিগুণ করে (এটি 4 টি অক্ষর লাফানোর পক্ষে যথেষ্ট হবে), তবে যুক্তিটিকে সহজ করে তোলে।

অক্ষরের পরবর্তী-শেষ-সারিতে চেকিং শুরু হয় (শেষ লাইনটি পরীক্ষা করার দরকার নেই)। প্রতিটি লাইনে এটি ডান থেকে 3 টি অক্ষর শুরু করে (ডানদিকে খুব বেশি চেক করার দরকার নেই)। প্রতিটি চরিত্রের জন্য, এটি চারটি পার্শ্ববর্তী অক্ষর পরীক্ষা করে:

A...B
..X..
C...D

এখানে অনেকগুলি যৌক্তিক শর্তাদি যাচাই করার জন্য রয়েছে:

  • যদি এ এবং সি ইটের অক্ষর হয় তবে এক্স সমর্থিত
  • যদি বি এবং ডি ইটের অক্ষর হয় তবে এক্স সমর্থিত
  • যদি সি এবং ডি ইটের অক্ষর হয় তবে এক্স সমর্থিত
  • এক্স যদি একটি ইটের চরিত্র হয় তবে এটি সমর্থন করতে হবে; অন্যথায় কাঠামো অস্থিতিশীল

এটি একটি ভাগ্যবান কাকতালীয় যে সমস্ত ইটের অক্ষরগুলির [_]তাদের এলএসবি সেট থাকে; অন্য সমস্ত চরিত্র .\nএটি পরিষ্কার আছে। উপরন্তু, 80386 নির্দেশ সেট এই কুশলী "উচ্চ" এবং "কম" রেজিস্টার (হয়েছে ah, alইত্যাদি), যা সাহায্যের চেক একটু parallelize। সুতরাং সমস্ত চেকিং কিছু অস্পষ্ট বিট ফিডিং পরিমাণ।

আমি নিম্নলিখিত সি কোড থেকে শুরু করেছি:

int check(const char* ptr)
{
    int width, result = 0, pos;

    width = strchr(ptr, '\n') - ptr + 1;
    pos = strlen(ptr) - 1 - width; // pos points to the B character
    ptr += pos - width;

    while (pos >= 0)
    {
        int a = ptr[-4];
        int c = ptr[-4 + 2 * width];
        int b = ptr[0];
        int d = ptr[0 + 2 * width];
        int ab = a << 8 | b;
        int cd = c << 8 | d;
        if (pos < width)
            ab = 0; // A and B don't exist; set them to 0
        int jump = 2; // distance to next brick
        if (pos % width == 2) // leftmost brick?
        {
            cd &= 0xff; // C doesn't exist; set it to 0
            ++jump;
        }
        int support_v = ab & cd;
        support_v = support_v | support_v >> 8; // data in LSB
        int support_h = cd & cd >> 8; // data in LSB
        int support = (support_v | support_h) & 1;
        if (!support & ptr[-2 + width])
            goto UNSTABLE;
        ptr -= jump;
        pos -= jump;
    }
    return 1;
UNSTABLE:
    return 0;
}

আমি কোডটি অ্যাসেম্বলি ভাষায় অনুবাদ করেছি (এটি বেশিরভাগ এক-এক-এর) strchrএবং এর একটি গল্ফ বাস্তবায়ন সহ strlen। নিম্নলিখিত উত্স কোডটি আমার পোস্টের শীর্ষে মেশিন কোডে এমএস ভিজ্যুয়াল স্টুডিও দ্বারা অনুবাদ করা হয়েছে।

__declspec(naked) int __fastcall check(const char* ptr) // MS Visual Studio syntax
{
    _asm
    {
        pushad;

        // ecx = ptr
        mov esi, ecx; // esi = ptr
        mov edi, ecx
        mov al, 10;
        repne scasb;
        mov ebp, edi;
        sub ebp, esi; // ebp = width

        mov al, 0;
        repne scasb;
        sub edi, esi;
        sub edi, 2;
        sub edi, ebp; // edi = pos
        jc DONE;

        add esi, edi;
        sub esi, ebp;

        xor ecx, ecx; // ecx = jump

    LOOP1:
        mov bh, [esi - 4 + 2 * ebp]; // bh = C
        mov bl, [esi + 2 * ebp]; // bl = D
        // bx = CD
        mov cl, 2;
        xor edx, edx
        mov eax, edi
        div ebp;
        cmp edx, 2;
        jne LABEL2;
        mov bh, 0
        inc ecx;
    LABEL2:

        mov ah, [esi - 4]; // ah = A
        mov al, [esi]; // al = B
        // ax = AB
        cmp edi, ebp;
        jge LABEL3;
        xor eax, eax;
    LABEL3:

        and eax, ebx; // ax = support_v
        or al, ah; // al = support_v
        and bl, bh; // bl = support_h
        or eax, ebx; // eax = support
        test byte ptr[esi - 2 + ebp], 1;
        jz LABEL4; // not a brick character - nothing to check
        shr eax, 1; // shift the LSB into the carry flag
        jnc DONE;
    LABEL4:
        sub esi, ecx;
        sub edi, ecx;
        jnc LOOP1;

    DONE:
        // here, the result is in the carry flag; copy it to eax
        popad;
        rcl eax, 1;
        and eax, 1;
        ret;
    }
}

7

ম্যাটল্যাব - ১১৯ বাইট

minified:

function c=S(B),f=@(m)conv2([(0&B(1,:))+46;B]+3,m,'valid');M=[2 0;-1 -1;0 2];c=isempty(B)||all(all(f(M)&f(fliplr(M))));

সম্প্রসারিত:

function c = isstable( B )

f = @(m) conv2( [(0&B(1,:))+46; B] + 3, m, 'valid' );
M = [2 0;-1 -1;0 2];
c = isempty( B ) || all(all( f( M ) & f(fliplr( M )) ));

নমুনা ব্যবহার:

S4 = [  '..[__][__]..'; ...
        '[__][__][__]'; ...
        '..[__][__]..'; ...
        '[__]....[__]'];

fprintf( 'S4: %d\n', isstable( S4 ) );

S4: 1

U4 = [  '..[__][__]..'; ...
        '[__]....[__]'; ...
        '..[__][__]..'; ...
        '[__]....[__]'];

fprintf( 'U4: %d\n', isstable( U4 ) );

U4: 0

বিস্তারিত

রুটিন .ইনপুট ম্যাট্রিক্সের শীর্ষে একটি সারি সংযোজন করে, তারপরে ASCII অক্ষর কোডগুলিতে 3 যোগ করে একটি সংখ্যাসূচক ম্যাট্রিক্সে রূপান্তর করে। এই রূপান্তরটি দেওয়া হয়েছে, কার্নেলের সাথে একটি 2 ডি সমাবর্তন

 2  0
-1 -1
 0  2

0চরিত্রের প্যাটার্নে এমন স্থানে ম্যাট্রিক্স পাওয়া যায়

 . *
 _ _
 * .

*"যে কোনও চরিত্র" উপস্থাপনের সাথে উপস্থিত রয়েছে । কার্নেলটি নির্মাণের কারণে, এটিই কেবলমাত্র বৈধ চরিত্রের প্যাটার্ন যা একটি উত্পন্ন করবে 0

শনাক্ত করার জন্য কার্নেলের বাম-ডান উল্টানো সংস্করণ দিয়ে একটি অভিন্ন সমঝোতা করা হয়

 * .
 _ _
 . *

কোনও ইনপুট স্থিতিশীল হয় যদি হয় i ) এটি খালি, বা ii ) কোনও জিরো উভয়ই কনভলভেন্সে উপস্থিত না হয়।

হতাশা দুটি

  1. ম্যাটল্যাবের ডিফল্ট কনভলিউশন অপারেন্ড ম্যাট্রিক্সের প্রান্তগুলি 0পেরিয়ে যায়, উভয় কনভলিউশনের জন্য বিপরীত কোণে ভুল কাজ করে, যেখানে কনভোলশনটি বৈধ হয় সেখানে আউটপুট সীমাবদ্ধ ,'valid'করার জন্য (8 বাইট) যুক্ত করা প্রয়োজন conv2

  2. খালি স্ট্রিং কেস পরিচালনা করাতে 12 বাইট যুক্ত হয়।


6

জাভাস্ক্রিপ্ট (E6) 131 261

F=a=>
  [...a].every((e,p)=>
    !(d={']':-3,'[':3}[e])
     |a[p-r]=='_'&(x=a[p+r]!=' ')
     |a[p-r+d]=='_'&(y=a[p+r+d]!=' ')
     |x&y
  ,r=a.search(/\n/)+1)

টেস্ট ফায়ারফক্স / Firebug কনসোলে

;['[__]', '  [__]  \n[__][__]', '        [__]        \n      [__][__]      \n        [__]        ',
 '  [__][__]  \n[__][__][__]\n  [__][__]  \n[__]    [__]',
 '            [__]  \n  [__][__][__][__]\n[__][__][__][__]  \n  [__][__][__][__]\n[__][__][__][__]  ',
 '  [__]        [__]  \n[__][__][__][__][__]\n  [__][__][__][__]  \n    [__][__][__]    \n      [__][__]      \n        [__]        ']
.forEach(x => console.log(x+'\n'+F(x)))

;['  [__]  \n        ', '  [__]  \n[__]    ' ,'  [__]  \n    [__]',
 '  [__][__]  \n[__]    [__]\n  [__][__]  \n[__]    [__]',
 '  [__][__][__][__]\n[__][__][__][__]  \n  [__][__][__][__]\n[__][__][__][__]  ',
 '[__][__][__][__][__]\n  [__][__][__][__]  \n    [__][__][__]    \n      [__][__]      \n        [__]        ']
.forEach(x => console.log(x+'\n'+F(x)))

আউটপুট

    [__]
true

  [__]  
[__][__]
true

        [__]        
      [__][__]      
        [__]        
true

  [__][__]  
[__][__][__]
  [__][__]  
[__]    [__]
true

            [__]  
  [__][__][__][__]
[__][__][__][__]  
  [__][__][__][__]
[__][__][__][__]  
true

  [__]        [__]  
[__][__][__][__][__]
  [__][__][__][__]  
    [__][__][__]    
      [__][__]      
        [__]        
true

  [__]  
false

  [__]  
[__]    
false

  [__]  
    [__]
false

  [__][__]  
[__]    [__]
  [__][__]  
[__]    [__]
false

  [__][__][__][__]
[__][__][__][__]  
  [__][__][__][__]
[__][__][__][__]  
false

[__][__][__][__][__]
  [__][__][__][__]  
    [__][__][__]    
      [__][__]      
        [__]        
false

Ungolfed

F=a=>(
  a=a.replace(/__/g,'').replace(/  /g,'.'),
  r=a.search(/\n/)+1,
  [...a].every((e,p)=>
    e < '0' ||
    (e ==']'
    ? // stable right side
     a[p-r]=='[' & a[p+r]!='.' 
     |
     a[p-r-1]==']' & a[p+r-1]!='.' 
     |
     a[p+r]!='.' & a[p+r-1] != '.'
    : // stable left side
     a[p-r]==']' & a[p+r]!='.' 
     |
     a[p-r+1]=='[' & a[p+r+1]!='.' 
     |
     a[p+r]!='.' & a[p+r+1] != '.'
    )  
  )
)

কী [...a]করবেন, যদি আপনি আমার জিজ্ঞেস করতে চাই? আমি জানি ES6 ...argকোনও ফাংশনের সর্বশেষ যুক্তি হিসাবে বৈকল্পিকগুলি ক্যাপচার করতে অনুমতি দেয় তবে আমি কখনই এটি ব্যবহার করে দেখিনি।
COTO

@COTO কোডগল্ফ.স্ট্যাকেক্সেঞ্জাংটা / এ / 777723৩৩/২34৪8৮ , কেস ২ ব্যবহার করুন (এটি খুব সাধারণ, আমি আমার উত্তরগুলির সম্ভবত ৮০% ব্যবহার করি)
edc65

Sunofagun। যেমনটি {:}ম্যাটল্যাবের মতো । এটি খুব দরকারী হতে চলেছে। ধন্যবাদ। :)
COTO

1

পাইথন 279

আমি মনে করি কোড গল্ফ চ্যালেঞ্জের ক্ষেত্রে আমি বেশ খারাপ এবং সম্ভবত আমি এর জন্য ভুল ভাষাগুলি ব্যবহার করি: ডি তবে আমি এমন কোড পছন্দ করি যা সহজেই পড়তে পারে :) বিটিডব্লু আমি একটি পাইথন কোড দেখতে চাই যা কম বাইট ব্যবহার করে!

def t(b):
    r=b.split()
    l=len(r[0])
    r=['.'*l]+r
    for i in range(len(r)-2,0,-1):
        r[i]+='...'
        for j in range(l):
            if(r[i][j]=='['):
                if(r[i+1][j]<>'_'or(r[i+1][j+3]<>'_'and r[i-1][j]<>'_'))and(r[i+1][j+3]<>'_'or r[i-1][j+3]<>'_'):
                    return False
    return True

সম্ভাব্য উদাহরণ:

A = "..[__][__][__][__]\n\
[__][__][__][__]..\n\
..[__][__][__][__]\n\
[__][__][__][__].."
print t(A) #False

B = "..[__]........[__]..\n\
[__][__][__][__][__]\n\
..[__][__][__][__]..\n\
....[__][__][__]....\n\
......[__][__]......\n\
........[__]........"
print t(B) #True

আমি আমার কোডের অভ্যন্তরে বিন্দুগুলি ব্যবহার করি না, আসলে আপনার ইনপুটটি কোনও চর ব্যবহার করতে পারে তবে তা নয় _এবং [
উইকুনিয়া

1
সাধারণত ব্যবহার না করে <>, আপনি ব্যবহার করবেন !=
ইথান বিয়ারলাইন

@ ইথানবিয়ারলিন নিশ্চিত ছিলেন না তবে হ্যাঁ !=হ'ল টিজি পছন্দসই উপায়
উইকুনিয়া

1

জাভাস্ক্রিপ্ট 2 (ES6) - 148 151 বাইট

F=s=>s.split(/\n/).every((b,i,a)=>(r=1,b.replace(/]/g,(m,o)=>(T=z=>(a[i-1+(z&2)]||[])[o-z%2*3]=='_',r&=i>a.length-2?1:T(2)?T(3)|T(0):T(3)&T(1))),r))

নতুন লাইনের দ্বারা পৃথক করা ইটের সারিগুলির একটি স্ট্রিং পরীক্ষা করে (দ্রষ্টব্য: যদি আমরা আলাদা আলাদা সারি "|" এর মতো আলাদা আলাদা আলাদা আলাদা অক্ষর ব্যবহার করতে পারি তবে এটি 1 বাইট সংক্ষিপ্ত করা যেতে পারে)।

ফায়ারফক্স কনসোলে পরীক্ষার সাথে:

F('..[__]......\n[__][__][__]\n..[__][__]..\n[__]....[__]'); // false
F('..[__][__]..\n[__][__][__]\n..[__][__]..\n[__]....[__]'); // true

0

পাইথন, 209

def s(b):
 c=b.split("\n");s="".join(c);l=len(c[0]);t=" "*l+s+"]]"*l;a=lambda x,y,z:t[x+l*y+z]=="]"
 return all([(a(i,1,1)&a(i,1,5))or(a(i,-1,1)&a(i,1,1))or(a(i,-1,5)&a(i,1,5))for i,x in enumerate(t)if x=="["])

পরীক্ষা:

towers=(
"[__]",

"..[__]..\n"
"[__][__]",

"........[__]........\n"
"......[__][__]......\n"
"........[__]........",

"..[__][__]..\n"
"[__][__][__]\n"
"..[__][__]..\n"
"[__]....[__]",

"............[__]..\n"
"..[__][__][__][__]\n"
"[__][__][__][__]..\n"
"..[__][__][__][__]\n"
"[__][__][__][__]..",

"..[__]........[__]..\n"
"[__][__][__][__][__]\n"
"..[__][__][__][__]..\n"
"....[__][__][__]....\n"
"......[__][__]......\n"
"........[__]........",

"..[__]..\n"
"........",

"..[__]..\n"
"[__]....",

"..[__]..\n"
"....[__]",

"..[__][__]..\n"
"[__]....[__]\n"
"..[__][__]..\n"
"[__]....[__]",

"..[__][__][__][__]\n"
"[__][__][__][__]..\n"
"..[__][__][__][__]\n"
"[__][__][__][__]..",

"[__][__][__][__][__]\n"
"..[__][__][__][__]..\n"
"....[__][__][__]....\n"
"......[__][__]......\n"
"........[__]........",
)
[s(x) for x in towers]

আউটপুট:

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