Étant donné une entrée de deux entiers n et m , sortez une échelle ASCII de longueur n et de taille m .
Il s'agit d'une échelle ASCII de longueur 3 et de taille 3:
o---o
| |
| |
| |
+---+
| |
| |
| |
+---+
| |
| |
| |
o---o
Il s'agit d'une échelle ASCII de longueur 5 et de taille 1:
o-o
| |
+-+
| |
+-+
| |
+-+
| |
+-+
| |
o-o
Il s'agit d'une échelle ASCII de longueur 2 et de taille 5:
o-----o
| |
| |
| |
| |
| |
+-----+
| |
| |
| |
| |
| |
o-----o
Pour être précis:
La longueur ( n ) représente le nombre de carrés de l'échelle.
La taille ( m ) représente la largeur et la hauteur de l'intérieur - c'est-à-dire, sans compter les «bordures» - de chaque carré.
Chaque carré est composé de la zone intérieure remplie d'espaces, entourée de
-
s en haut et en bas,|
s à gauche et à droite et+
s aux quatre coins.Les frontières entre les carrés fusionnent, donc deux lignes consécutives avec
+--...--+
fusion en une seule.Les coins de l'échelle entière sont remplacés par le personnage
o
.Vous pouvez éventuellement afficher une nouvelle ligne de fin.
La longueur de l'échelle ( n ) sera toujours ≥ 2 et la taille ( m ) sera toujours ≥ 1.
L'entrée peut être considérée comme une chaîne séparée par des espaces / virgules, un tableau / liste / etc., Ou deux fonctions / ligne de commande / etc. arguments. Les arguments peuvent être pris dans l'ordre le plus pratique / le plus golfique.
Puisqu'il s'agit de code-golf , le code le plus court en octets l'emporte.
Conseil: Les exemples ci-dessus peuvent également être utilisés comme cas de test.
Réponses:
Pyth, 34 octets
Suite de tests
Prend les arguments de nouvelle ligne séparés sur STDIN.
Utilise une fonction d'assistance
:
, qui construit chaque type de chaîne verticale à partir de trois caractères, puis réplique si nécessaire, transpose et joint sur les nouvelles lignes.la source
Rubis, 71
non golfé dans le programme de test
la source
;
aprèsh=0
, besoin d'espace aprèsputs
. Mais vous marquez ne grandit qu'avec 1 caractère car il y a un espace supplémentaire avantputs
.CJam,
4342 octetsJe ne suis pas sastifié par le score. Mais je ne suis pas Dennis, non?
L'entrée consiste en 2 éléments séparés par des espaces. Longueur d'abord
Explication
la source
JavaScript (ES6), 89
... répéter, répéter, répéter ...
Tester
la source
document.getElementById('elem').
pourrait être remplacé parelem.
! +1 pour cela, mais s'il vous plaît, pourriez-vous signaler quelques documents à ce sujet?C #, 1412 octets
... Ma première tentative CodeGolf, pas susceptible de gagner, mais cela fonctionne alors nous y voilà:
la source
using System;class P{static int m;static void Main(){int n = int.Parse(Console.ReadLine());m = int.Parse(Console.ReadLine());M('o','-');for(int k=0;k<n;k++){for(int i=0;i<m;i++){M('|',' ');}if(k!=n-1){M('+','-');}}M('o','-');Console.ReadKey();}static void M(char x,char y){Console.WriteLine(x+new string(y,m)+x);}}
using System;class P{static int m;static void Main(){int n=int.Parse(Console.ReadLine());m=int.Parse(Console.ReadLine());M('o','-');for(int k=0;k<n;k++){for(int i=0;i<m;i++){M('|',' ');}if(k!=n-1){M('+','-');}}M('o','-');Console.ReadKey();}static void M(char x,char y){Console.WriteLine(x+new string(y,m)+x);}}
using C=System.Console;class P{static void Main(){int i,k,n=int.Parse(C.ReadLine()),m=int.Parse(C.ReadLine());System.Action<char,char> M=(x,y)=>C.WriteLine(x+new string(y,m)+x);M('o','-');for(k=0;k<n;k++){for(i=0;i<m;i++){M('|',' ');}if(k<n-1){M('+','-');}}M('o','-');}}
. Cependant, il y a probablement plus de potentiel ici, simplement en changeant un peu la façon de faire les choses.Julia, 87 octets
Il s'agit d'une fonction qui accepte deux entiers et renvoie une chaîne.
Non golfé:
la source
pb - 147 octets
C'est le genre de défi auquel, par droits, pb devrait être vraiment bon. Dessiner des images simples avec des personnages est exactement ce pour quoi pb a été conçu. Hélas, c'est juste un langage verbeux, je suppose.
Prend d'abord la longueur d'entrée, suivie de la taille. Prend l'entrée sous la forme de valeurs d'octets, par exemple:
python -c 'print(chr(5) + chr(7))' | ./pbi.py ladder.pb
Regardez, une animation amusante!
Avec commentaires:
la source
Pure bash,
132 130 128127 octetsOui, je pourrais supprimer 1 octet de plus en remplaçant le dernier
${p% *}
, mais je préfère ceci:Échantillon:
la source
Haskell,
10097 octetsExemple d'utilisation:
Comment ça marche:
Edit: @Christian Irwan a trouvé 3 octets. Merci!
la source
m=init$[1..l]>>("|"!" "<$u)++["+"!"-"]
(_:m)=[1..l]>>["+"!"-"]++("|"!" "<$u)
_:m=[1..l]>>["+"!"-"]++("|"!" "<$u)
fonctionnebrainfuck - 334 octets
Je m'attendais à ce que ce soit beaucoup plus court.
Cela met en place une "chaîne" qui ressemble
| (...) |
et celle qui ressemble+----(...)----+
, en imprimant chacune si nécessaire, avec un boîtier spécial pour leso
s en haut et en bas.Nécessite un interprète qui utilise des cellules 8 bits et vous permet d'aller à gauche de la cellule 0 (que ce soit dans des cellules négatives ou en boucle). D'après mon expérience, ce sont les paramètres par défaut les plus courants.
Avec commentaires:
la source
PowerShell, 77
80la source
Jolf, 36 octets
Essayez-le ici!
Explication
la source
Perl, 98 octets
la source
+
signe dans votre code, avez-vous considéré que les barreaux intermédiaires ont des+
signes à chaque extrémité?($n,$m)=@ARGV;
et de supposer que ceux-ci sont déjà définis - je ne sais pas si c'est dans l'esprit ou non. Je vais devoir chercher.@ARGV
. De plus, lorsque vous répondez à quelqu'un, n'oubliez pas d'inclure @username afin qu'il reçoive une alerte. Je n'ai pas besoin de le faire car c'est votre message.C, 122 octets
Essayez-le en ligne .
la source
Tcl, 187 octets
Ce code est conçu pour être placé dans un fichier contenant des arguments sur la ligne de commande. fournir le nombre de boîtes et la largeur dans cet ordre.
la source
PHP, 81 octets
Attend 2 arguments, passés lors de l'appel direct de la commande PHP. Le premier est la taille et le second est le nombre d'étapes.
Peut nécessiter quelques améliorations.
la source
Python 2, 94 octets
'Ungolfed':
la source
Perl 5 , 91 + 1 (-a) = 92 octets
Essayez-le en ligne!
la source
Pip
-l
, 35 octetsEssayez-le en ligne!
Explication
Quelques autres versions
J'ai essayé beaucoup d'approches différentes en essayant d'attraper Pyth ...
J'aime particulièrement
t**b
ceux qui utilisent les mathématiques pour générer le motif vertical de l'échelle:Le
1000200020001
peut ensuite être utilisé pour générer les motifso|||+|||+|||o
et- - - -
, qui composent l'échelle. Malheureusement, je n'ai pas pu obtenir que cette approche soit plus courte que l'approche join / wrap.la source