Bu bir dizi Island Golf mücadelesinde ikincisidir. Önceki meydan okuma
Issız bir adaya iki mermi geldi. Yalnızlık aramaya geldiklerinden, birbirlerinden mümkün olduğunca uzakta yaşamak istiyorlar. Aralarındaki yürüme mesafesini en üst düzeye çıkarmak için kulübelerini nerede inşa etmelidirler?
Giriş
Girişiniz, kara ve suyu temsil eden iki karakterden oluşan dikdörtgen bir ızgara olacaktır. Aşağıdaki örneklerde toprak #
ve su .
, ancak istediğiniz iki farklı karakteri değiştirebilirsiniz.
...........
...##......
..#####....
..#######..
.#########.
...#######.
...#####.#.
....####...
...........
Her zaman en az iki kara fayans olacaktır. Kara karolarının hepsi bitişik olacak (yani sadece bir ada var). Su fayansları da bitişik olacaktır (yani göl yoktur). Izgaranın dış sınırı tüm su kiremit olacaktır. Kara fayans olacak değil çapraz bağlanabilir: yani gibi bir şey görmek asla
....
.#..
..#.
....
Çıktı
Kodunuz, üzerinde iki kulübe yeri işaretlenmiş aynı ızgarayı çıkarmalıdır . Aşağıdaki örneklerde, kulübe konumları X ile işaretlenmiştir, ancak kara ve su karakterlerinizden farklı olduğu sürece herhangi bir karakteri değiştirebilirsiniz.
Kulübe yerleri, aralarındaki yürüyüş mesafesini en üst düzeye çıkarmak için seçilen iki kara fayans olmalıdır . Yürüme mesafesini, iki nokta arasındaki, tamamen karadaki en kısa yolun uzunluğu olarak tanımlıyoruz. Kara fayansları yatay veya dikey olarak bitişik olarak kabul edilir, ancak çapraz olarak kabul edilmez .
Yukarıdaki ada için olası bir çözüm:
...........
...X#......
..#####....
..#######..
.#########.
...#######.
...#####.X.
....####...
...........
Bu iki nokta arasındaki yürüme mesafesi, bu adadaki herhangi iki nokta arasındaki en büyük mesafe olan 11'dir. Başka bir mesafe-11 çözümü var:
...........
...##......
..X####....
..#######..
.#########.
...#######.
...#####.X.
....####...
...........
ayrıntılar
Çözümünüz tam bir program veya bir işlev olabilir . Herhangi bir varsayılan giriş ve çıkış yöntemleri kabul edilebilir.
Giriş ve çıktınız çok satırlı bir dize, bir dize listesi veya 2B bir dizi / iç içe karakter / tek karakterli dize listesi olabilir. Çıktınızın (isteğe bağlı olarak) tek bir sondaki yeni satırı olabilir. Yukarıda belirtildiği gibi, yerine üç farklı karakter kullanabilirsiniz #.X
(lütfen gönderiminizde hangi karakterleri kullandığınızı belirtin).
Test senaryoları
A. Benzersiz kulübe yerleşimli adalar:
....
.##.
....
....
.XX.
....
......
......
..##..
...#..
......
......
......
......
..X#..
...X..
......
......
........
.#####..
.##..##.
.#..###.
.##..##.
........
........
.#####..
.##..##.
.#..###.
.#X..#X.
........
.........
.#####.#.
.#...#.#.
.#.###.#.
.#.....#.
.#######.
.........
.........
.#####.X.
.#...#.#.
.#.X##.#.
.#.....#.
.#######.
.........
B. Birden fazla olası çözümü olan bir ada örneği:
........
....##..
...####.
..###...
.#####..
.#####..
..##....
........
Olası çıkışlar:
........
....#X..
...####.
..###...
.#####..
.X####..
..##....
........
........
....#X..
...####.
..###...
.#####..
.#####..
..X#....
........
........
....##..
...###X.
..###...
.#####..
.X####..
..##....
........
........
....##..
...###X.
..###...
.#####..
.#####..
..X#....
........
C , bir Gist gibi büyük bir test durumu
Bu kod golf : her dilde en kısa kod kazanır.