+ - + + - + | | + - + + - + | | | | | | | | + - + + - + + - + + - +
Les habitants de ASCIIville reconstruisent leur ville et esquissent de nouveaux plans. Votre travail consiste à dessiner leur nouvelle ville en fonction du nombre de bâtiments qu'ils souhaitent.
L'entrée sera le nombre de bâtiments. Chaque bâtiment est la moitié de la hauteur de l'entrée (arrondi si impair), sans compter le haut et le bas du bâtiment.
Tirons un exemple de base de 4
+ - + + - + + - + + - + | | | | | | | | | | | | | | | | + - + + - + + - + + - +
Comme vous pouvez le voir ici, il y a deux |
s dans chaque bâtiment car l'entrée était de quatre. Mais il y a un hic! (ce qui signifie que l'exemple ci-dessus est incorrect, et l'exemple en haut de ce message est la sortie réelle pour 4)
Pour chaque bâtiment qui n'est pas un nombre premier, sa hauteur diminue d'une unité. Si le nombre est divisible par 3 , 5 ou 10 , il descend un de plus. S'il est divisible par au moins deux de ces nombres, le montant déduit s'additionne ( 10 est divisible par 10 et 5, et ce n'est pas un nombre premier, il est donc déduit par 3 ).
Regardons un exemple avec une entrée de 5
.
+ - + + - + | | + - + + - + + - + | | | | | | | | | | | | | | | | | | | | + - + + - + + - + + - + + - +
Voici un exemple de 7
+ - + + - + + - + | | + - + + - + + - + | | | | | | | | | | | | + - + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + - + + - + + - + + - + + - + + - + + - +
Et un exemple de 10
+ - + + - + + - + | | + - + + - + + - + | | + - + | | | | | | | | | | + - + | | | | + - + | | | | | | | | | | | | | | | | | | + - + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + - + + - + + - + + - + + - + + - + + - + + - + + - + + - +
Et revenons à 6
+ - + + - + | | + - + + - + + - + | | | | | | | | | | + - + | | | | | | | | | | | | + - + + - + + - + + - + + - + + - +
Règles:
- Si un nombre est tellement déduit que sa hauteur est inférieure ou égale à zéro, il n'est pas affiché mais un espace lui est laissé (je ne pense pas que ce soit possible,
6
est le plus proche que j'ai trouvé pour atteindre zéro) . - Les espaces de fin sont autorisés.
- La largeur de chaque bâtiment doit être de 2.
- Votre entrée peut provenir de stdin ou être encodée dans le programme.
- Votre programme doit être un programme complet , sans fonctions.
- Votre programme doit être capable de 4 à 15 versions. 0-3 et les nombres négatifs ne sont pas nécessaires et ne sont pas spécifiés pour faire quoi que ce soit, ce qui signifie qu'ils peuvent lancer une erreur, imprimer des ordures ou ne rien faire.
Réponses:
CJam,
68 66 5855 octetsC'est trop long pour l'instant. Mais un début.
MISE À JOUR: Maintenant codage en dur pour les entrées jusqu'à 15 au lieu de calculer le décalage. Suggestion de Sp3000
Essayez-le en ligne ici
la source
Python 2,
247 245 237229 octetsla source
C #,
223205 octetsCela profite de la nécessité de ne se rendre que dans 15 bâtiments.
260 octets
Et une réponse plus générique qui fonctionnera pour n'importe quel nombre de bâtiments.
la source
Python 2, 163 octets
La partie la vérification primalité @ Borrows algorithme de xnor d' ici .
Si nous codons en dur les 15 premiers décalages, nous pouvons obtenir 137 octets :
Je suppose que les espaces de fin à la fin de chaque ligne sont corrects, mais si la question signifiait des espaces de fin après la sortie entière, alors c'est +9 octets pour
.rstrip()
.la source
Groovy,
234,225,223219 octetsAbuser de la limite de 15 bâtiments
la source
Swift,
375, 350 octetsVoici le code en retrait
B
contient le nombre de bâtiments.p
renvoie 1 lorsqu'un nombre n'est pas premier.J'ai besoin d'importer Foundation pour utiliser la
ceil
fonction.Je n'ai pas réussi à optimiser le code pour seulement les quinze cas, mais je finirai par le faire plus tard.
edit: Suivre les conseils de @Kametrixom et optimiser la
mod
pièce (j'ai oublié de réduire la longueur du nom var).la source
Foundation
parDarwin
pour économiser quelques octetsimport UIKit
au lieu deimport Darwin
.