うんざり小さな家畜に実験し、ノーベル賞を受賞したエルヴィン・シュレーディンガーは、最寄りのレーザーを見つけて、その代わりのもので、それを撮影することを決定しました。なぜなら...科学!
説明
次の2つのレーザーが通過する点や、レーザビームの大きさが与えられます、そしてあなたは、レーザービームがどこかを決定しなければならない必要があり、行っている可能性が行っている、とができませんでした行っています。
レーザービームは、水平、垂直、または斜めにすることができます。サイズ1のレーザービームの場合、それぞれ次のようになります。
# #
# #
##### # #
# #
# #
斜めのレーザービームも反転できます。サイズ2のレーザービームは次のようになります。
### ##
##### ### ###
##### ### ###
##### ### ###
### ##
一般に、サイズ(n)のレーザービームを取得するには、サイズ(n-1)のレーザービームを取得し、両側にサイズ(1)のレーザービームを追加します。最後の例として、サイズ3のすべての可能なレーザービームを同じ「ボード」上に示します。
###.....#####.....##
####....#####....###
#####...#####...####
.#####..#####..#####
..#####.#####.#####.
...###############..
....#############...
.....###########....
####################
####################
####################
####################
####################
.....###########....
....#############...
...###############..
..#####.#####.#####.
.#####..#####..#####
#####...#####...####
####....#####....###
この「ボード」の寸法は常に20x20(文字数)です。
入力
プログラムには、入力として5つの整数が与えられます。それらは、順番に、x 1、y 1、x 2、y 2、およびレーザービームのサイズです。彼らは正確にその順序で撮影する必要があります。必要に応じて、配列(タプル、リスト)、または2つの値を格納するその他の組み込みデータ型として、順序付けられた(x、y)ペアを使用できます。
入力として与えられた2つのポイントは両方ともボード内にあり、それらは異なることが保証されています(つまり、2つのポイントが同じになることはありません)。レーザービームのサイズはにバインドされてい1 ≤ size < 20
ます。両方のポイントを通過する少なくとも1つの可能なレーザービームが常に存在します。
出力
プログラムは、次の文字の20x20グリッドを出力する必要があります。
#
2つのポイントを通過するすべての可能なレーザービームがこのポイントも通過する場合。.
2点とこの点を通過するレーザービームがない場合。?
可能性のあるレーザービームのすべてではなく一部がこのポイントを通過する場合。X
これが2つの元の入力ポイントのいずれかである場合(これはをオーバーライドします#
)。
テストケース
7、7、11、3、1
..............#.....
.............#......
............#.......
...........X........
..........#.........
.........#..........
........#...........
.......X............
......#.............
.....#..............
....#...............
...#................
..#.................
.#..................
#...................
....................
....................
....................
....................
....................
18、18、1、1、2
#??.................
?X??................
??#??...............
.??#??..............
..??#??.............
...??#??............
....??#??...........
.....??#??..........
......??#??.........
.......??#??........
........??#??.......
.........??#??......
..........??#??.....
...........??#??....
............??#??...
.............??#??..
..............??#??.
...............??#??
................??X?
.................??#
10、10、11、10、3
?????..????????..???
??????.????????.????
????????????????????
????????????????????
.???????????????????
..??????????????????
????????????????????
????????????????????
????????????????????
????????????????????
??????????XX????????
????????????????????
????????????????????
????????????????????
????????????????????
..??????????????????
.???????????????????
????????????????????
????????????????????
??????.????????.????
3、3、8、10、4
??????????..........
??????????..........
??????????..........
???X??????..........
???##?????..........
???###????..........
????###????.........
.????###????........
..????###????.......
..?????##?????......
..??????X??????.....
..??????????????....
..???????????????...
..????????????????..
..?????????????????.
..??????????????????
..??????????????????
..????????.?????????
..????????..????????
..????????...???????
テストケースは、垂直方向のスペースを節約するために、スタックスニペット内にある次のRubyスクリプトを使用して生成されました。
ルール
プログラムは、30秒未満で(妥当なマシンで)各テストケースを解決できる必要があります。私のテストRubyプログラムは、ほぼ瞬時にすべてのテストケースを解決したので、これはより健全なチェックです。
これはcode-golfであるため、最短のソリューションが優先されます。
2 * size - 1
です。サイズ1は1ピクセル、サイズ2は3ピクセル、サイズ3は5ピクセル(上記の例を参照)、サイズ4は7ピクセルです。