Défi
Ceci est un défi simple. Étant donné deux entiers positifs w
et h
créer une clôture ASCII avec une largeur w
et une hauteur de h
. La clôture doit être construite selon les règles suivantes:
- Le
+
personnage représentera un message. - Le
-
caractère sera utilisé pour représenter la largeur de la clôture. - Le
|
sera utilisé pour représenter la hauteur de la clôture. - Après que exactement trois
-
caractères ont été sortis, un+
caractère doit être sorti par la suite. Excluant les quatre coins, toute autre fois que vous produisez un+
serait invalide. Vous êtes autorisé à suivre cette règle en partant de la gauche ou de la droite (voir exemples), mais vous devez être cohérent. - Après que exactement deux
|
caractères ont été sortis, un+
caractère doit être sorti ensuite. Excluant les quatre coins, toute autre fois que vous produisez un+
serait invalide. Vous êtes autorisé à suivre cette règle en partant du haut ou du bas (voir exemples), mais vous devez être cohérent. - Chaque clôture aura exactement quatre coins et chaque coin sera représenté par un
+
.
En d'autres termes: tous les trois -
caractères, vous devez afficher a +
. Et à tous les deux |
caractères, vous devez produire un +
.
Vous pouvez supposer que la clôture sera toujours un rectangle et que les deux w
et h
ne seront jamais supérieurs 100
ou inférieurs à 1
. Les espaces de fin et / ou de précédent sont autorisés.
Exemples / cas de test
w = 1
h = 1
+-+
| |
+-+
w = 3
h = 2
+---+
| |
| |
+---+
w = 5
h = 7
+---+--+ or +--+---+
| | | |
| | + +
+ + | |
| | | |
| | + +
+ + | |
| | | |
| | + +
+ + | |
| | | |
+---+--+ +--+---+
w = 10
h = 5
+---+---+---+-+ or +-+---+---+---+
| | | |
| | + +
+ + | |
| | | |
| | + +
+ + | |
| | | |
+---+---+---+-+ +-+---+---+---+
w = 4
h = 4
+---+-+ or +-+---+
| | | |
| | | |
+ + + +
| | | |
| | | |
+---+-+ +-+---+
Règles
- Des échappatoires standard s'appliquent .
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte!
+
contacts?+-+-+-+-+-+
n'est pas valide. Désolé pour la confusion.Réponses:
C, 131 octets
Essayez-le en ligne!
Explication:
la source
Python 3 ,
140137128119106105 octetsEssayez-le en ligne!
la source
in
et[w+1+(w-1)//3]]
dans la dernière partie.'\n') for
. En outre, vous pouvez changer(w-1)
à ce~-w
qui vous permet de supprimer les parenthèses puisque les opérateurs unaires ont une priorité plus élevée que les binaires. Même chose pour(h-1)
->~-h
et(a-1)
->~-a
. Essayez-le en ligne - 128 octetsdef f(w,h)
est de la même longueur quelambda w,h
, mais vous permet d'utiliser plusieurs lignes si cela vous aide àa=~-w//3-~w;
pour économiser 1 octetMathematica, 165 octets
la source
Pip , 38 octets
37 octets de code, +1 pour l'
-n
indicateur.Prend la largeur et la hauteur comme arguments de ligne de commande. Essayez-le en ligne!
Explication
la source
Fusain,
474540 octetsExplication: Fonctionne en dessinant les
-
s /|
s de chaque côté à tour de rôle, en insérant des+
s si nécessaire, puis en terminant par a+
. Après avoir dessiné les côtés supérieur et droit, revient au début pour les dessiner dans l'ordre inverse, dessinant efficacement les côtés gauche et inférieur. Je ne sais pas si la symétrie de rotation est autorisée, mais si oui, alors pour2725 octets:Prend l'idée ci-dessus à l'extrême en dessinant le côté supérieur, en tournant à gauche, en dessinant le côté droit, en tournant à nouveau, puis en répétant pour dessiner les côtés inférieur et gauche en sens inverse.
la source
JavaScript (ES6),
133132 octetsPrend entrée dans la syntaxe de curry:
f(width)(height)
.Extrait de test
la source
Pyth , 40 octets
Suite de tests .
la source
Java (OpenJDK 8) ,
178177 octetsEssayez-le en ligne!
-1 octet grâce à @KevinCruijssen
la source
w->h->
Essayez-le ici.Fusain ,
47 4537 octetsEssayez-le en ligne!
Une approche différente de celle de @ Neil : d'abord je crée les chaînes
α
etβ
contient les caractères dans les bordures horizontales et verticales, en utilisant l'Range
opérateur qui crée une répétition d'une chaîne jusqu'à ce qu'une longueur donnée soit atteinte. Ensuite, je les imprime dans le bon ordre:Lien vers une version détaillée .
la source
Range
, cela économise 3 octets sur ma deuxième approche!A…+---÷⁺²×⁴N³αA…+||÷⁺¹×³N²βPα↓βα+↖↑⮌β
.05AB1E , 58 octets
Essayez-le en ligne!
Plus dur dans 05AB1E que je ne le pensais.
la source