Vous devez construire une pyramide à partir de cubes. Les cubes peuvent être vus sous 2 angles:
_____ _____
/\ \ / /\
/ \____\ /____/ \
\ / / \ \ /
\/____/ \____\/
Ceci est un exemple pour des cubes de 2 tailles sous les 2 angles possibles. La hauteur des cubes est des $size
barres obliques (ou des barres obliques inverses) et la largeur du cube est 2 * $size
soulignée. La largeur de niveau supérieur doit contenir un caractère de soulignement supplémentaire.
L'entrée sera fournie sous la forme d'une chaîne contenant un nombre (taille des cubes), une barre oblique ou une barre oblique inverse (pour indiquer la direction / l'angle) et un autre nombre (hauteur de la pyramide).
Exemples:
Contribution:
1/1
Production:
___
/\__\
\/__/
Contribution:
1\1
Production:
___
/__/\
\__\/
Contribution:
2/1
Production:
_____
/\ \
/ \____\
\ / /
\/____/
Contribution:
1/2
Production:
___
___/\__\
/\__\/__/
\/__/\__\
\/__/
Contribution:
2\2
Production:
_____
/ /\
/____/ \_____
\ \ / /\
\____\/____/ \
/ /\ \ /
/____/ \____\/
\ \ /
\____\/
Contribution:
1/3
Production:
___
___/\__\
___/\__\/__/
/\__\/__/\__\
\/__/\__\/__/
\/__/\__\
\/__/
- Les espaces de fin / de début sont corrects.
- Les failles standard ne sont pas autorisées.
- Vous pouvez supposer que la saisie sera toujours valide.
- Vous pouvez supposer que l'entrée ne provoquera pas une sortie trop importante, c'est-à-dire: pas de retour à la ligne lorsque la sortie est imprimée sur le terminal.
- La taille du cube et la hauteur de la pyramide sont positives (c'est-à-dire ≥ 1)
- C'est le code-golf, donc le code le plus court en octets gagne.
Le gagnant actuel est:
Glen O avec 270 octets en Julia
défi reste ouvert. si vous battez le meilleur du moment, je mettrai à jour la réponse acceptée.
Réponses:
Julia -
503455369346313270 octetsNon golfé:
Usage:
ou
la source
Perl, 343 octets
Multiligne avec commentaires:
Exemple de sortie:
J'ai également essayé de l'implémenter en tant que fonction C en utilisant le même algorithme, dans l'espoir de sauver les octets du luxe des noms de variable à un seul caractère, mais cela a fini par 15 octets de plus, à 358 octets (doit être compilé avec
-std=c89
sous gcc pour ne pasvoid
dans l' en-tête de la fonction):la source
printf("%c" --> putchar(
,printf("\n") --> puts("")
, déplacer toutes les déclarations int en dehors de la fonction, vous pouvez éliminer leint
(voir meta.codegolf.stackexchange.com/q/5532/15599 ), changez tous les littéraux de caractères pour leurs codes ascii, par exemple' ' --> 32
. La refactorisation de vos boucles for, par exemple,for(k+1;z--;)
peut également aider mais est plus délicate.e
peut être un int à condition de l'initialiser à zéro.sscanf
ne remplacera que l'octet le moins significatif et peut laisser les déchets existants dans les trois autres octets.main
place dej
mais vous n'avez pas à transmettre de paramètres
, et vous pouvez profiter de l'initialisation automatique des variables globales.Rubis, 332
Le seul golf fait jusqu'à présent est l'élimination des commentaires et des retraits. Je jouerai au golf plus tard.
J'ai mis en place un tableau d'espaces et y pousser les personnages individuels. Il y a pas mal de surdimensionnement d'un cube au-dessus d'un autre (travail de bas en haut) et dans le cube lui-même, pour éviter un code supplémentaire. Je fais la pyramide en dessinant un losange (similaire à /codegolf//a/54297/15599 ) et en écrasant la moitié supérieure.
La partie difficile dessinait le cube évolutif. J'ai commencé avec un hexagone de périmètre avec 2n + 1
_
caractères sur les côtés horizontaux. J'avais également eu 2n + 1/
et\
, donc j'en avais un de trop, mais en traçant le_
dernier je les écrase.Les lignes internes sont les seules qui changent en fonction de la direction du cube. Je trace tout
/
et\
avec une seule affectation.abs
aide à inverser la direction eti>>9&1
ajoute un 1 supplémentaire aux valeurs négatives de i, ce qui abaisse la partie supérieure vers le bas. pouri
= 0, l'un des éléments requis_
est surploté, de sorte que la chaîne de sélection'\_/'
contient les trois symboles, sélectionnés selon le signe dei
.L'espace autour de la sortie est ample mais pas excessif: 4 * p * n haut et 8 * p * n large (ce dernier permet au cube de l'apex d'être toujours au centre de la sortie.) Je comprends "trailing / leader" espaces blancs "pour inclure des lignes entières, mais peut être révisé si nécessaire.
Code non golfé
la source