Votre tâche consiste à générer des boîtes en utilisant n'importe quel caractère ASCII par rapport aux entrées fournies.
Cas de test
1 1 --> =====
= =
=====
1 2 --> =========
= = =
=========
2 1 --> =====
= =
=====
= =
=====
2 2 --> =========
= = =
=========
= = =
=========
2 5 --> =====================
= = = = = =
=====================
= = = = = =
=====================
Contribution
L'entrée peut être prise à partir de l'un des éléments suivants
stdin
- Arguments de ligne de commande
- Arguments de fonction (2 arguments, un pour chaque nombre)
L'entrée, si elle est extraite de
stdin
ou des arguments de ligne de commande, contiendra deux entiers positifs, séparés par un espace.- Les deux nombres indiquent le nombre de cases dans chaque colonne et ligne
Production
- Les boîtes doivent être sorties
stdout
(ou l'équivalent le plus proche) - Chaque boîte doit contenir trois espaces horizontaux
Règles
- Les deux nombres seront supérieurs à 0, mais ne dépasseront pas 1000
- Tout caractère visible peut être utilisé pour sortir les boîtes. (tant qu'ils ne sont pas trop durs pour les yeux!)
- Vous êtes autorisé à écrire un programme complet ou une fonction.
- Il ne doit pas y avoir de caractères inutiles à l'exception d'un caractère de retour à la ligne facultatif.
Notation
Il s'agit de code-golf , donc la soumission la plus courte (en octets) l'emporte.
JavaScript ( ES6 ), 83
Une fonction avec des lignes et des colonnes de paramètres. À l'aide de chaînes de modèle, il y a 2 sauts de ligne intégrés qui sont significatifs et comptés.
Sortie via
alert
(popup). Enalert
utilisant une police proportionnelle, nous obtenons un meilleur résultat en utilisant une lettre avec une largeur similaire à l'espace au lieu de=
.Testez dans Firefox en utilisant la console pour avoir la
alert
sortie réelle , ou exécutez l'extrait ci-dessous.la source
Test in Firefox
JavaScript (ES6),
7573En utilisant des
repeat
appels copieux , nous répétons|
, puis répétons|
avec des espaces de fin, et répétons ces deux répétitions pour faire des lignes:(Les nouvelles lignes sont importantes, selon la suggestion d'edc65 d'utiliser des chaînes de modèle.)
Fragment:
Sans chaînes de modèle, sans réutilisation de nom de méthode et avec des espaces supplémentaires:
(En utilisant la recommandation d' edc65 à utiliser
|
pour un meilleur espacement visuel.)la source
Pip,
2924 = 23 + 1 octetsNécessite le
-n
drapeau. Prend la hauteur et la largeur comme arguments de ligne de commande et construit des boîtes de1
s.Explication:
Ce programme profite largement du fait que les chaînes sont des nombres et que les nombres sont des chaînes dans Pip. (Et les trois espaces dans ces cases se sont avérés être parfaits pour profiter de la
m
variable intégrée !)Voici comment la liste est construite avec l'entrée
2 3
:Et la sortie finale:
Plus sur Pip
la source
Perl,
72635250 octetsMa version la plus courte utilise encore
$/
pour obtenir un caractère de nouvelle ligne de manière plus compacte:La mise à jour précédente place les lignes principalement vides dans le séparateur d'enregistrements de sortie
$,
et imprime une liste de lignes continues.La version précédente pourrait être un peu plus claire pour le lecteur occasionnel:
La première version utilisée
@ARGV
au lieu depop
:la source
Python 2,
5857 octetsMise en œuvre assez simple.
Vérifiez le ici.
Merci à Sp3000 pour avoir sauvé un octet.
la source
GNU sed -r, 160
Soupir, je pensais que ce serait plus petit, mais le voici quand même. Malheureusement, les expressions rationnelles sed n'ont aucune capacité de recherche.
Prendre la saisie comme unaire de STDIN:
la source
CJam, 25 octets
Essayez-le en ligne dans l' interpréteur CJam .
Comment ça fonctionne
la source
Marbelous, 168 octets
Cette réponse ne fonctionne que jusqu'à 255x255, pas 1000x1000, en raison des limitations du langage Marbelous. Je travaille sur une bibliothèque 32 bits, mais elle ne sera pas prête de sitôt.
L'entrée est fournie sous forme de deux paramètres de ligne de commande ou paramètres de fonction à la carte principale.
Pseudocode:
la source
CJam
52514641 octetsMerci à Sp3000 pour -5 caractères
Merci à Martin Büttner ♦ pour encore 5 caractères
Essayez-le
la source
fonction c, 81
Programme de test:
la source
x;f(h,w){for(w=w*4+2;x<=w*h*2+w;x++)putchar(x%w?x/w%2?x%w%4!=1?32:61:61:10);}
- 78PHP4.1,
767169 octetsC'est aussi golfique que possible.
Cela attend que la clé
H
ait le nombre de lignes etV
le nombre de cases par ligne.J'utilise
-
et|
juste pour que les boîtes ressemblent à des boîtes. Si nécessaire, je peux le remplacer par=
. Peu importe le caractère utilisé.Partir
-
et|
aide également à comprendre le gâchis qui se passe.Ancienne méthode, 76 octets:
Exemple de sortie:
la source
Julia, 59 octets
Cela crée une fonction sans nom qui accepte deux entiers en entrée et imprime le résultat dans STDOUT. Pour l'appeler, donnez-lui un nom, par exemple
f=(n,m)->...
.Non golfé + explication:
Exemples:
Toutes suggestions sont les bienvenues.
la source
bash + coreutils, 57
Cela permet
dc
d'imprimer des nombres binaires qui ont1
s pour les bords de la boîte et0
s pour les espaces.2 ^ (width * 4 + 1) - 1
, puis poussé et imprimé10001...0001
nombre est calculé par , puis pousséX
* 8 / 15 + 1
height
foisLe
tr
convertit ensuite le0
s en espace.Production
la source
R,
8381En tant que fonction sans nom prenant h et w comme paramètres. Construit la 1ère et la deuxième lignes en un vecteur pour chaque ligne et le reproduit
h
fois. Ajoute un vecteur pour la ligne du bas etcat
supprime le vecteur en utilisantfill
pour restreindre la longueur des lignes. Profite désormais de la règle des caractères visibles.Essai
la source
Python
32,160878579 octetsJe sais que cela peut être beaucoup plus joué au golf, je voudrais quelques suggestions car c'est mon premier essai de golf.
Grâce aux astuces de @Cool Guy et @ Sp3000, j'ai réduit la taille juste
au-dessous de la moitié.Par exemple: d (3,3)
Essayez-le ici .
Excusez les espaces blancs qui suivent.
la source
'='*(4*y+1)
w=4*y+1
enregistre 3 octets.KDB (Q), 37 octets
Explication
Tester
la source
JavaScript,
9285 octetsJ'avais espéré que ce serait plus court que l'autre réponse JS (beau travail comme toujours, edc65), mais bon. J'ai le sentiment que les mathématiques ici peuvent être approfondies.
la source
f=(r,c)=>(x=>{for(i=s='';(y=i++/x)<r-~r;)s+=i%x?' *'[-~y%2|!(-~i%4)]:'\n'})(4*c+2)||s
-> 852*r+1
=>r-~r
sont exactement ce que je voulais dire en jouant au golf, et celui-là en particulier est le génie. :)Octave,
696564Merci à DLosc d'avoir signalé les problèmes qui ont mené à -1
Prend les entrées
[1 1]
et les sorties:Vous pouvez également simplement saisir «1» et obtenir 1x1. Si l'entrée doit vraiment l'être
1 1
, la taille monte jusqu'à888584 :Remarque: Matlab ne permet pas le chaînage ou l'entrée d'Octave (entier), mais voici la version de Matlab ( 67 ):
la source
C, 76 octets
Appelé en tant que fonction avec un nombre de lignes et de colonnes comme arguments. Par exemple:
la source
CJam,
3029 octetsNouvelle version avec redondance
+
à la fin supprimée (merci, Dennis):Je sais que Dennis a déjà publié une solution CJam qui bat cela de plusieurs kilomètres. Mais c'est ma toute première tentative de CJam, c'est donc un miracle que cela fonctionne du tout. :)
Force assez brute. Construit la première ligne à partir de
4 * H + 1
=
signes, puis la deuxième ligne à partir de fois=
répétéesH
, avec une autre=
ajoutée. Concatène ensuite les deux lignes, répète toutes lesV
fois, puis ajoute une autre copie de la première ligne.J'ai l'impression d'avoir trop de manipulations de pile, et j'ai même fini par stocker la première ligne dans une variable parce que je devais encore plus mélanger les choses sur la pile.
Pas très élégant dans l'ensemble, mais il faut commencer quelque part ... et je voulais d'abord essayer un problème simple.
la source
+
à la fin. CJam imprime la pile entière.CJam, 23
Essayez-le en ligne
Explication:
la source
Dart, 57
Essayez-le sur: https://dartpad.dartlang.org/36ed632613395303ef51
la source
Java, 181
J'espère que selon
il est conforme aux règles de compter les octets de la fonction , qui est 181 dans ce cas
la source
for(r=R;r-->0;){x=y=e;for(c=C;c-->0;){x+=a;y+="= ";}s+=x+n+y+n;}
àfor(r=R;r-->0;s+=x+n+y+n){x=y=e;for(c=C;c-->0;y+="= "){x+=a;}}
C #,
153151150Cela ne peut pas vraiment rivaliser mais ici, c'est juste pour le plaisir:
Comment exécuter:
Ouvert aux améliorations.
la source
int
s en dehors de la boucle peut sauver un octet.Python 2.7, 66 octets.
Je sais qu'il existe déjà de meilleures solutions en python, mais c'est la meilleure que j'ai trouvée.
Exemple:
la source
Rubis,
574845Usage:
Merci à manatwork pour avoir économisé 3 octets.
la source
'='
→?=
et"<LF>"
→$/
.?=*(w*4+1)
→?=+?=*w*4
Java,
123119 octetsL'utilisation abusive des paramètres d'entrée en tant que compteurs a grandement aidé à réduire la taille du code.
Merci à Cool Guy d'avoir suggéré l'abus de pour la syntaxe.
la source
for
boucle au lieu d'unewhile
boucle.while(w-->0){d+=" =";b+="====";}
->for(;w-->0;b+="====")d+=" =";
qui économise trois octetsSAS,
117119Exemple:
Résultat:
la source
DNS_PROBE_FINISHED_NXDOMAIN