Écrivez un programme qui saisit les dimensions d'une peinture, la largeur du passe-partout et la largeur du cadre pour un portrait encadré. Le programme doit produire un diagramme utilisant le symbole X
de la peinture, +
du tapis et #
du cadrage. Les symboles doivent être séparés par des espaces. L'espace de fin est correct, tant que la sortie correspond visuellement aux critères. Les entrées peuvent être0
.
ENTRÉE: 3 2 1 2 (largeur, hauteur, largeur mate, largeur du cadre)
SORTIE:
Sous forme de texte:
# # # # # # # # #
# # # # # # # # #
# # + + + + + # #
# # + X X X + # #
# # + X X X + # #
# # + + + + + # #
# # # # # # # # #
# # # # # # # # #
Le code gagnant complète les conditions dans le moins d'octets possible.
Réponses:
Python 2 , 98 octets
Essayez-le en ligne!
Imprime une grille séparée par des espaces, en suivant strictement les spécifications. Je suis amusé qui
*=
est utilisé pour convertira
etb
des nombres en chaînes.Python 3 peut économiser quelques octets en évitant
' '.join
, peut-être plus en utilisant des chaînes f et des expressions d'affectation. Merci à Jo King pour -2 octets.Python 3 , 93 octets
Essayez-le en ligne!
la source
JavaScript (ES6),
118 113107 octetsEssayez-le en ligne!
Commenté
la source
MATL , 24 octets
L'entrée est: Hauteur, Largeur, Largeur mate, Largeur du cadre.
Essayez-le en ligne!
Explication
la source
Wolfram Language (Mathematica) , 142 octets
Essayez-le en ligne!
la source
Fusain ,
484744 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Remarque: Espace de fin. Edit: utilise maintenant l'algorithme @ xnor. Explication:
Saisissez la largeur et la hauteur et convertissez-les en chaînes de
X
s.Faites une boucle sur les caractères
+
et#
convertissez-les en chaînes de longueur données par les deux entrées restantes. Faites ensuite une boucle sur ces deux chaînes.Préfixez et suffixez le tableau avec les cordes pour le passe-partout et l'encadrement.
Faites une boucle sur les chaînes, en prenant le minimum des caractères horizontaux et verticaux, puis en double-espaçant les lignes, imprimant implicitement chaque ligne sur sa propre ligne.
la source
05AB1E (hérité) / 05AB1E
--no-lazy
,3231 octetsPrend l'entrée dans l'ordre
height, width, matte, frame
. Si l'ordre d'entrée spécifié dans le défi est strict (toujours en attente de vérification pour OP), uns
(swap) peut être ajouté pour +1 octet.Requis le
--no-lazy
drapeau du compilateur Elixir dans la nouvelle version de 05AB1E, car Elixir a un comportement étrange en raison de l'évaluation paresseuse des cartes / boucles imbriquées ( ici le résultat sans ce drapeau ).Essayez-le en ligne dans la version héritée de 05AB1E.
Essayez-le en ligne dans la nouvelle version de 05AB1E avec
--no-lazy
drapeau ajouté .Explication:
la source
Gelée , 17 octets
Essayez-le en ligne!
Argument 1:
[Frame width, Matte width]
Argument 2:
[Width, Height]
la source
Canevas , 24 octets
Essayez-le ici!
Doit être 5 octets plus court, mais ce n'est pas le cas car Canvas est bogué.
la source
R , 119 octets
Essayez-le en ligne!
la source
Python 3.8 (pré-version) ,
116115113 octetsEssayez-le en ligne!
La première tentative de golf sera bientôt améliorée.
a
est la largeur, lab
hauteur, lac
largeur mate etd
largeur du cadre.-1 octets utilisant l'
:=
opérateur pour définirh
commee * d
-2 octets grâce à Jo King me suggérant de supprimer les paramètres e et f
EXPLICATION:
la source
e
affectation vous fait économiser deux octets, l'f
affectation ne vous fait rien économisere
etf
après avoir découvert leg
raccourciJavascript, 158 octets
Peut probablement être réduit un peu
la source
Perl 6 , 98 octets
Essayez-le en ligne!
Il s'agit d'un portage de la réponse Python de xnor .
Perl 6 , 115 octets
Essayez-le en ligne!
Un bloc de code anonyme approximativement utilisé en utilisant l'affectation de liste multidimensionnelle de Perl 6. Par exemple,
@a[1;2] = 'X';
affectera'X'
à l'élément avec l'index 2 de la liste avec l'index 1, et@a[1,2,3;3,4,5]='X'xx 9;
remplacera tous les éléments avec les index3,4,5
des listes avec les index1,2,3
avec'X'
.Explication:
Tout d' abord, nous avons la liste initialisez comme
a+2*(c+d)
parb+2*(c+d)
rectangle de#
s.Ensuite, nous attribuons le rectangle intérieur de
+
sEnfin, le rectangle le plus à l'intérieur de l'
X
art.la source
Gelée ,
35312824 octetsEssayez-le en ligne!
Prend l'entrée dans le cadre de commande, mat, largeur, hauteur; séparées par des virgules. Sort l'image ASCII-art avec cadre et mat. Si l'ordre d'entrée est strict, j'aurais besoin d'ajouter plus d'octets (selon mon message d'origine).
Quelques golfs basés sur la réponse de @ EriktheOutgolfer; J'avais réalisé que les personnages étaient en ordre ASCII, mais je n'avais pas pensé comment tirer le meilleur parti de cela, et j'avais oublié
G
. C'est quand même une meilleure réponse!la source
43134
aura besoin de 3 caractères d'encodage, dont un caractère de début / fin pour indiquer qu'il est codé sera également de 5 octets. Et Jelly a peut-être un double, car le deuxième nombre est 100 plus grand que le premier? Vous ne savez pas si les actions poussent 43134, dupliquer, pousser 100, plus, la paire est possible et plus courte dans Jelly?Perl 5, 115 octets
TIO
la source
PowerShell , 132 octets
Essayez-le en ligne!
la source