Re: [algogeeks] Re: MS Q

2012-07-11 Thread ANKIT BHARDWAJ
anybody have informaton regarding questions asked in written and
interview of capillary technology for developer post
 please share at bhardwaj.ankit...@gmail.com
thanks in advance.

On 5/22/12, Navin.nitjsr  wrote:
> If  the matrix is 4-connected, we can use the same matrix.
> now we have to find the total number of connected components of a graph.
> consider
>  1 1 1 0  0  1 1  0 1
>  0 1  1 1 0  0  1 0 0
>  1 1  0 1 0 1  1 1 0
>  0  0 0 0 0  0  0 0 1
> we can use bfs/dfs to mark the nodes as visited and thus total connected
> components  can be counted.
>
>
> On Tuesday, 10 January 2012 07:09:46 UTC+5:30, ashgoel wrote:
>>
>> there is a matrix of 1 and 0
>> 1 is a island and   0 is water
>> 1-1 together makes one island
>> calculate total no of islands
>>
>> Best Regards
>> Ashish Goel
>> "Think positive and find fuel in failure"
>>
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/algogeeks/-/JiDXnyVHn4YJ.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.



Re: [algogeeks] Re: MS Q

2012-01-24 Thread atul anand
@praveen : little more clarity required in your algoare you calling it
recursively or moving row by row.

On Tue, Jan 24, 2012 at 5:59 PM, praveen raj  wrote:

> Idea:
> 1)Take count =0;
> 2) make Outer loop ...and search for 1's .
> 3) Start ...searching for 1 consecutively...
> and make it ..0 untill all consecutive 1's becomes 0..
> and then count++
> 4) go to 1) untill all 1's finished..
>
>   count will give the total number of islands...
>
>
> PRAVEEN RAJ
> DELHI COLLEGE OF ENGINEERING
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.



Re: [algogeeks] Re: MS Q

2012-01-24 Thread praveen raj
name it.

PRAVEEN RAJ
DELHI COLLEGE OF ENGINEERING



On Wed, Jan 25, 2012 at 12:45 AM, atul anand wrote:

> @Praveen : i have doubt in your algo...it seem it may fail for some
> cases...
>
> On Tue, Jan 24, 2012 at 5:59 PM, praveen raj wrote:
>
>> Idea:
>> 1)Take count =0;
>> 2) make Outer loop ...and search for 1's .
>> 3) Start ...searching for 1 consecutively...
>> and make it ..0 untill all consecutive 1's becomes 0..
>> and then count++
>> 4) go to 1) untill all 1's finished..
>>
>>   count will give the total number of islands...
>>
>>
>> PRAVEEN RAJ
>> DELHI COLLEGE OF ENGINEERING
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to algogeeks@googlegroups.com.
>> To unsubscribe from this group, send email to
>> algogeeks+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.



Re: [algogeeks] Re: MS Q

2012-01-24 Thread atul anand
@Praveen : i have doubt in your algo...it seem it may fail for some cases...

On Tue, Jan 24, 2012 at 5:59 PM, praveen raj  wrote:

> Idea:
> 1)Take count =0;
> 2) make Outer loop ...and search for 1's .
> 3) Start ...searching for 1 consecutively...
> and make it ..0 untill all consecutive 1's becomes 0..
> and then count++
> 4) go to 1) untill all 1's finished..
>
>   count will give the total number of islands...
>
>
> PRAVEEN RAJ
> DELHI COLLEGE OF ENGINEERING
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.



Re: [algogeeks] Re: MS Q

2012-01-24 Thread praveen raj
Idea:
1)Take count =0;
2) make Outer loop ...and search for 1's .
3) Start ...searching for 1 consecutively...
and make it ..0 untill all consecutive 1's becomes 0..
and then count++
4) go to 1) untill all 1's finished..

  count will give the total number of islands...


PRAVEEN RAJ
DELHI COLLEGE OF ENGINEERING

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.



Re: [algogeeks] Re: MS Q

2012-01-15 Thread atul anand
@Umer : will fail for this case :-

0 0 0 0
0 1 0 1
1 1 1 1

island = 1;

it seem your code will print island =1 ;

On Sun, Jan 15, 2012 at 3:45 PM, Umer Farooq  wrote:

