Küçük evcil hayvanlar üzerinde deney yapmaktan bıkmış olan Nobel, ödüllü Erwin Schrödinger, en yakın lazeri bulmaya ve bunun yerine çekim yapmaya karar verdi. Çünkü ... bilim!
Açıklama
İki lazer geçtiğini noktaları ve bir lazer ışınının boyutu verilecek ve lazer ışını yeri belirlemek gerekir gerekir , gitmiş olabilir gitmiş ve olamazdı gitti.
Lazer ışını yatay, dikey veya çapraz olabilir. Boyut 1 lazer ışını için, sırasıyla şöyle görünürler:
# #
# #
##### # #
# #
# #
Çapraz lazer ışını da çevrilebilir. Boyut 2 lazer ışınları şöyle görünür:
### ##
##### ### ###
##### ### ###
##### ### ###
### ##
Genel olarak, (n) boyutlu bir lazer ışını elde etmek için, basitçe lazer ışınını (n-1) alın ve her iki tarafa da bir lazer boyutlu (1) lazer ışını ekleyin. Son bir örnek olarak, işte aynı "tahta" da gösterilen 3 büyüklüğünde olası lazer ışınları.
###.....#####.....##
####....#####....###
#####...#####...####
.#####..#####..#####
..#####.#####.#####.
...###############..
....#############...
.....###########....
####################
####################
####################
####################
####################
.....###########....
....#############...
...###############..
..#####.#####.#####.
.#####..#####..#####
#####...#####...####
####....#####....###
Bu "tahta" her zaman 20x20 (karakter cinsinden) boyutlara sahip olacaktır.
Giriş
Programınıza girdi olarak beş tam sayı verilecektir. Sırayla, x 1 , y 1 , x 2 , y 2 ve lazer ışınının boyutlarıdır. Tam olarak bu sırada alınmaları gerekir. İsterseniz, sıralı (x, y) çiftlerini bir dizi, sıra, liste ya da iki değeri saklayan diğer dahili veri türü olarak alabilirsiniz.
Girdi olarak verilen iki puanın her ikisi de pano içerisinde olacaktır ve farklı olmaları garanti edilir (yani iki puan asla aynı olmaz). Lazer ışınının boyutu buna bağlıdır 1 ≤ size < 20
. Her iki noktadan geçen en az bir olası lazer ışını her zaman olacaktır.
Çıktı
Programınız, aşağıdaki karakterlerden 20x20'lik bir ızgara çıkarmalıdır:
#
iki noktadan geçen her lazer ışını da bu noktadan geçerse..
iki noktadan geçen ve bu noktadan geçen bir lazer ışını yoksa.?
Olası lazer ışınlarından bazıları (tümü değil) bu noktadan geçerse.X
eğer bu iki orijinal giriş noktasından biriyse (bu geçersiz kılar#
).
Test durumları
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??????.....
..??????????????....
..???????????????...
..????????????????..
..?????????????????.
..??????????????????
..??????????????????
..????????.?????????
..????????..????????
..????????...???????
Test senaryoları, dikey alanı korumak için bir Stack Snippet'in içinde bulunan aşağıdaki Ruby komut dosyası ile oluşturuldu.
kurallar
Programınız her bir test senaryosunu 30 saniyenin altında bir sürede çözebilmelidir (makul bir makinede). Bu daha çok bir akıl sağlığı kontrolünden geçiyor, çünkü test Ruby programım tüm test durumlarını anında çözdü.
Bu kod golf , bu yüzden en kısa çözüm kazanır.
2 * size - 1
. 1 büyüklüğü 1 piksel, 2 büyüklüğü 3 piksel, 3 büyüklüğü 5 piksel (yukarıdaki örneğe bakın), 4 büyüklüğü 7 pikseldir.