Étant donné deux entiers en entrée dans un tableau, dessinez un rectangle, en utilisant le premier entier comme largeur et le second comme hauteur.
Ou, si votre langue le prend en charge, les deux entiers peuvent être donnés comme entrées distinctes.
Supposons que la largeur et la hauteur ne seront jamais inférieures à 3 et qu'elles seront toujours données.
Exemples de sorties:
[3, 3]
|-|
| |
|-|
[5, 8]
|---|
| |
| |
| |
| |
| |
| |
|---|
[10, 3]
|--------|
| |
|--------|
C'est le code-golf, donc la réponse avec le plus petit nombre d'octets l'emporte.
Ị
:)Matlab,
696556 octetsMerci @WeeingIfFirst et @LuisMendo pour quelques octets =)
C'est très simple dans Matlab: créez d'abord une matrice de la taille souhaitée, puis indexez la première et la dernière ligne pour insérer le
-
, et faites de même avec la première et la dernière colonne à insérer|
.Par exemple,
f(4,3)
retournela source
z([1,b],1:a)=45;z(1:b,[1,a])=124;z=[z,'']
z(b,a)=' ';z([1,b],:)=45;z(:,[1,a])=124
z(b,a)=' '
tant que char. Après cela, vous pouvez remplir des nombres et ils sont automatiquement convertis en caractères.z
conserve son type d'origineJavaScript (ES6), 63 octets
la source
Haskell,
6255 octetsExemple d'utilisation:
La fonction d'assistance
f
prend une liste de deux éléments[a,b]
et un nombren
et renvoie une liste d'una
suivi den-2
b
s suivi d'una
. Nous pouvons utiliserf
trois fois: pour construire la ligne supérieure / inférieure:f "|-" i
une ligne médiane:f "| " i
et à partir de ces deux le rectangle entier:f [<top>,<middle>] j
(note:j
n'apparaît pas comme paramètre dans eng i
raison d'une application partielle).Edit: @dianne a sauvé quelques octets en combinant deux
Char
arguments en unString
de longueur 2. Merci beaucoup!la source
#
idée!(a:b)#n=a:([3..n]>>b)++[a]
et en écrivant["|-"#i,"| "#i]#j
Python 2,
6158 octets-3 octets grâce à @flornquake (supprimer les parenthèses inutiles; utiliser
h
comme compteur)Les cas de test sont à l' idéone
la source
('- '[1<i<h])
n'a pas besoin des parenthèses.exec"print'|'+'- '[1<h<%d]*(w-2)+'|';h-=1;"%h*h
h
comme compteur est intelligent! Merci.PHP, 74 octets
la source
!$i|$n==++$i
au lieu de!$i|$n-1==$i++
$i++&&$n-$i?" ":"-"
$i++&&$n-$i?" ":"-"
->"- "[$i++&&$n-$i]
(-2)Vimscript,
9383757473666463 octetsCode
Exemple
Explication
Notez qu'il n'utilise pas
norm!
, il peut donc interférer avec les mappages personnalisés vim!la source
MATL , 19 octets
Essayez-le en ligne!
Explication
L'approche est similaire à celle utilisée dans cette autre réponse . Le code construit un tableau numérique de la forme
puis ses valeurs sont utilisées comme indices (modulaires basés sur 1) dans la chaîne
'|-| '
pour produire le résultat souhaité.la source
05AB1E ,
232220 octetsEntrée prise en hauteur, puis en largeur.
Explication
Essayez-le en ligne!
Enregistré 2 octets grâce à Adnan
la source
F„ -N_N¹<Q~è²Í×'|.ø,
.C, 73 octets
la source
Python 2, 56 octets
flornquake a enregistré un octet.
la source
%c
conversion:'-%*c'%(h-1,45)
%*c
n'était même rien! Je vous remercie. :)'-%%%dc'%~-h%45
fonctionne également pour la même longueur.Lisp commun, 104 octets
Golfé:
Non golfé:
la source
Turtlèd , 40 octets
L'interprète n'est plus
unpeu buggéExplication
la source
Mathematica,
6764 octetsMerci à lastresort et TuukkaX de m'avoir rappelé que les golfeurs devraient être sournois et économiser 3 octets!
Mise en œuvre simple. Renvoie un tableau de chaînes.
la source
0<1
à la place deTrue
j==1
peut être réduit àj<1
eti==1
ài<1
.Python 3,
10495 octets(rétroaction de @ mbomb007: -9 octets)
(mon premier code de golf, appréciez les commentaires)
la source
range(y)
place derange(0,y)
, et si cen
n'est jamais négatif, vous pouvez utiliserif n<1or n==~-y else
Lot, 128 octets
Prend la largeur et la hauteur comme paramètres de ligne de commande.
la source
Haxe,
112106 bytesTestcases
la source
Java 135 bytes
Golfed:
la source
o+=x "|\n"
? Did you mean to put an+
there?PowerShell v3+, 55 bytes
Prend entrée
$a
et$b
. Boucles de1
à$b
. Chaque itération, nous construisons une seule chaîne. Le milieu est sélectionné dans un tableau de deux chaînes de longueur unique, puis multiplié par des chaînes$a-2
, alors qu'il est entouré de tuyaux. Les chaînes résultantes sont laissées sur le pipeline et la sortie via impliciteWrite-Output
se produit à la fin du programme, avec un séparateur de nouvelle ligne par défaut.Alternativement, également à 55 octets
Celui-ci est venu parce que j'essayais de jouer au golf la sélection de tableau au milieu en utilisant une chaîne à la place. Cependant, comme les
[char]
temps[int]
ne sont pas définis, nous perdons les économies en ayant besoin de lancer une chaîne avec des parens et''+
.Les deux versions nécessitent la version 3 ou plus récente pour l'
-in
opérateur.Exemples
la source
PHP, 82 octets
indexation d'une chaîne statique, y compris la nouvelle ligne
la source
Ruby,
595452 bytesOh, that's a lot simpler :)
Test run at ideone
la source
\n
.i
andj
. Replacei
's definition withx-=2
. Instead ofj
, just use(y-2)
.Perl, 48 bytes
Includes +1 for
-n
Give sizes as 2 lines on STDIN
Just the code:
la source
Lua,
12093 bytesSaved quite a few bytes by removing stupid over complexities.
Ungolfed:
Try it on Repl.it
la source
Python 2, 67 bytes
Examples
la source
MATL,
2117 bytesThis is a slightly different approach than the one of the MATL-God.
Thanks @LuisMendo for all the help!
Try it Online!
la source
PHP 4.1, 76 bytes
This assumes you have the default
php.ini
settings for this version, includingshort_open_tag
andregister_globals
enabled.This requires access through a web server (e.g.: Apache), passing the values over session/cookie/POST/GET variables.
The key
W
controls the width and the keyH
controls the height.For example:
http://localhost/file.php?W=3&H=5
la source
Python 3, 74 chars
la source
Swift(2.2) 190 bytes
I think Swift 3 could golf this a lot more but I don't feel like downloading Swift 3.
la source
F#, 131 bytes
la source