> Here is my solution. Please have a look at it. Any kind of positive
> criticism will be highly appreciated.
>
> bool isConnected(int **space, int x, int y)
> {
> if (x == 0 && y == 0)
>  {
> return false;
> }
>  if (y > 0)
> {
> if (space[x][y-1] == 1)
>  return true;
> }
> if (x > 0)
>  {
> if (space[x-1][y] == 1)
> return true;
>  }
> if (x > 0 && y > 0)
> {
>  if (space[x-1][y-1] == 1)
> return true;
> }
>  if ((x-1 >= 0)&&(y+1 < sizeof(space)/sizeof(space[0][0])))
> {
>  if (space[x-1][y+1] == 1)
> return true;
> }
>  return false;
> }
>
> int _tmain(int argc, _TCHAR* argv[])
> {
> int len = 4;
>  int breadth = 4;
> int **space;
> space = new int*[len];
>  for (int i = 0; i < len; i++)
> space[i] = new int[breadth];
>
>  space[0][0] = 1;
> space[0][1] = 1;
> space[0][2] = 0;
>  space[0][3] = 0;
>
> space[1][0] = 1;
> space[1][1] = 1;
>  space[1][2] = 0;
> space[1][3] = 0;
>
> space[2][0] = 0;
>  space[2][1] = 0;
> space[2][2] = 0;
> space[2][3] = 0;
>
> space[3][0] = 0;
> space[3][1] = 0;
> space[3][2] = 1;
>  space[3][3] = 1;
>  int islands = 0;
>  for (int i = 0; i < len; i++)
> {
> for (int j = 0; j < breadth; j++)
>  if (isConnected(space, i, j) == false && space[i][j] == 1)
> islands++;
>  }
>
> cout << islands< int r = 0;
>  cin >> r;
>
> return 0;
> }
>
> The function isConnected tells if an element at x,y on matrix (space) is
> connected to an existing island or is it completely a new island.
> The 2D array used in main function is only a test case. You can replace it
> with anything you want. The nested loop in the main method iterates over
> the whole array and gets the total number of islands that are present.
>
> Anyway, nice question. I liked solving it :)
>
> One more thing. Was it asked in phone interview or on-site interview?
>
> On Wed, Jan 11, 2012 at 6:08 PM, Gene  wrote:
>
>> The OP is not clear on how to handle diagonals. If adjacent 1's on the
>> diagonal are considered connected, then just add 4 more calls to
>> erase().
>>
>> The standard terms are 4-connected and 8-connected.  Both come up when
>> working with grid graphs or pixel matrices.
>>
>>
>> On Jan 10, 9:40 pm, surender sanke  wrote:
>> > @gene
>> > in that case ur erase() should even consider diagonal elements as well,
>> > else there would be 2 islands in example
>> >
>> > surender
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > On Wed, Jan 11, 2012 at 7:19 AM, Gene  wrote:
>> > > Guys,
>> >
>> > > You are making this way too hard.  It's really a graph problem. The
>> > > nodes are the 1's and adjacent 1's are connected by undirected edges.
>> > > You must count components in the graph. So the algorithm is easy:
>> > > Find a component, erase it, repeat.  Count components as you go.
>> > > What's an efficient way to do this with this special kind of graph we
>> > > have?  Just erase components by erasing 1's.
>> >
>> > > So we get:
>> >
>> > > #include 
>> >
>> > > int a[100][100] = {
>> > >  {1, 1, 0, 0},
>> > >  {1, 1, 0, 0},
>> > >  {0, 0, 1, 1},
>> > > };
>> >
>> > > int m = 3, n = 4;
>> >
>> > > // Erase the undirected component rooted at i,j.
>> > > void erase(int i, int j)
>> > > {
>> > >  // If we're off the graph or already erased,
>> > >  // there's nothing to do.
>> > >  if (i < 0 || j < 0 || i >= m || j >= n || !a[i][j])
>> > >return;
>> > >  // Erase!
>> > >  a[i][j] = 0;
>> > >  // Recursively erase the 4 neighbors.
>> > >  erase(i+1, j); erase(i-1, j);
>> > >  erase(i, j+1); erase(i, j-1);
>> > > }
>> >
>> > > void count_islands()
>> > > {
>> > >  int i, j, n_islands = 0;
>> > >  // Search for a component.
>> > >  for (i = 0; i < m; i++) {
>> > >for (j = 0; j < n; j++) {
>> > >  if (a[i][j] == 1) {
>> > >// Found one!  Count and erase.
>> > >n_islands++;
>> > >erase(i, j);
>> > >  }
>> > >}
>> > >  }
>> > >  printf("found %d islands\n", n_islands);
>> > > }
>> >
>> > > int main(void)
>> > > {
>> > >  count_islands();
>> > >  return 0;
>> > > }
>> >
>> > > On Jan 9, 9:06 pm, Ashish Goel  wrote:
>> > > > row, col, diag all
>> >
>> > > > 1-1-1 is a single island :)
>> >
>> > > > 1 1 0 0
>> > > > 1 1 0 0
>> > > > 0 0 1 1
>> >
>> > > > this has only 2 islands
>> >
>> > > > Best Regards
>> > > > Ashish Goel
>> > > > "Think positive and find fuel in failure"
>> > > > +919985813081
>> > > > +919966006652
>> >
>> > > > On Tue, Jan 10, 2012 at 7:29 AM, Ankur Garg 
>> > > wrote:
>> > > > > Can you give an example
>> >
>> > > > > Say  matrix is
>> >
>> > > > > 1 1 0 0
>> > > > > 1 1 0 0
>> > > > > 0 0 1 1
>> >
>> > > > > Has it got 3 islands i.e 1-1 be in same row or they can be column
>> wise
>> > > > > also i.e. 5
>> >
>> > > > > On Tue, Jan 10, 2012 at 7:09 AM, Ashish Goel 
>> > > wrote:
>> >
>> > > > >> there is a matrix of 1 and 0
>> > > > >> 1 is a island and 0 is water
>> > > > >> 1-1 together makes one 

