একটি গোলকধাঁধা মধ্যে কাটপয়েন্টস


13

কোনও গোলকধাঁধাটি কোনও সুবিধাজনক বিন্যাসে 0s (দেয়াল) এবং 1s (হাঁটার জায়গা) ম্যাট্রিক্স হিসাবে দেওয়া হয়। প্রতিটি কক্ষকে এর 4 (বা কম) অর্থগোনাল প্রতিবেশীদের সাথে সংযুক্ত বলে মনে করা হয়। একটি সংযুক্ত উপাদান হ'ল হাঁটার যোগ্য কোষগুলির একটি সেট যা একে অপরের সাথে সংক্রামকভাবে সংযুক্ত। আপনার কাজটি কাটপয়েন্টগুলি সনাক্ত করতে হবে - হাঁটার যোগ্য কোষগুলি, যদি দেয়ালে পরিণত হয় তবে সংযুক্ত উপাদানগুলির সংখ্যা পরিবর্তন করে। কেবল সেই জায়গাগুলিতে 1-s দিয়ে একটি বুলিয়ান ম্যাট্রিক্স আউটপুট করুন। লক্ষ্যটি কোডের কয়েকটি বাইটে এটি করা।

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

in:
11101001
11011101
00000001
11101111
11110101
00011111
10110001
11111111
out:
01000000
00001001
00000001
00000101
00110000
00010000
00000000
11100000

in:
1111111111111111
1000000000000001
1111111111111101
0000000000000101
1111111111110101
1000000000010101
1011111111010101
1010000001010101
1010111101010101
1010101111010101
1010100000010101
1010111111110101
1010000000000101
1011111111111101
1000000000000001
1111111111111111
out:
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000

in:
1011010001111010
1111111011101101
1110010101001011
1111001110010010
1111010000101001
0111101001000101
0011100111110010
1001110011111110
0101000011100011
1110110101001110
0010100111000110
1000110111011010
0100101000100101
0001010101100011
1001010000111101
1000111011000010
out:
0000000000111010
1011110001001000
0000000000000011
0000000100010000
0000010000101000
0000001000000100
0000000011000000
1001100000011110
0000000001000010
0110100001000110
0000100101000010
1000100000000000
0100001000000100
0000000100100001
0000010000111000
0000010000000010

সুতরাং, সমস্ত
অনুচ্ছেদে

1
আমি মনে করি যে চ্যালেঞ্জটি ছোট ম্যাট্রিক্সের জন্য ধাপে ধাপে উদাহরণ থেকে উপকৃত হবে।
মিঃ এক্সকোডার 21

1
একটি @HyperNeutrino সেতু ভিন্ন কিছু - এটা একটি ব্যাপার প্রান্ত (একটি প্রান্তবিন্দু) যাদের অপসারণ সংযুক্ত উপাদান সংখ্যা বৃদ্ধি
ngn

1
@HyperNeutrino এছাড়াও, একটি subgraph হিসেবে বেশ একই নয় সংযুক্ত উপাদান
ngn

1
@ নোট্যাট্রি আপনি ঠিক বলেছেন আমি একটি ভুল করেছিলাম. এখনই এটি ঠিক করতে খুব দেরি হয়ে গেছে তবে আমি আশা করি এটি মজাটি খারাপ করবে না।
এনএনজি

উত্তর:


3

স্ট্যাক্স , 40 বাইট

