La tâche
Dans ce défi, votre tâche consiste à dessiner une représentation artistique ASCII de plusieurs piles de boîtes de hauteur croissante. On vous donne en entrée le nombre de piles, qui est un entier positif. La première pile contient une boîte de taille 2x2
. La deuxième pile contient 2 boîtes de taille 3x3
. En général, la k
e pile contient des k
boîtes de taille (k+1)x(k+1)
.
Les bordures de chaque boîte sont dessinées à l'aide des caractères -|+
et leur intérieur est constitué d'espaces. Les boîtes adjacentes partagent leurs bordures et les coins doivent toujours être dessinés avec +
, même lorsqu'ils font partie d'une bordure d'une autre boîte.
Exemples
Sortie pour 1
:
++
++
Sortie pour 2
:
+-+
| |
+-+
++ |
++-+
Sortie pour 3
:
+--+
| |
| |
+--+
| |
+-+ |
| +--+
+-+ |
++ | |
++-+--+
Sortie pour 5
:
+----+
| |
| |
| |
| |
+----+
| |
| |
| |
+---+ |
| +----+
| | |
| | |
+---+ |
| | |
| +----+
+--+ | |
| +---+ |
| | | |
+--+ | |
| | +----+
+-+ +---+ |
| +--+ | |
+-+ | | |
++ | | | |
++-+--+---+----+
Règles et notation
L'entrée peut être reçue de STDIN, comme argument de ligne de commande ou comme argument de fonction. La sortie doit aller vers STDOUT ou son équivalent le plus proche. Toute quantité finie d'espaces blancs de fin est autorisée, tout comme les sauts de ligne précédents et finaux, mais il ne peut pas y avoir d'espaces précédents supplémentaires.
Il s'agit de code-golf, donc le nombre d'octets le plus bas l'emporte. Les failles standard ne sont pas autorisées.
n
etn-1
sont relativement premiers. Deux avantages ne se chevaucheront jamais.Integer.MaxValue
comme entrée.Integer.MaxValue
ou n'est pas équivalent.Réponses:
CJam,
64 6058 octetsConstruire chaque colonne à la fois.
Essayez-le en ligne ici
la source
Java (
407349 caractères)Quelques caractères grâce à @Zgarb et @Geobits
Code
Je ne sais pas si c'est optimal, mais c'est ma première tentative, j'essaierai probablement de le mettre dans une meilleure langue de golf plus tard. Toutes les suggestions sont les bienvenues!
Étendu
Vérifiez le ici.
la source
&&
et||
par&
et|
. 2) Déplacez lesint
déclarations dans lefor
(for(int i=0,j,x,z;...
). 3) Vous avez un appareil de trop à la fin de votre fonction de golf.a+1<=b+1
; ils peuvent être remplacés para<=b
.q*q+1
devrait probablement juste être assigné à une autre variable. Vous l'utilisez environ 9 fois, et vous pourriez économiser un tas en disanta=q*q+1
une fois. Aussi,q*(q+1)
c'est justeq*q+q
.Python 2,
144128 octetsBit twiddling. Bit twiddling partout.
la source
Python, 188 octets
Calcule mathématiquement le caractère à chaque
x,y
position. Il était difficile de faire l'+
impression des deux côtés de chaque boîte ainsi que d'arrêter les+
s les plus à droite de ce qui serait lesn+1
boîtes.la source
long
qui n'a pas de limite supérieure.C # - 304 octets (fonction)
ou 363 octets (code complet)
J'ai essayé d'éviter les déclarations if. Non golfé:
la source
long
place.Rubis (205 octets)
Prend le nombre comme arguments de ligne de commande. Cela commence par un échec menant à des nouvelles lignes, mais c'est autorisé.
la source
JavaScript (ES6), 293 octets
J'ai couru cela dans Firefox. Ignorez la
"
console ajoute entre les chaînes. Ce sont principalement des trucs ES5 mais je vais essayer de jouer au golf plus.Ungolfed / ES5
la source
Python 2,
294290Je l'ai fait fonctionner, mais j'ai encore besoin de jouer au golf. Je suis si heureux, cependant, c'était difficile (pour moi, au moins)!
J'ajouterai probablement une explication plus tard, à moins que ce ne soit immédiatement clair pour quelqu'un ...? J'en doute un peu.
Essayez-le ici
la source
Python - 243 octets
Génère toutes les colonnes, en remplaçant les chevauchements sur les colonnes sauf la première. Ensuite, il remplit d'espaces, transpose et imprime.
J'envisage de traduire en Pyth, mais j'aurai besoin d'un remplacement pour la fonction pad.
la source