Re: [algogeeks] Re: MS Q

2012-01-15 Thread Umer Farooq
Here is my solution. Please have a look at it. Any kind of positive
criticism will be highly appreciated.

bool isConnected(int **space, int x, int y)
{
if (x == 0 && y == 0)
{
return false;
}
if (y > 0)
{
if (space[x][y-1] == 1)
return true;
}
if (x > 0)
{
if (space[x-1][y] == 1)
return true;
}
if (x > 0 && y > 0)
{
if (space[x-1][y-1] == 1)
return true;
}
if ((x-1 >= 0)&&(y+1 < sizeof(space)/sizeof(space[0][0])))
{
if (space[x-1][y+1] == 1)
return true;
}
return false;
}

int _tmain(int argc, _TCHAR* argv[])
{
int len = 4;
int breadth = 4;
int **space;
space = new int*[len];
for (int i = 0; i < len; i++)
space[i] = new int[breadth];

space[0][0] = 1;
space[0][1] = 1;
space[0][2] = 0;
space[0][3] = 0;

space[1][0] = 1;
space[1][1] = 1;
space[1][2] = 0;
space[1][3] = 0;

space[2][0] = 0;
space[2][1] = 0;
space[2][2] = 0;
space[2][3] = 0;

space[3][0] = 0;
space[3][1] = 0;
space[3][2] = 1;
space[3][3] = 1;
 int islands = 0;
for (int i = 0; i < len; i++)
{
for (int j = 0; j < breadth; j++)
if (isConnected(space, i, j) == false && space[i][j] == 1)
islands++;
}

cout << islands<> r;

return 0;
}

The function isConnected tells if an element at x,y on matrix (space) is
connected to an existing island or is it completely a new island.
The 2D array used in main function is only a test case. You can replace it
with anything you want. The nested loop in the main method iterates over
the whole array and gets the total number of islands that are present.

Anyway, nice question. I liked solving it :)

One more thing. Was it asked in phone interview or on-site interview?

On Wed, Jan 11, 2012 at 6:08 PM, Gene  wrote:

