Toutes nos félicitations! Vous venez d'être embauché par la NASA pour travailler sur le nouveau projet Horizons 2.
Malheureusement, il y a eu d'énormes compressions budgétaires récemment, donc la direction a décidé de simuler tout le survol de Pluton prévu (comme ils l'ont fait pour les alunissages dans les années 70).
Votre tâche consiste à écrire un programme qui acceptera comme entrée une date au format yyyymmdd
et fournira une fausse photographie de Pluton pour cette date. Vous pouvez supposer que la date entrée sera en 2015 ou 2016.
La photographie est une grille 15x15 de caractères ASCII. Les caractères sur la grille ont leurs coordonnées x et y dans la plage [-7, 7]
- le caractère en haut à gauche est à (-7, -7)
tandis que le caractère en bas à droite est à (7, 7)
.
La photographie sera calculée selon les règles suivantes:
- La sonde sera la plus proche de Pluton le 25/12/2015
- La distance
d
à Pluton est donnée par cette formule:square root of ((difference in days to christmas) ^ 2 + 10)
- Le rayon
r
de l'image de Pluton sur la photo est donné par:22 / d
- Un caractère avec des coordonnées
(x, y)
sur la grille doit être défini sur#
ifx^2 + y^2 <= r^2
; sinon, il doit être réglé sur espace. - Il y a des étoiles à des positions
(-3, -5)
,(6, 2)
,(-5, 6)
,(2, 1)
,(7, -2)
. Les étoiles sont représentées par un point.
, et elles sont bien sûr cachées par Pluton.
Une dernière chose: le conseil d'administration de la NASA est parvenu à la conclusion que la découverte de la vie sur Pluton entraînerait probablement une augmentation substantielle du budget. Votre programme devrait ensuite ajouter des indices de vie sur Pluton:
- Lorsque la distance à Pluton est <= 4, ajoutez un plutonien aux coordonnées
(-3,-1)
:(^_^)
Exemple de photo à saisir 20151215
: (votre code doit avoir toutes les nouvelles lignes comme ce code)
.
# .
###
#####
###.
# .
.
Photographie pour entrée 20151225
:
#######
#########
###########
#############
#############.
###(^_^)#####
#############
#############
#############
#############
###########
#########
. #######
À titre de comparaison, voici une photo du satellite Hydra de Pluton prise par New Horizons. Les différences sont à peine perceptibles avec notre art ASCII.
C'est le golf de code, donc le code le plus court en octets gagne!
`
s en faveur de<pre><code>
; n'hésitez pas à revenir en arrière si vous ne l'aimez pas.You can assume the entered date will be in the year 2015 or 2016.
Mais alors pourquoi spécifier une année?Réponses:
JavaScript (ES6), 237 octets
Démo en direct . Exécutez dans Firefox.
Version originale
Le golf
C'était amusant de jouer au golf.
Je n'ai pas besoin de créer un objet Date, j'ai donc codé en dur la valeur en millisecondes pour économiser 13 octets:
Remplacez le tableau associatif par une chaîne délimitée pour éliminer 9 octets:
Le plus grand refactor a été de remplacer les boucles for par des IIFE récursifs imbriqués pour supprimer 10 octets:
Je me suis également débarrassé de
Math.sqrt
8 octets de plus.Problèmes
Je n'ai pu obtenir la photo correcte pour les cas de test qu'en changeant la date la plus proche à 2015/12/24, et je ne sais pas si le problème réside dans mon code ou la question. Veuillez clarifier et je mettrai à jour ma réponse.Voici ma sortie en utilisant les différences par rapport au 25/12/2015.Modifier: réponse mise à jour pour utiliser Noël comme date la plus proche.
Photographie pour "20151215":
Photographie de "20151225":
la source
C # 4.0, 393 octets
Exemple:
Sortie:
la source
CJam, 165 octets
La première partie calcule la différence de jour et la stocke dans la
D
variable. Le reste est une double boucle qui parcourtX
etY
.Testez-le ici
la source