Gratulacje! Właśnie zostałeś zatrudniony przez NASA do pracy nad nowym projektem Horizons 2.
Niestety ostatnio miały miejsce ogromne cięcia budżetowe, więc najwyższe kierownictwo postanowiło sfałszować cały planowany przelot Plutona (podobnie jak w przypadku lądowań na Księżycu w latach 70.).
Twoim zadaniem jest napisanie programu, który zaakceptuje jako datę datę w formacie yyyymmdd
i dostarczy fałszywe zdjęcie Plutona na tę datę. Możesz założyć, że wprowadzona data będzie w roku 2015 lub 2016.
Zdjęcie to siatka 15 x 15 znaków ASCII. Znaki na siatce mają współrzędne x i y w zakresie [-7, 7]
- lewy górny znak znajduje się na, (-7, -7)
a prawy dolny znak na (7, 7)
.
Zdjęcie zostanie obliczone według następujących zasad:
- Sonda będzie najbliżej Plutona 25.12.2015
- Odległość
d
do Plutona jest określona przez ten wzór:square root of ((difference in days to christmas) ^ 2 + 10)
- Promień
r
obrazu Plutona na zdjęciu jest określony przez:22 / d
- Znak ze współrzędnymi
(x, y)
na siatce należy ustawić na#
ifx^2 + y^2 <= r^2
; w przeciwnym razie należy ustawić spację. - Są gwiazdy w pozycji
(-3, -5)
,(6, 2)
,(-5, 6)
,(2, 1)
,(7, -2)
. Gwiazdy są reprezentowane przez kropkę.
i oczywiście są ukryte przez Plutona.
Jeszcze jedno: Rada NASA doszła do wniosku, że odkrycie życia na Plutonie prawdopodobnie spowoduje znaczny wzrost budżetu. Twój program powinien następnie dodać wskazówki życia na Plutonie:
- Gdy odległość do Plutona wynosi <= 4, dodaj pluton o współrzędnych
(-3,-1)
:(^_^)
Przykładowe zdjęcie do wprowadzenia 20151215
: (Twój kod powinien zawierać wszystkie znaki nowej linii, tak jak ten kod)
.
# .
###
#####
###.
# .
.
Zdjęcie do wprowadzenia 20151225
:
#######
#########
###########
#############
#############.
###(^_^)#####
#############
#############
#############
#############
###########
#########
. #######
Dla porównania, oto zdjęcie satelity Pluto Hydra zrobione przez New Horizons. Różnice są prawie niezauważalne w naszej sztuce ASCII.
To jest kod golfowy, więc wygrywa najkrótszy kod w bajtach!
`
s na rzecz <pre><code>
; możesz się wycofać, jeśli ci się nie podoba.
You can assume the entered date will be in the year 2015 or 2016.
Ale dlaczego w ogóle określać rok?