> The OP is not clear on how to handle diagonals. If adjacent 1's on the
> diagonal are considered connected, then just add 4 more calls to
> erase().
>
> The standard terms are 4-connected and 8-connected.  Both come up when
> working with grid graphs or pixel matrices.
>
>
> On Jan 10, 9:40 pm, surender sanke  wrote:
> > @gene
> > in that case ur erase() should even consider diagonal elements as well,
> > else there would be 2 islands in example
> >
> > surender
> >
> >
> >
> >
> >
> >
> >
> > On Wed, Jan 11, 2012 at 7:19 AM, Gene  wrote:
> > > Guys,
> >
> > > You are making this way too hard.  It's really a graph problem. The
> > > nodes are the 1's and adjacent 1's are connected by undirected edges.
> > > You must count components in the graph. So the algorithm is easy:
> > > Find a component, erase it, repeat.  Count components as you go.
> > > What's an efficient way to do this with this special kind of graph we
> > > have?  Just erase components by erasing 1's.
> >
> > > So we get:
> >
> > > #include 
> >
> > > int a[100][100] = {
> > >  {1, 1, 0, 0},
> > >  {1, 1, 0, 0},
> > >  {0, 0, 1, 1},
> > > };
> >
> > > int m = 3, n = 4;
> >
> > > // Erase the undirected component rooted at i,j.
> > > void erase(int i, int j)
> > > {
> > >  // If we're off the graph or already erased,
> > >  // there's nothing to do.
> > >  if (i < 0 || j < 0 || i >= m || j >= n || !a[i][j])
> > >return;
> > >  // Erase!
> > >  a[i][j] = 0;
> > >  // Recursively erase the 4 neighbors.
> > >  erase(i+1, j); erase(i-1, j);
> > >  erase(i, j+1); erase(i, j-1);
> > > }
> >
> > > void count_islands()
> > > {
> > >  int i, j, n_islands = 0;
> > >  // Search for a component.
> > >  for (i = 0; i < m; i++) {
> > >for (j = 0; j < n; j++) {
> > >  if (a[i][j] == 1) {
> > >// Found one!  Count and erase.
> > >n_islands++;
> > >erase(i, j);
> > >  }
> > >}
> > >  }
> > >  printf("found %d islands\n", n_islands);
> > > }
> >
> > > int main(void)
> > > {
> > >  count_islands();
> > >  return 0;
> > > }
> >
> > > On Jan 9, 9:06 pm, Ashish Goel  wrote:
> > > > row, col, diag all
> >
> > > > 1-1-1 is a single island :)
> >
> > > > 1 1 0 0
> > > > 1 1 0 0
> > > > 0 0 1 1
> >
> > > > this has only 2 islands
> >
> > > > Best Regards
> > > > Ashish Goel
> > > > "Think positive and find fuel in failure"
> > > > +919985813081
> > > > +919966006652
> >
> > > > On Tue, Jan 10, 2012 at 7:29 AM, Ankur Garg 
> > > wrote:
> > > > > Can you give an example
> >
> > > > > Say  matrix is
> >
> > > > > 1 1 0 0
> > > > > 1 1 0 0
> > > > > 0 0 1 1
> >
> > > > > Has it got 3 islands i.e 1-1 be in same row or they can be column
> wise
> > > > > also i.e. 5
> >
> > > > > On Tue, Jan 10, 2012 at 7:09 AM, Ashish Goel 
> > > wrote:
> >
> > > > >> there is a matrix of 1 and 0
> > > > >> 1 is a island and 0 is water
> > > > >> 1-1 together makes one island
> > > > >> calculate total no of islands
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "Algorithm Geeks" group.
> > > To post to this group, send email to algogeeks@googlegroups.com.
> > > To unsubscribe from this group, send email to
> > > algogeeks+unsubscr...@googlegroups.com.
> > > For more options, visit this group at
> > >http://groups.google.com/group/algogeeks?hl=en.
>
> --
> You received this message because

Re: [algogeeks] Re: MS Q

2012-01-11 Thread Ashish Goel
this is the solution that i was referring to in the link i provided.

On the same lines there is another problem of rat in a maze .

Best Regards
Ashish Goel
"Think positive and find fuel in failure"
+919985813081
+919966006652


On Wed, Jan 11, 2012 at 7:19 AM, Gene  wrote:

> Guys,
>
> You are making this way too hard.  It's really a graph problem. The
> nodes are the 1's and adjacent 1's are connected by undirected edges.
> You must count components in the graph. So the algorithm is easy:
> Find a component, erase it, repeat.  Count components as you go.
> What's an efficient way to do this with this special kind of graph we
> have?  Just erase components by erasing 1's.
>
> So we get:
>
> #include 
>
> int a[100][100] = {
>  {1, 1, 0, 0},
>  {1, 1, 0, 0},
>  {0, 0, 1, 1},
> };
>
> int m = 3, n = 4;
>
> // Erase the undirected component rooted at i,j.
> void erase(int i, int j)
> {
>  // If we're off the graph or already erased,
>  // there's nothing to do.
>  if (i < 0 || j < 0 || i >= m || j >= n || !a[i][j])
>return;
>  // Erase!
>  a[i][j] = 0;
>  // Recursively erase the 4 neighbors.
>  erase(i+1, j); erase(i-1, j);
>  erase(i, j+1); erase(i, j-1);
> }
>
> void count_islands()
> {
>  int i, j, n_islands = 0;
>  // Search for a component.
>  for (i = 0; i < m; i++) {
>for (j = 0; j < n; j++) {
>  if (a[i][j] == 1) {
>// Found one!  Count and erase.
>n_islands++;
>erase(i, j);
>  }
>}
>  }
>  printf("found %d islands\n", n_islands);
> }
>
> int main(void)
> {
>  count_islands();
>  return 0;
> }
>
> On Jan 9, 9:06 pm, Ashish Goel  wrote:
> > row, col, diag all
> >
> > 1-1-1 is a single island :)
> >
> > 1 1 0 0
> > 1 1 0 0
> > 0 0 1 1
> >
> > this has only 2 islands
> >
> > Best Regards
> > Ashish Goel
> > "Think positive and find fuel in failure"
> > +919985813081
> > +919966006652
> >
> >
> >
> > On Tue, Jan 10, 2012 at 7:29 AM, Ankur Garg 
> wrote:
> > > Can you give an example
> >
> > > Say  matrix is
> >
> > > 1 1 0 0
> > > 1 1 0 0
> > > 0 0 1 1
> >
> > > Has it got 3 islands i.e 1-1 be in same row or they can be column wise
> > > also i.e. 5
> >
> > > On Tue, Jan 10, 2012 at 7:09 AM, Ashish Goel 
> wrote:
> >
> > >> there is a matrix of 1 and 0
> > >> 1 is a island and 0 is water
> > >> 1-1 together makes one island
> > >> calculate total no of islands
> >
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.



