/* package whatever; // don't place package name! */
import java.util.concurrent.ThreadLocalRandom;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
static char board[][];
static boolean tryPlaceWithBorder(int x,int y,int width,int height) {
for(int i=0;i<height;i++)
for(int j=0;j<width;j++)
if(board[y+i][x+j]!='.')
return false; // ship can not be placed
// if we reach here, ship can be placed
for(int i=1;i<height-1;i++)
for(int j=1;j<width-1;j++)
board[y+i][x+j]='#';
return true; // ship placed successfully
}
{
ThreadLocalRandom random=ThreadLocalRandom.current();
board=new char[12][12];
for(int i=0;i<12;i++)
for(int j=0;j<12;j++)
board[i][j]='.';
int size=3;
int amount=2;
while(amount>0) {
if(random.nextBoolean()) {
// horizontal
if(tryPlaceWithBorder(random.nextInt(12-size-1),random.nextInt(10),size+2,3))
amount--; // one placed
} else {
// vertical
if(tryPlaceWithBorder(random.nextInt(10),random.nextInt(12-size-1),3,size+2)){
amount--; // one placed
}
}
}
// and a 4x2 mothership
while(!(random.nextBoolean()
?tryPlaceWithBorder(random.nextInt(7),random.nextInt(9),6,4)
:tryPlaceWithBorder(random.nextInt(9),random.nextInt(7),4,6)
));
for(int i=1;i<11;i++)
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZExvY2FsUmFuZG9tOwoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglzdGF0aWMgY2hhciBib2FyZFtdW107CglzdGF0aWMgYm9vbGVhbiB0cnlQbGFjZVdpdGhCb3JkZXIoaW50IHgsaW50IHksaW50IHdpZHRoLGludCBoZWlnaHQpIHsKICAgICAgZm9yKGludCBpPTA7aTxoZWlnaHQ7aSsrKQogICAgICAgIGZvcihpbnQgaj0wO2o8d2lkdGg7aisrKQogICAgICAgICAgaWYoYm9hcmRbeStpXVt4K2pdIT0nLicpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gc2hpcCBjYW4gbm90IGJlIHBsYWNlZAogICAgICAvLyBpZiB3ZSByZWFjaCBoZXJlLCBzaGlwIGNhbiBiZSBwbGFjZWQKICAgICAgZm9yKGludCBpPTE7aTxoZWlnaHQtMTtpKyspCiAgICAgICAgZm9yKGludCBqPTE7ajx3aWR0aC0xO2orKykKICAgICAgICAgIGJvYXJkW3kraV1beCtqXT0nIyc7CiAgICAgIHJldHVybiB0cnVlOyAvLyBzaGlwIHBsYWNlZCBzdWNjZXNzZnVsbHkKICAgIH0KCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCSAgVGhyZWFkTG9jYWxSYW5kb20gcmFuZG9tPVRocmVhZExvY2FsUmFuZG9tLmN1cnJlbnQoKTsKICAgICAgYm9hcmQ9bmV3IGNoYXJbMTJdWzEyXTsKICAgICAgZm9yKGludCBpPTA7aTwxMjtpKyspCiAgICAgICAgZm9yKGludCBqPTA7ajwxMjtqKyspCiAgICAgICAgICBib2FyZFtpXVtqXT0nLic7CgogICAgICBpbnQgc2l6ZT0zOwogICAgICBpbnQgYW1vdW50PTI7CiAgICAgIHdoaWxlKGFtb3VudD4wKSB7CiAgICAgICAgaWYocmFuZG9tLm5leHRCb29sZWFuKCkpIHsKICAgICAgICAgIC8vIGhvcml6b250YWwKICAgICAgICAgIGlmKHRyeVBsYWNlV2l0aEJvcmRlcihyYW5kb20ubmV4dEludCgxMi1zaXplLTEpLHJhbmRvbS5uZXh0SW50KDEwKSxzaXplKzIsMykpCiAgICAgICAgICAgIGFtb3VudC0tOyAvLyBvbmUgcGxhY2VkCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIC8vIHZlcnRpY2FsCiAgICAgICAgICBpZih0cnlQbGFjZVdpdGhCb3JkZXIocmFuZG9tLm5leHRJbnQoMTApLHJhbmRvbS5uZXh0SW50KDEyLXNpemUtMSksMyxzaXplKzIpKXsKICAgICAgICAgICAgYW1vdW50LS07IC8vIG9uZSBwbGFjZWQKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIGFuZCBhIDR4MiBtb3RoZXJzaGlwCiAgICAgIHdoaWxlKCEocmFuZG9tLm5leHRCb29sZWFuKCkKICAgICAgICA/dHJ5UGxhY2VXaXRoQm9yZGVyKHJhbmRvbS5uZXh0SW50KDcpLHJhbmRvbS5uZXh0SW50KDkpLDYsNCkKICAgICAgICA6dHJ5UGxhY2VXaXRoQm9yZGVyKHJhbmRvbS5uZXh0SW50KDkpLHJhbmRvbS5uZXh0SW50KDcpLDQsNikKICAgICAgKSk7CgogICAgICBmb3IoaW50IGk9MTtpPDExO2krKykKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oU3RyaW5nLnZhbHVlT2YoYm9hcmRbaV0sMSwxMCkpOwogICAgfQp9Cg==