Çóê↓â.Φ}╞│*w<(♦◙¼ñ£º█¢,D`ì♥W4·☺╛gÇÜ♠╗4D┬

পরীক্ষার মামলাগুলি চালান এবং ডিবাগ করুন

এই প্রোগ্রামটি একটি স্পেস বিভাজিত স্ট্রিং সারি যুক্ত হিসাবে ইনপুট নেয়। আউটপুট একই বিন্যাসে। এখানে আনপ্যাকড আস্কির উপস্থাপনা।

{2%{_xi48&GxG=-}_?m}{'1'2|e{"12|21".22RjMJguHgu%

একটি দ্বীপ গণনা করার জন্য মৌলিক ক্রিয়াকলাপটি এইভাবে কাজ করে।

  1. প্রথমটি '1'একটি দ্বারা প্রতিস্থাপন করুন '2'
  2. প্রতিস্থাপন Regex '12|21'সঙ্গে '22'
  3. স্পেসে বিভক্ত করুন।
  4. ট্রান্সপোজ ম্যাট্রিক্স।
  5. 2 থেকে পুনরাবৃত্তি করুন যতক্ষণ না একটি স্ট্রিং পুনরাবৃত্তি হয়।
  6. 1 থেকে পুনরাবৃত্তি করুন যতক্ষণ না '1'স্ট্রিংটিতে আর থাকে না । পুনরাবৃত্তি সংখ্যা দ্বীপ সংখ্যা।

{               start map block over input string, composed of [ 01]
  2%            mod by 2. space and 0 yield 0. 1 yields 1. (a)
  {             start conditional block for the 1s.
    _           original char from string (b)
    xi48&       make copy of input with current character replaced with 0
    G           jump to unbalanced }, then return; counts islands (c)
    xG          counts islands in original input (d)
    =           are (c) and (d) equal? 0 or 1 (e)
    -           b - e; this is 1 iff this character is a bridge
  }             end conditional block
  _?            execute block if (a) is 1, otherwise use original char from string
m               close block and perform map over input
}               goto target - count islands and return
{               start generator block
  '1'2|e        replace the first 1 with a 2
  {             start generator block
    "12|21".22R replace "12" and "21" with "22"
    jMJ         split into rows, transpose, and rejoin with spaces
  gu            generate values until any duplicate is encountered
  H             keep the last value
gu              generate values until any duplicate is encountered
%               count number of iterations it took

বোনাস 44 বাইট প্রোগ্রাম - এই সংস্করণটি গ্রিড ফর্ম্যাট ব্যবহার করে ইনপুট এবং আউটপুট।


এটি কি আপনার কম্পিউটারে এক মিনিটের মধ্যে দ্বিতীয় উদাহরণটি প্রসেস করে?
এনএনজি

@ জিএনএন: এটি ক্রমের এই মিড-রেঞ্জের ল্যাপটপে 41 এর দশকে তিনটি উদাহরণই দেয়। এছাড়াও, আমি সবেমাত্র মূল লিঙ্কটি স্থির করেছি। আমি দুর্ঘটনাক্রমে এটিকে একটি পুরানো অ-কার্যকারী সংস্করণে রেখে দিয়েছি।
পুনরাবৃত্ত

3

এমএটিএল , 26 বাইট

n:"GG0@(,w4&1ZIuz]=~]vGZye

ইনপুটটি একটি সংখ্যার ম্যাট্রিক্স, ;সারি বিভাজক হিসাবে ব্যবহার করে ।

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

n           % Implicit input: matrix. Push number of elements, N
:           % Range: gives [1 2 ... N]
"           % For each k in [1 2 ... N]
  GG        %   Push input matrix twice
  0@(       %   Write 0 at position k (in column-major order: down, then across).
            %   The stack now contains the original matrix and a modified matrix
            %   with 0 at position k
  ,         %   Do twice
    w       %     Swap
    4       %     Push 4. This specifies 4-element neighbourhood
    &1ZI    %     Label each connected component, using the specified
            %     neighbourhood. This replaces each 1 in the matrix by a
            %     positive integer according to the connected component it
            %     belongs to
    u       %     Unique: gives a vector of deduplicate elements
    z       %     Number of nonzeros. This is the number of connected components
  ]         %   End
  =~        %   Are they different? Gives true of false
]           % End
v           % Concatenate stack into a column vector
GZye        % Reshape (in column-major order) according to size of input matrix.
            % Implicit display

2

পার্ল 5 , -p0 105 101 96 93 90 89 89 বাইট

ইনপুট bপরিবর্তে ব্যবহার করে 1

নিশ্চিত করুন যে STDIN- এ ম্যাট্রিক্স একটি নতুন লাইন দিয়ে শেষ হয়েছে

#!/usr/bin/perl -p0
s%b%$_="$`z$'";s:|.:/
/>s#(\pL)(.{@{-}}|)(?!\1)(\pL)#$&|a.$2.a#se&&y/{c/z />0:seg&/\B/%eg

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

প্রতিস্থাপনের 3 স্তরের ব্যবহার!

এই 87 বাইট সংস্করণটি ইনপুট এবং আউটপুট ফর্ম্যাট উভয়ই ব্যাখ্যা করা সহজ, তবে এটি প্রতিযোগিতা করছে না কারণ এটি আউটপুটে 3 টি আলাদা অক্ষর ব্যবহার করে:

#!/usr/bin/perl -0p
s%b%$_="$`z$'";s:|.:/
/>s#(\w)(.{@{-}}|)(?!\1)(\w)#$&|a.$2.a#se&&y/{c/z />0:seg&/\B/%eg

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

sউভয় সংস্করণে সারি টার্মিনেটর (নিউলাইনের পরিবর্তে) হিসাবে আলাদা (নন-আলফানিউমারিক) অক্ষর ব্যবহার করে অন্য বাইট (রেজেক্স মডিফায়ার) সংরক্ষণ করা সহজ , তবে এটি ইনপুটটিকে আবার বেশ অপঠনযোগ্য করে তোলে।

কিভাবে এটা কাজ করে

বিকল্প বিবেচনা করুন

s#(\w)(.{columns}|)(?!1)(\w)#c$2c#s

এটি দুটি অক্ষর খুঁজে পাবে যা একে অপরের পাশে অনুভূমিকভাবে বা উল্লম্বভাবে পৃথক এবং সেগুলি প্রতিস্থাপন করে c। একটি গোলকধাঁধায় যার পথগুলি সম্পূর্ণরূপে চিঠিটি bদিয়ে থাকে কারণ অক্ষরগুলি একই হওয়ায় কিছুই ঘটবে না, তবে যত তাড়াতাড়ি অক্ষরগুলির একটি অন্য একটি দ্বারা প্রতিস্থাপন করা হবে (উদাহরণস্বরূপ z) সেই চিঠিটি এবং প্রতিবেশী প্রতিস্থাপন করবে cএবং পুনরাবৃত্তি প্রয়োগ হ'ল cবীজ থেকে সংযুক্ত উপাদান বন্যা পূরণ z

এক্ষেত্রে আমি সম্পূর্ণ বন্যা পূরণ করতে চাই না। আমি প্রতিবেশী কেবল একটি অস্ত্র পূরণ করতে চাই z, তাই প্রথম পদক্ষেপের পরে আমি zচলে যেতে চাই । এটি ইতিমধ্যে c$2cপ্রতিস্থাপনের সাথে কাজ করে , তবে পরে আমি একই বিন্দু থেকে শুরু করে অন্য বাহু বরাবর একটি বন্যা-পূরণ পুনরায় আরম্ভ করতে চাই এবং জানি না যে এর মধ্যে আর কোনটি আর cছিল z। সুতরাং পরিবর্তে আমি ব্যবহার

s#(\w)(.{columns}|)(?!\1)(\w)#$&|a.$2.a#se

b | aহয় c, b | cহয় cএবং z | aহয় {। সুতরাং একটি ধাঁধাতে তৈরি পাথ bএবং zপ্রথম ধাপে একটি বীজ bপ্রতিস্থাপিত হবে cএবং zএটি প্রতিস্থাপন করবে {যা কোনও চিঠি নয় এবং মিলছে না \wএবং তাই আরও ভরাট কারণ ঘটবে না। cতবে যাচ্ছে আরও বন্যা ভরাট রাখা হবে এবং বীজ এক প্রতিবেশী বাহু ভরা হয়। যেমন থেকে শুরু

  b                      c
  b                      c
bbzbb       becomes    bb{bb
  b                      b
  b                      b

তারপরে আমি সমস্ত সি কে কিছু অ চিঠির (উদাহরণস্বরূপ -) {দ্বারা প্রতিস্থাপন zকরতে পারি এবং বন্যা-পূরণ পুনরায় চালু করতে আবার স্থান করে নিতে পারি:

  -                      -
  -                      -
bbzbb       becomes    cc{bb
  b                      b
  b                      b

এবং এই প্রক্রিয়াটির পুনরাবৃত্তি করুন যতক্ষণ না বীজের সমস্ত প্রতিবেশী রূপান্তরিত হয়। যদি আমি তারপর আরো একবার প্রতিস্থাপন {দ্বারা zএবং বন্যা ভরাট:

  -                      -
  -                      -
--z--       stays      --z--
  -                      -
  -                      -

zশেষে পিছনে দেহাবশেষ কারণ সঙ্গে একটি রূপান্তর করার কোন প্রতিবেশী নেই। এটি নীচের কোড খণ্ডে কী ঘটে তা স্পষ্ট করে তোলে:

/\n/ >                                    

প্রথম নিউলাইন সন্ধান করুন। আরম্ভের অফসেটটি এখন@-

s#(\w)(.{@{-}}|)(?!\1)(\w)#$&|a.$2.a#se

রেজেক্স উপরে @{-}কলামের সংখ্যা হিসাবে আলোচিত হয়েছে (যেহেতু সরল @-পার্ল পার্সারকে বিভ্রান্ত করে এবং সঠিকভাবে প্রতিস্থাপন করে না)

&&

/\n/সবসময় সফল এবং প্রতিকল্পন যতদিন আমরা এখনও বন্যা ভরাট পারেন হিসাবে সত্য। সুতরাং একটি অংশের &&বন্যা পূরণের পরে যদি অংশটি কার্যকর করা হয়। যদি না হয় তবে বাম দিকটি একটি খালি স্ট্রিংয়ের মূল্যায়ন করে

y/{c/z / > 0

বন্যা-পূরণ পুনরায় আরম্ভ করুন এবং পূর্ববর্তী বন্যা-পূরণে কিছু করেছে তবে 1 ফিরে আসুন। অন্যথায় খালি স্ট্রিং ফিরে। এই পুরো কোডের টুকরোটি ভিতরে ppedেকে দেওয়া হয়েছে

s:|.: code :seg

সুতরাং যদি এটি একটি বীজ অবস্থানের $_সাথে একটি প্রারম্ভিক স্ট্রিং এ কার্যকর করা zহয় তবে কোডটির টুকরোটি বেশিরভাগ সময় কার্যকর করা হবে যা বেশিরভাগ সময়ই 1প্রতিবেশী বাহু বন্যায় পূর্ণ হয়। কার্যকরভাবে সংযুক্ত উপাদানগুলি সংযুক্ত উপাদানগুলি হিসাবে $_যতগুলি দ্বারা ধ্বংস হয়ে যায় এবং প্রতিস্থাপিত হয় । লক্ষ্য করুন যে লুপটি উপাদান আকারের সংখ্যার সমষ্টি + অস্ত্রের সংখ্যা সংখ্যা পর্যন্ত চালানো দরকার তবে এটি ঠিক আছে কারণ এটি "নিউলাইন * 2 + 1 সহ" বহু বারের অক্ষর তৈরি করবে।1z

কোনও ধরণের 1(খালি স্ট্রিং, একটি বিচ্ছিন্ন প্রান্তি) না থাকলে বা 1 টিরও বেশি বাহিনী (2 টির বেশি) থাকে তবে গোলকধাঁটি সংযোগ বিচ্ছিন্ন হয়ে যায় 1। এটি রেজেক্স ব্যবহার করে পরীক্ষা করা যায় /\B/( এটি পুরানো পার্ল সংস্করণের 0পরিবর্তে দেয় 1It's এটি কোনটি ভুল তা তর্কযোগ্য able দুর্ভাগ্যক্রমে এটি যদি এটি মেলে না তবে এটির পরিবর্তে একটি খালি স্ট্রিং দেবে 0। তবে s:|.: code :segসবসময় করছেন একটি দ্বারা তা একটি বিজোড় সংখ্যা ফিরতে পরিকল্পনা করা হয়েছিল &সঙ্গে /\B/এই দেব 0বা 1

যা অবশিষ্ট রয়েছে তা পুরো ইনপুট অ্যারে এবং প্রতিটি হাঁটার যোগ্য অবস্থানের বীজে zসংযুক্ত অস্ত্রগুলির সাথে এবং গণনা করছে। এটি সহজেই এর সাথে সম্পন্ন হয়:

s%b%$_="$`z$'"; code %eg

একমাত্র সমস্যাটি হ'ল হাঁটা-চালনযোগ্য অবস্থানগুলিতে পুরানো মান বজায় থাকে। যেহেতু আমাদের 0সেখানে দরকার আছে তার অর্থ আসল ইনপুট অ্যারে অবশ্যই 0অরিয়া চলনযোগ্য অবস্থান এবং মূল প্রতিস্থাপনার 0ম্যাচগুলিতে \wথাকতে হবে এবং বন্যা ভরাটকে ট্রিগার করবে। এজন্য আমি \pLপরিবর্তে ব্যবহার করি (কেবলমাত্র অক্ষরের সাথে মেলে)।


2

জাভা 8, 503 489 459 455 বাইট

int R,C,v[][];m->{int c[][]=new int[R=m.length][C=m[0].length],r[][]=new int[R][C],i=R*C,t,u;for(;i-->0;)c[t=i/C][u=i%C]=m[t][u];for(;++i<R*C;r[t][u]=i(c)!=i(m)?1:0,c[t][u]=m[t][u])c[t=i/C][u=i%C]=0;return r;}int i(int[][]m){int r=0,i=0,t,u;for(v=new int[R][C];i<R*C;)if(m[t=i/C][u=i++%C]>v[t][u]){d(m,t,u);r++;}return r;}void d(int[][]m,int r,int c){v[r][c]=1;for(int k=-3,t,u;k<4;k+=2)if((t=r+k/2)>=0&t<R&(u=c+k%2-k/2)>=0&u<C&&m[t][u]>v[t][u])d(m,t,u);}

-18 বাইটস @ সিলিংক্যাটকে ধন্যবাদ ।

ব্যাখ্যা:

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

int R,C,                    // Amount of rows/columns on class-level
    v[][];                  // Visited-matrix on class-level

m->{                        // Method with int-matrix as both parameter and return-type
  int c[][]=new int[R=m.length][C=m[0].length],
                            //  Create a copy-matrix, and set `R` and `C`
      r[][]=new int[R][C],  //  Create the result-matrix
      i=R*C,                //  Index-integer
      t,u;                  //  Temp integers
  for(;i-->0;)              //  Loop `i` over each cell:
    c[t=i/C][u=i%C]=m[t][u];//   And copy the values of the input to the copy-matrix
  for(;++i<R*C              //  Loop over the cells again:
      ;                     //    After every iteration:
       r[t][u]=i(c)!=i(m)?  //     If the amount of islands in `c` and `m` are different
        1                   //      Set the current cell in the result-matrix to 1
       :                    //     Else:
        0,                  //      Set it to 0
       c[t][u]=m[t][u])     //     And set the copy-value back again
    c[t=i/C][u=i%C]=0;      //   Change the current value in the copy-matrix to 0
  return r;}                //  Return the result-matrix

// Separated method to determine the amount of islands in a matrix
int i(int[][]m){
  int r=0,                  //  Result-count, starting at 0
      i=0,                  //  Index integer
      t,u;                  //  Temp integers
  for(v=new int[R][C];      //  Reset the visited array
      i<R*C;)               //  Loop over the cells
    if(m[t=i/C][t=i++%C]    //   If the current cell is a 1,
       >v[t][u]){           //   and we haven't visited it yet:
      d(m,i,j);             //    Check every direction around this cell
      r++;}                 //    And raise the result-counter by 1
   return r;}               //  Return the result-counter

// Separated method to check each direction around a cell
void d(int[][]m,int r,int c){
  v[r][c]=1;                //  Flag this cell as visited
  for(int k=-3,u,t;k<4;k+=2)//  Loop over the four directions:
    if((t=r+k/2)>=0&t<R&(u=c+k%2-k/2)>=0&u<C
                            //   If the cell in the direction is within bounds,
       &&m[t][u]            //   and it's a path we can walk,
         >v[t][u])          //   and we haven't visited it yet:
      d(m,i,j);}            //    Do a recursive call for this cell

1

পাইথন 2 , 290 বাইট

lambda m:[[b([[C and(I,J)!=(i,j)for J,C in e(R)]for I,R in e(m)])!=b(eval(`m`))for j,c in e(r)]for i,r in e(m)]
def F(m,i,j):
	if len(m)>i>=0<=j<len(m[i])>0<m[i][j]:m[i][j]=0;F(m,i,j+1);F(m,i,j-1);F(m,i+1,j);F(m,i-1,j)
b=lambda m:sum(F(m,i,j)or c for i,r in e(m)for j,c in e(r))
e=enumerate

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

-11 বাইট ধন্যবাদ রড
-11 বাইট লিনকে ধন্যবাদ


1
এটি F(m,i,j)প্রতিটি এলিমেন্টের জন্য ব্যবহার করা আরও কম , 11 বাইট সংরক্ষণ করে
রড

for q in((i,j+1),(i,j-1),(i+1,j),(i-1,j)):-> for q in(i,j+1),(i,j-1),(i+1,j),(i-1,j):- আরএম বহিরাগত পেরস
ngn

যেহেতু Fস্পষ্টতই ফিরে আসে None, আপনি এর F(m,i,j)or cপরিবর্তে ব্যবহার করতে পারেন [F(m,i,j)]and c
লিন

এছাড়াও, and m[i][j]হতে পারে >0<m[i][j]এবং [q[:]for q in m]হতে পারে eval(`m`)
লিন

@ লিন আপনার মানে ইওল ('এম')? যে একই তালিকা উদাহরণটি ফিরে আসবে না?
ngn


1

জাভাস্ক্রিপ্ট 122 বাইট

মাল্টলাইন স্ট্রিং হিসাবে ইনপুট / আউটপুট।

m=>m.replace(/./g,(v,p,m,n=[...m],f=p=>n[p]==1&&(n[p]=0,v=f(p-1)+f(p+1)+f(p-w)+f(p+w)-1?1:0,1))=>(f(p),v),w=~m.search`\n`)

প্রতিটি চলনযোগ্য কক্ষের জন্য, একটি ব্লক রেখে 4 টি প্রতিবেশী কক্ষ পূরণ করার চেষ্টা করুন। যদি বর্তমান ঘরটি কোনও কাটা পয়েন্ট না হয়, তবে যে কোনও উন্মুক্ত প্রতিবেশীর কাছ থেকে শুরু করলে সেগুলি সমস্ত পূরণ করবে। অন্যথায়, প্রতিবেশী সমস্ত কক্ষে পৌঁছাতে আমার একাধিক ফিল ফিল্টার করতে হবে।

কম গল্ফড

m=>{
  w = m.search('\n') + 1; // offset to the next row
  result = [...m].map( // for each cell
     ( v, // current value
       p  // current position
     ) => {
     n = [...m]; // work on a copy of the input
     // recursive fill function from position p
     // returns 1 if managed to fill at least 1 cell
     fill = (p) => {
        if (n[p] == 1)
        {
           n[p] = 0;
           // flag will be > 1 if the fill from the current point found disjointed areas
           // flag will be 0 if no area could be filled (isolated cell)
           var flag = fill(p+1) + fill(p-1) + fill(p+w) + fill(p-w);
           // v is modified repeatedly, during recursion
           // but I need the value at top level, when fill returns to original caller
           v = flag != 1 ? 1 : 0;
           return 1; // at least 1 cell filled
        }
        else
           return 0; // no fill
     }
     fill(p)
     return v // orginal value or modified by fill function
  }) 
}

পরীক্ষা

var F=
m=>m.replace(/./g,(v,p,m,n=[...m],f=p=>n[p]==1&&(n[p]=0,v=f(p-1)+f(p+1)+f(p-w)+f(p+w)-1?1:0,1))=>(f(p),v),w=~m.search`\n`)

var test=`in:
11101001
11011101
00000001
11101111
11110101
00011111
10110001
11111111
out:
01000000
00001001
00000001
00000101
00110000
00010000
00000000
11100000

in:
1111111111111111
1000000000000001
1111111111111101
0000000000000101
1111111111110101
1000000000010101
1011111111010101
1010000001010101
1010111101010101
1010101111010101
1010100000010101
1010111111110101
1010000000000101
1011111111111101
1000000000000001
1111111111111111
out:
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000

in:
1011010001111010
1111111011101101
1110010101001011
1111001110010010
1111010000101001
0111101001000101
0011100111110010
1001110011111110
0101000011100011
1110110101001110
0010100111000110
1000110111011010
0100101000100101
0001010101100011
1001010000111101
1000111011000010
out:
0000000000111010
1011110001001000
0000000000000011
0000000100010000
0000010000101000
0000001000000100
0000000011000000
1001100000011110
0000000001000010
0110100001000110
0000100101000010
1000100000000000
0100001000000100
0000000100100001
0000010000111000
0000010000000010
`.match(/\d[10\n]+\d/g);
for(i = 0; test[2*i]; ++i)
{
   input = test[2*i]
   check = test[2*i+1]
   result = F(input)
   ok = check == result
   console.log('Test '+ i + ' ' + (ok?'OK':'FAIL'),
   '\n'+input, '\n'+result)
}

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