Re: [algogeeks] Re: MS Q

2012-01-10 Thread atul anand
@Umer :  it has 1 island ashish made editing mistake before.

On Wed, Jan 11, 2012 at 11:58 AM, Umer Farooq  wrote:

> I still don't get how are they two islands. As long as I have understood,
> diagonals abridge the two islands into one. In this case, these two islands
> are connected so they form one single island?
>
> 1 1 0 0
> 1 1 0 0
> 0 0 1 1
>
> This can be either one single island. Or they are three island if a change
> in direction makes a whole new island.
>
> Can anyone please clear me the problem?
>
>
> On Wed, Jan 11, 2012 at 10:24 AM, prakash y wrote:
>
>> I think atul/Ramakanth's approach will work fine, if we include one more
>> condition
>>
>> for each arr[i][j]
>> if(arr[i][j]==1)
>> {
>> if (arr[i-1][j]==0 && arr[i][j-1]==0 && arr[i-1][j-1]==0)
>> count++;
>>
>> else if (arr[i-1][j]==1 && arr[i][j-1]==1 && arr[i-1][j-1]==0)
>> count--;
>> }
>>
>> On Wed, Jan 11, 2012 at 8:10 AM, surender sanke wrote:
>>
>>> @gene
>>> in that case ur erase() should even consider diagonal elements as well,
>>> else there would be 2 islands in example
>>>
>>> surender
>>>
>>>
>>> On Wed, Jan 11, 2012 at 7:19 AM, Gene  wrote:
>>>
 Guys,

 You are making this way too hard.  It's really a graph problem. The
 nodes are the 1's and adjacent 1's are connected by undirected edges.
 You must count components in the graph. So the algorithm is easy:
 Find a component, erase it, repeat.  Count components as you go.
 What's an efficient way to do this with this special kind of graph we
 have?  Just erase components by erasing 1's.

 So we get:

 #include 

 int a[100][100] = {
  {1, 1, 0, 0},
  {1, 1, 0, 0},
  {0, 0, 1, 1},
 };

 int m = 3, n = 4;

 // Erase the undirected component rooted at i,j.
 void erase(int i, int j)
 {
  // If we're off the graph or already erased,
  // there's nothing to do.
  if (i < 0 || j < 0 || i >= m || j >= n || !a[i][j])
return;
  // Erase!
  a[i][j] = 0;
  // Recursively erase the 4 neighbors.
  erase(i+1, j); erase(i-1, j);
  erase(i, j+1); erase(i, j-1);
 }

 void count_islands()
 {
  int i, j, n_islands = 0;
  // Search for a component.
  for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
  if (a[i][j] == 1) {
// Found one!  Count and erase.
n_islands++;
erase(i, j);
  }
}
  }
  printf("found %d islands\n", n_islands);
 }

 int main(void)
 {
  count_islands();
  return 0;
 }

 On Jan 9, 9:06 pm, Ashish Goel  wrote:
 > row, col, diag all
 >
 > 1-1-1 is a single island :)
 >
 > 1 1 0 0
 > 1 1 0 0
 > 0 0 1 1
 >
 > this has only 2 islands
 >
 > Best Regards
 > Ashish Goel
 > "Think positive and find fuel in failure"
 > +919985813081
 > +919966006652
 >
 >
 >
 > On Tue, Jan 10, 2012 at 7:29 AM, Ankur Garg 
 wrote:
 > > Can you give an example
 >
 > > Say  matrix is
 >
 > > 1 1 0 0
 > > 1 1 0 0
 > > 0 0 1 1
 >
 > > Has it got 3 islands i.e 1-1 be in same row or they can be column
 wise
 > > also i.e. 5
 >
 > > On Tue, Jan 10, 2012 at 7:09 AM, Ashish Goel 
 wrote:
 >
 > >> there is a matrix of 1 and 0
 > >> 1 is a island and 0 is water
 > >> 1-1 together makes one island
 > >> calculate total no of islands
 >

 --
 You received this message because you are subscribed to the Google
 Groups "Algorithm Geeks" group.
 To post to this group, send email to algogeeks@googlegroups.com.
 To unsubscribe from this group, send email to
 algogeeks+unsubscr...@googlegroups.com.
 For more options, visit this group at
 http://groups.google.com/group/algogeeks?hl=en.


