Étant donné deux entiers positifs, W et H, affichez une boîte de type ASCII dont la bordure est faite de barres obliques ( /
et \
) avec W "pointes" sur les bords supérieur et inférieur, et H "pointes" sur les bords gauche et droit. L'intérieur de la boîte est rempli d'espaces.
Un "pic" est simplement deux barres obliques qui se rejoignent pour former une forme de flèche:
/\ \/
/ \
\ /
Ainsi, la sortie pour W = 4, H = 3
serait
/\/\/\/\
\ /
/ \
\ /
/ \
\/\/\/\/
car il y a 4 pointes en haut pointant vers le haut, 4 en bas pointant vers le bas, 3 à gauche pointant vers la gauche et 3 à droite pointant vers la droite.
Voici quelques autres paires d'entrée / sortie:
W H
[spiky slash box]
1 1
/\
\/
1 2
/\
\/
/\
\/
2 1
/\/\
\/\/
2 2
/\/\
\ /
/ \
\/\/
1 3
/\
\/
/\
\/
/\
\/
3 1
/\/\/\
\/\/\/
2 3
/\/\
\ /
/ \
\ /
/ \
\/\/
3 2
/\/\/\
\ /
/ \
\/\/\/
10 1
/\/\/\/\/\/\/\/\/\/\
\/\/\/\/\/\/\/\/\/\/
10 2
/\/\/\/\/\/\/\/\/\/\
\ /
/ \
\/\/\/\/\/\/\/\/\/\/
4 5
/\/\/\/\
\ /
/ \
\ /
/ \
\ /
/ \
\ /
/ \
\/\/\/\/
Aucune ligne dans la sortie ne doit avoir d'espaces de début ou de fin. Il peut éventuellement y avoir une nouvelle ligne de fin.
Le code le plus court en octets gagne.
Réponses:
Fusain , 9 octets
Essayez-le en ligne!
Explication
la source
F²«↷P…\/N»‖M¬
(prend l'entrée en hauteur, ordre de largeur).MATL , 18 octets
Essayez-le sur MATL Online!
Explication
Tenez compte des entrées
W = 4
,H = 3
. Le code construit les vecteurs de ligne[1 2 3 4 5 6 7 8]
(plage de1
à2*W
) et[1 2 3 4 5 6]
(plage de1
à2*H
). Transposer ce dernier et l'ajouter au premier avec diffusion donne la matriceL'indexation modulaire dans la chaîne
\/
produit le résultat souhaité dans la bordure de la matrice:Pour supprimer les valeurs non frontières, nous les définissons sur
0
(lorsqu'il est interprété comme char, il est affiché comme un espace):Code commenté:
la source
Python 2 ,
6968 octets-1 merci à Kevin Cruijssen
Essayez-le en ligne!
la source
\\%s
peut devenir\%s
et\\/
peut devenir\/
.Haskell ,
90888782 octets16 octets enregistrés grâce à LynnEssayez-le en ligne!
Ça me semble encore très long, je vais voir ce que je peux faire.
la source
a#b=[a..b]
et le remplacement de toutes les occurrences permettent d'économiser un octet:a#b=[a..b];x!y|i<-2#x>>" "=(1#x>>"/\\"):(2#y>>['\\':i++"/",'/':i++"\\"])++[1#x>>"\\/"]
a#b=[1..a]>>b;x!y|i<-(x-1)#" "=x#"/\\":(y-1)#['\\':i++"/",'/':i++"\\"]++[x#"\\/"]
sauve en fait 6 ~05AB1E , 14 octets
Essayez-le en ligne!
Explication
Cela ne crée que le coin supérieur gauche, x caractères de large et y caractères de haut. Il reflète ensuite cela sur les deux axes:
la source
JavaScript (ES6), 84 octets
Prend des entrées dans la syntaxe de currying
(w)(h)
.Démo
Afficher l'extrait de code
la source
Swift 3 , 166 octets
Suite de tests complète.
La version de fermeture est un peu plus longue, malheureusement (175 octets):
Suite de tests avec la version de fermeture.
la source
Rétine ,
7773 octetsEssayez-le en ligne! Le lien inclut des cas de test. Prend l'entrée au format
<height> <width>
. Explication:Convertissez les entrées en unaire.
Multipliez les entrées, mais ajoutez une nouvelle ligne pour que le résultat soit un rectangle.
Créez le haut hérissé.
Dupliquez chaque ligne épineuse, mais avec les pointes décalées sur la deuxième ligne.
Supprimez les sauts de ligne de fin.
Supprimez l'intérieur de la boîte. (Notez l'espace sur la dernière ligne.)
la source
Excel, 95 octets
la source
APL (Dyalog) ,
4139 octetsDemande une liste de
[H,W]
Essayez-le en ligne!
⎕-1
invite pour la saisie (mnémonique: console stylisée) et soustraire 12×
multiplier par deux''⍴⍨
utiliser cela pour remodeler une chaîne vide (tampons avec des espaces)⊢
rendement qui (sert à le séparer de4
){
…}⍣4
Appliquez la fonction suivante quatre fois:≢⍵
tally (longueur de) l'argument'/\'⍴⍨
cyclique r Eshape"/\"
à cette longueur⍵,
ajouter cela à droite de l'argument⌽⍉
transposer et miroir (c'est-à-dire tourner à 90 °)¯1⌽1
faire pivoter cycliquement la 1 ère rangée d'un pas vers la droite⊢
rendement qui (sert à le séparer de1
)'\'@2@1
mettre une barre oblique inverse à la 2 e position du 1 er élément majeur.la source
C (gcc) ,
170166158155108105-3 octets grâce à cleblanc
Essayez-le en ligne!
Je pense que cela peut être joué plus loin avec une approche moins simple, je verrai ce que je peux faire quand je trouverai le temps.Ok, je ne trouve pas d'autre moyen de réduire le nombre d'octets pour ce code.
Explication: une simple boucle double imprimant la boîte char par char.
Lors de l'impression d'une bordure: si les coordonnées x et y sont paires ou impaires, elles affichent a
/
, sinon, a\
s'afficheS'il ne s'agit pas d'une bordure, un caractère espace s'affiche à la place
la source
puts("")
dans la première boucle for comme cecix,y;f(w,h){for(y=h*=2;y--;puts(""))for(x=w*2;x--;)putchar(!x|x==w*2-1|!y|y==h-1?x&y&1|~x&~y&1?47:92:32);}
/// ,
172117 octetsDonc, comme la sortie se compose de
///
s etwhitespace
s, il devrait y avoir des soumissions dans ces 2 langues.Mettez l'entrée après le code sous la
W,H
forme d'un nombre unaire (unaire pour /// est autorisé , merci à Challenger5 pour la suggestion) (utilisez*
pour représenter le chiffre, séparé avec,
) le format.Essayez-le en ligne! (avec entrée
W=4, H=3
)la source
Python 3 ,
8782 octetsEdit: 5 octets enregistrés grâce à @officialaimm , @ Mr.Xcoder et @tsh
Essayez-le en ligne!
la source
*(b-1)
peut être*~-b
, pour -2 octets." "*2*~-a
? Justement"__"*~-a
.J, 48 octets
non golfé
explication
Essayez-le en ligne!
la source
' '(<,~<<0 _1)}'\/'{~=/&(2|i.)&+:
. Modifier est super ici.'/\ '{~2(<,~<<0 _1)}2|+/&i.&+:
avec quelques refactoring05AB1E , 19 octets
Essayez-le en ligne!
Prend les arguments inversés.
la source
Haskell ,
8479 octetsEssayez-le en ligne! Exemple d'utilisation:
3%6
donne une liste de lignes. UtilisezmapM putStrLn $ 3%6
pour imprimer la boîte.la source
Java 8, 141 octets
Un lambda au curry de largeur en hauteur jusqu'à la sortie.
Essayez-le en ligne (non, ce
return t+i+o;
n'était pas intentionnel)Lambda non golfé
Cette solution est atypiquement pointilleuse quant à la taille d'entrée car a
char
est utilisé pour compter jusqu'à la largeur entrée. Heureusement, l'algorithme est suffisamment mauvais pour qu'à ces tailles l'achèvement du programme soit probablement déjà un problème. J'ai choisi d'utiliserchar
l'index de boucle afin de pouvoir le réutiliser plus tard comme alias bon marché pour'\n'
.la source
SOGL V0.12 ,
222113 octetsEssayez-le ici! (attend les deux entrées sur la pile donc
..
(et"
parce qu'une chaîne n'a pas été explicitement démarrée) - prendre le numéro d'entrée deux fois est ajouté pour faciliter l'utilisation)Explication:
la source
Mathematica, 87 octets
Essayez-le en mathématiques (il imprime des espaces supplémentaires au début de la plupart des lignes pour une raison quelconque), ou au bac à sable Wolfram ! Prend deux entiers en entrée.
C'est une solution assez naïve, mais toutes les choses intelligentes que j'ai essayées avaient plus d'octets. Quelque chose qui fonctionne presque est
sauf qu'il échoue si l'une des dimensions est 1 (l'entrée est une liste contenant les dimensions).
la source
Pyth ,
40 3938 octetsCela prend les deux entiers séparés par une nouvelle ligne.
Suite de tests complète.
la source
Rubis ,
62 6160 octets-1 octet grâce à Arnauld
Essayez-le en ligne!
la source
En fait , 38 octets
Essayez-le en ligne!
la source
J , 39 octets
Essayez-le en ligne!
Prend deux arguments comme
height
sur le LHS etwidth
sur le RHS.la source
VBA (Excel), 161 octets
la source
Sub b
c=[2*A1]
r=[2*B1]
For i=1To r
For j=1To c
Debug.?IIf(i=1Or j=1Or i=r Or j=c,IIf((i + j)Mod 2,"\","/")," ");
Next
Debug.?
Next
End Sub
c=[2*A1]:r=[2*B1]:For i=1To r:For j=1To c:?IIf(i=1Or j=1Or i=r Or j=c,IIf((i + j)Mod 2,"\","/")," ");:Next:?:Next
R,
160 octets152 octetsEssayez-le en ligne!
Merci BLT d'avoir rasé 8 octets.
la source
s
fonction?s=
bit. Les fonctions anonymes sont autorisées.dc , 123 octets
C'est loin d'être le plus court, mais, si l'on prend les deux dernières lignes et les fait tourner de
pi/2
radians dans le sens des aiguilles d'une montre jusqu'à une position "verticale", cela ressemble à un totem .Prend l'entrée comme deux entiers séparés par des espaces.
Essayez-le en ligne!
la source
Mathematica, 116 octets
la source
Rotate[w,Pi]
est équivalent àw~Rotate~Pi
, commeo["/\\",#]
à"/\\"~o~#
V , 18 octets
Réponse ne nécessiterait pas le
ll
cas<M-h>ollow
laissé seul 2 colonnes char :(Essayez-le en ligne!
la source
C # (.NET Core) , 188 octets
Le nombre d'octets comprend également:
Essayez-le en ligne!
J'ai commencé à faire des explications commande par commande mais cela n'a plus de sens à mi-chemin ... L'essentiel est de faire une boîte pleine de pointes, puis de creuser le milieu. J'ai utilisé Linq dans le but d'utiliser Linq, peut probablement être plus court en utilisant seulement des itérations standard.
Voici une explication allant au milieu (la commande la plus interne en premier):
Tout d'abord, créez des lignes pour la boîte complète et concaténez en une seule chaîne
Ensuite, obtenez chaque caractère dans une ligne, et si ce n'est pas le contour de la boîte, remplacez-le par un espace, concaténez-les à nouveau dans une chaîne pour chaque ligne
Enfin, récupérez chaque ligne et concaténez-les avec des retours à la ligne (comprend également la génération d'une collection pour les lignes)
la source
Perl 5 , 83 + 1 (-n) = 84 octets
Essayez-le en ligne!
la source