Étant donné trois entiers> = 2, créez un cube ASCII dans une projection orthogonale (armoire). Les trois entiers représentent la hauteur, la largeur et la profondeur (mesurées en caractères visibles), y compris les coins. Les coins doivent être «o» ou «+», libre choix.
w: 10, h: 5, d: 4 Donne ainsi:
o--------o
/ /|
/ / |
o--------o |
| | o
| | /
| |/
o--------o
Maintenant, pour rendre cela un peu plus difficile, toutes les faces peuvent être solides, transparentes ou manquantes. Nous commandons les visages comme ceci:
o--------o
/ /|
/ 2 / |
o--------o 3|
| | o
| 1 | /
| |/
o--------o
---
|2|
-------
|5|1|3|
-------
|4|
---
|6|
---
Et fournissez une liste de jetons, S, T ou M. L'exemple original est donc:
w 10
h 5
d 4
S S S S S S
o--------o
/ /|
/ / |
o--------o |
| | o
| | /
| |/
o--------o
Si une face est transparente, nous pouvons voir tout ce qui se trouve derrière:
T S S S S S
o--------o
/ /|
/ / |
o--------o |
| o-----| o
| / | /
|/ |/
o--------o
T T T T T T
o--------o
/| /|
/ | / |
o--------o |
| o-----|--o
| / | /
|/ |/
o--------o
Pour les paires de faces manquantes, les arêtes ou coins adjacents ne sont plus visibles:
M M S S S S
o--------o
/| /|
/ | / |
o | o |
| o-----| o
| / | /
|/ |/
o--------o
M M S S M S
o--------o
| /|
| / |
| o |
o-----| o
/ | /
/ |/
o--------o
Code golf, le code le plus court gagne! Les espaces de fin et les retours à la ligne conviennent, vous êtes libre de choisir la méthode de saisie et l'ordre de saisie.
you're free to choose input method and input order
. Et comme rien ne dit le contraire, n'importe laquelle des méthodes d'entrée / sortie par défaut peut être utilisée.Réponses:
Charbon de bois ,
190181 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Edit: économisé 9 octets en optimisant mes conditions. Le charbon de bois n'a pas de
else
jeton, donc lesif
commandes ont toujours deux alternatives, à moins qu'elles ne soient à la fin d'un bloc ou d'un programme. Pour éviter cela, j'utilise à lafor (<bool>)
place deif (<bool>)
qui a un effet similaire lorsque l'expression ne peut avoir que les valeurs 0 ou 1 mais enregistre un octet. (Pour y parvenir je devais changer les expressions afin qu'ils étaient toujours vrai quand le corps devait être exécuté.) J'ai pu optimiserif (<bool>) for (<int>)
enfor (And(bool, int))
.la source
X * Y * Z
cube ASCII.JavaScript (ES6),
318314308 octetsPrend la largeur, la hauteur et la profondeur sous forme d'entiers et les faces sous forme de tableau de caractères.
Comment?
La fonction M () traite un rappel F donné sur une plage donnée [0 ... n] .
La variable a contient un tableau plat représentant une grille de taille (w + d) x (h + d-1) . Il est initialement rempli de rangées d'espaces terminées par des retours à la ligne.
La fonction D () est utilisée pour «dessiner» une face du cuboïde.
Les deux bits les moins significatifs du paramètre t contiennent le type de face:
Les bits # 2 à # 4 contiennent l'index de visage basé sur 0.
Les visages sont dessinés dans l'ordre suivant:
Démo
Afficher l'extrait de code
la source
SOGL V0.11 ,
200194193 193192190 octetsPrend la saisie dans l'ordre
Lié!
Essayez-le ici! (la valeur compressée a été modifiée pour être compatible V0.12)
la source