>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "Algorithm Geeks" group.
>>> To post to this group, send email to algogeeks@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> algogeeks+unsubscr...@googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/algogeeks?hl=en.
>>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to algogeeks@googlegroups.com.
>> To unsubscribe from this group, send email to
>> algogeeks+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>
>
>
> --
> Umer
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://gro

Re: [algogeeks] Re: MS Q

2012-01-10 Thread Umer Farooq
I still don't get how are they two islands. As long as I have understood,
diagonals abridge the two islands into one. In this case, these two islands
are connected so they form one single island?

1 1 0 0
1 1 0 0
0 0 1 1

This can be either one single island. Or they are three island if a change
in direction makes a whole new island.

Can anyone please clear me the problem?

On Wed, Jan 11, 2012 at 10:24 AM, prakash y  wrote:

> I think atul/Ramakanth's approach will work fine, if we include one more
> condition
>
> for each arr[i][j]
> if(arr[i][j]==1)
> {
> if (arr[i-1][j]==0 && arr[i][j-1]==0 && arr[i-1][j-1]==0)
> count++;
>
> else if (arr[i-1][j]==1 && arr[i][j-1]==1 && arr[i-1][j-1]==0)
> count--;
> }
>
> On Wed, Jan 11, 2012 at 8:10 AM, surender sanke wrote:
>
>> @gene
>> in that case ur erase() should even consider diagonal elements as well,
>> else there would be 2 islands in example
>>
>> surender
>>
>>
>> On Wed, Jan 11, 2012 at 7:19 AM, Gene  wrote:
>>
>>> Guys,
>>>
>>> You are making this way too hard.  It's really a graph problem. The
>>> nodes are the 1's and adjacent 1's are connected by undirected edges.
>>> You must count components in the graph. So the algorithm is easy:
>>> Find a component, erase it, repeat.  Count components as you go.
>>> What's an efficient way to do this with this special kind of graph we
>>> have?  Just erase components by erasing 1's.
>>>
>>> So we get:
>>>
>>> #include 
>>>
>>> int a[100][100] = {
>>>  {1, 1, 0, 0},
>>>  {1, 1, 0, 0},
>>>  {0, 0, 1, 1},
>>> };
>>>
>>> int m = 3, n = 4;
>>>
>>> // Erase the undirected component rooted at i,j.
>>> void erase(int i, int j)
>>> {
>>>  // If we're off the graph or already erased,
>>>  // there's nothing to do.
>>>  if (i < 0 || j < 0 || i >= m || j >= n || !a[i][j])
>>>return;
>>>  // Erase!
>>>  a[i][j] = 0;
>>>  // Recursively erase the 4 neighbors.
>>>  erase(i+1, j); erase(i-1, j);
>>>  erase(i, j+1); erase(i, j-1);
>>> }
>>>
>>> void count_islands()
>>> {
>>>  int i, j, n_islands = 0;
>>>  // Search for a component.
>>>  for (i = 0; i < m; i++) {
>>>for (j = 0; j < n; j++) {
>>>  if (a[i][j] == 1) {
>>>// Found one!  Count and erase.
>>>n_islands++;
>>>erase(i, j);
>>>  }
>>>}
>>>  }
>>>  printf("found %d islands\n", n_islands);
>>> }
>>>
>>> int main(void)
>>> {
>>>  count_islands();
>>>  return 0;
>>> }
>>>
>>> On Jan 9, 9:06 pm, Ashish Goel  wrote:
>>> > row, col, diag all
>>> >
>>> > 1-1-1 is a single island :)
>>> >
>>> > 1 1 0 0
>>> > 1 1 0 0
>>> > 0 0 1 1
>>> >
>>> > this has only 2 islands
>>> >
>>> > Best Regards
>>> > Ashish Goel
>>> > "Think positive and find fuel in failure"
>>> > +919985813081
>>> > +919966006652
>>> >
>>> >
>>> >
>>> > On Tue, Jan 10, 2012 at 7:29 AM, Ankur Garg 
>>> wrote:
>>> > > Can you give an example
>>> >
>>> > > Say  matrix is
>>> >
>>> > > 1 1 0 0
>>> > > 1 1 0 0
>>> > > 0 0 1 1
>>> >
>>> > > Has it got 3 islands i.e 1-1 be in same row or they can be column
>>> wise
>>> > > also i.e. 5
>>> >
>>> > > On Tue, Jan 10, 2012 at 7:09 AM, Ashish Goel 
>>> wrote:
>>> >
>>> > >> there is a matrix of 1 and 0
>>> > >> 1 is a island and 0 is water
>>> > >> 1-1 together makes one island
>>> > >> calculate total no of islands
>>> >
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Algorithm Geeks" group.
>>> To post to this group, send email to algogeeks@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> algogeeks+unsubscr...@googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/algogeeks?hl=en.
>>>
>>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to algogeeks@googlegroups.com.
>> To unsubscribe from this group, send email to
>> algogeeks+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>



