Rappelez-vous ces moulins à vent amusants sur lesquels vous soufflez et ils tournent en rond? Codons-en un!
Un moulin à vent aura l'ensemble de caractères \ | / _
dessinant son centre et ses bras. Un moulinet possible pourrait ressembler à ceci:
|
|
|_ ___
___|_|
|
|
|
Mais qu'est-ce qu'un moulinet qui ne tourne pas? Pas drôle! Nous pouvons le faire tourner en réorganisant les symboles:
/
\ /
\ /
\/\
\/\
/ \
/ \
/
Le défi est de créer un programme qui prend trois entiers et génère un moulinet comme spécifié ci-dessous. Le premier d'entre eux est le nombre de bras dont il dispose, le second est la longueur des bras du moulinet et le troisième est le nombre de fois qu'il tournera d'un huitième de tour dans le sens des aiguilles d'une montre.
Vous pouvez supposer ce qui suit:
- Le nombre d'armes sera toujours 0, 1, 2, 4 ou 8.
- Tous les bras seront également espacés les uns des autres.
La position initiale du moulinet aura son centre comme ceci:
_ |_|
Si le nombre de bras est 1, vous pouvez décider dans quelle direction le bras pointe.
- Si le nombre de bras est de 2, vous pouvez décider de faire pointer les bras verticalement ou horizontalement.
Vous pouvez écrire un programme complet qui accepte des entrées via STDIN ou un argument de ligne de commande, ou une fonction qui accepte des entrées via des arguments de fonction. Votre programme doit afficher une séquence de sorties qui montre la rotation du moulinet, chacune séparée par au moins une ligne vide. Le centre du moulinet ne doit pas bouger de plus d'un espace. Vous pouvez générer autant d'espaces de début et de fin que nécessaire.
Voici quelques exemples:
0 2 1
_
|_|
/\
\/
1 3 2
|
|
|_
|_|
/
/
/
/\
\/
_ ___
|_|
2 2 0
_ __
__|_|
8 4 1
\ | /
\ | /
\ | /
\|_/____
____|_|
/ |\
/ | \
/ | \
/ | \
| /
\ | /
\ | /
\ |/
____\/\____
\/\
/| \
/ | \
/ | \
/ |
C'est le golf de code, donc le code le plus court gagne. Bonne chance!
1 3 5
et le bras pointant initialement vers le haut), des espaces devront être ajoutés aux sorties précédentes pour s'adapter à cela.Réponses:
Python 2
535 517 473468 octets5 octets enregistrés grâce à @Easterly Ink!
L'entrée devrait être séparée par des virgules (c.-à-d. NumArms, armLength, numRots)
Version golfée
Version non golfée
Explication
Assez simple quand il est en panne. Déterminez d'abord la taille de la grille requise, puis tracez le carré de base ou le diamant.
L'emplacement de départ, le symbole et la direction de chaque bras sont codés en dur pour chacun des 8 bras possibles pour la base carrée et diamantée. Ensuite, les dessiner est assez facile.
Pour tout faire pivoter, je passe simplement de la base carrée à la base en diamant, puis j'incrémente chacun des bras, en les faisant tourner une fois dans le sens horaire.
la source
' ' for
to' 'for'
,] for
to]for'
, 8 for to8for'
,print ''
toprint''
.