-- 
Umer

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.



Re: [algogeeks] Re: MS Q

2012-01-10 Thread prakash y
I think atul/Ramakanth's approach will work fine, if we include one more
condition

for each arr[i][j]
if(arr[i][j]==1)
{
if (arr[i-1][j]==0 && arr[i][j-1]==0 && arr[i-1][j-1]==0)
count++;

else if (arr[i-1][j]==1 && arr[i][j-1]==1 && arr[i-1][j-1]==0)
count--;
}

On Wed, Jan 11, 2012 at 8:10 AM, surender sanke  wrote:

> @gene
> in that case ur erase() should even consider diagonal elements as well,
> else there would be 2 islands in example
>
> surender
>
>
> On Wed, Jan 11, 2012 at 7:19 AM, Gene  wrote:
>
>> Guys,
>>
>> You are making this way too hard.  It's really a graph problem. The
>> nodes are the 1's and adjacent 1's are connected by undirected edges.
>> You must count components in the graph. So the algorithm is easy:
>> Find a component, erase it, repeat.  Count components as you go.
>> What's an efficient way to do this with this special kind of graph we
>> have?  Just erase components by erasing 1's.
>>
>> So we get:
>>
>> #include 
>>
>> int a[100][100] = {
>>  {1, 1, 0, 0},
>>  {1, 1, 0, 0},
>>  {0, 0, 1, 1},
>> };
>>
>> int m = 3, n = 4;
>>
>> // Erase the undirected component rooted at i,j.
>> void erase(int i, int j)
>> {
>>  // If we're off the graph or already erased,
>>  // there's nothing to do.
>>  if (i < 0 || j < 0 || i >= m || j >= n || !a[i][j])
>>return;
>>  // Erase!
>>  a[i][j] = 0;
>>  // Recursively erase the 4 neighbors.
>>  erase(i+1, j); erase(i-1, j);
>>  erase(i, j+1); erase(i, j-1);
>> }
>>
>> void count_islands()
>> {
>>  int i, j, n_islands = 0;
>>  // Search for a component.
>>  for (i = 0; i < m; i++) {
>>for (j = 0; j < n; j++) {
>>  if (a[i][j] == 1) {
>>// Found one!  Count and erase.
>>n_islands++;
>>erase(i, j);
>>  }
>>}
>>  }
>>  printf("found %d islands\n", n_islands);
>> }
>>
>> int main(void)
>> {
>>  count_islands();
>>  return 0;
>> }
>>
>> On Jan 9, 9:06 pm, Ashish Goel  wrote:
>> > row, col, diag all
>> >
>> > 1-1-1 is a single island :)
>> >
>> > 1 1 0 0
>> > 1 1 0 0
>> > 0 0 1 1
>> >
>> > this has only 2 islands
>> >
>> > Best Regards
>> > Ashish Goel
>> > "Think positive and find fuel in failure"
>> > +919985813081
>> > +919966006652
>> >
>> >
>> >
>> > On Tue, Jan 10, 2012 at 7:29 AM, Ankur Garg 
>> wrote:
>> > > Can you give an example
>> >
>> > > Say  matrix is
>> >
>> > > 1 1 0 0
>> > > 1 1 0 0
>> > > 0 0 1 1
>> >
>> > > Has it got 3 islands i.e 1-1 be in same row or they can be column wise
>> > > also i.e. 5
>> >
>> > > On Tue, Jan 10, 2012 at 7:09 AM, Ashish Goel 
>> wrote:
>> >
>> > >> there is a matrix of 1 and 0
>> > >> 1 is a island and 0 is water
>> > >> 1-1 together makes one island
>> > >> calculate total no of islands
>> >
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to algogeeks@googlegroups.com.
>> To unsubscribe from this group, send email to
>> algogeeks+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.



Re: [algogeeks] Re: MS Q

2012-01-10 Thread surender sanke
@gene
in that case ur erase() should even consider diagonal elements as well,
else there would be 2 islands in example

surender

On Wed, Jan 11, 2012 at 7:19 AM, Gene  wrote:

> Guys,
>
> You are making this way too hard.  It's really a graph problem. The
> nodes are the 1's and adjacent 1's are connected by undirected edges.
> You must count components in the graph. So the algorithm is easy:
> Find a component, erase it, repeat.  Count components as you go.
> What's an efficient way to do this with this special kind of graph we
> have?  Just erase components by erasing 1's.
>
> So we get:
>
> #include 
>
> int a[100][100] = {
>  {1, 1, 0, 0},
>  {1, 1, 0, 0},
>  {0, 0, 1, 1},
> };
>
> int m = 3, n = 4;
>
> // Erase the undirected component rooted at i,j.
> void erase(int i, int j)
> {
>  // If we're off the graph or already erased,
>  // there's nothing to do.
>  if (i < 0 || j < 0 || i >= m || j >= n || !a[i][j])
>return;
>  // Erase!
>  a[i][j] = 0;
>  // Recursively erase the 4 neighbors.
>  erase(i+1, j); erase(i-1, j);
>  erase(i, j+1); erase(i, j-1);
> }
>
> void count_islands()
> {
>  int i, j, n_islands = 0;
>  // Search for a component.
>  for (i = 0; i < m; i++) {
>for (j = 0; j < n; j++) {
>  if (a[i][j] == 1) {
>// Found one!  Count and erase.
>n_islands++;
>erase(i, j);
>  }
>}
>  }
>  printf("found %d islands\n", n_islands);
> }
>
> int main(void)
> {
>  count_islands();
>  return 0;
> }
>
> On Jan 9, 9:06 pm, Ashish Goel  wrote:
> > row, col, diag all
> >
> > 1-1-1 is a single island :)
> >
> > 1 1 0 0
> > 1 1 0 0
> > 0 0 1 1
> >
> > this has only 2 islands
> >
> > Best Regards
> > Ashish Goel
> > "Think positive and find fuel in failure"
> > +919985813081
> > +919966006652
> >
> >
> >
> > On Tue, Jan 10, 2012 at 7:29 AM, Ankur Garg 
> wrote:
> > > Can you give an example
> >
> > > Say  matrix is
> >
> > > 1 1 0 0
> > > 1 1 0 0
> > > 0 0 1 1
> >
> > > Has it got 3 islands i.e 1-1 be in same row or they can be column wise
> > > also i.e. 5
> >
> > > On Tue, Jan 10, 2012 at 7:09 AM, Ashish Goel 
> wrote:
> >
> > >> there is a matrix of 1 and 0
> > >> 1 is a island and 0 is water
> > >> 1-1 together makes one island
> > >> calculate total no of islands
> >
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.



Re: [algogeeks] Re: MS Q

2011-06-02 Thread Ashish Goel
while all this is fine, the basic test case that each point on the circle is
at a distance of r from the centre becomes first functional test case.

what would be non-functional test cases eg.  to check on different
dpi/screen sizes etc

Best Regards
Ashish Goel
"Think positive and find fuel in failure"
+919985813081
+919966006652


On Fri, Jun 3, 2011 at 2:57 AM, Don  wrote:

> Are we drawing a circle on the screen?
>
> In addition to Harshal's suggestions, try putting the center off the
> screen, but have part of the circle on the screen:
>
> x=-10
> y=-20
> r=100
>
> Don
>
> On Jun 2, 9:19 am, Ashish Goel  wrote:
> > Given a function to draw a circle with input paramters as co-ordinates of
> > centre of the circle and r is the radius of the circle.
> > How will you test this function,  what will be additional non-functional
> > test cases
> >
> > Best Regards
> > Ashish Goel
> > "Think positive and find fuel in failure"
> > +919985813081
> > +919966006652
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.