Affiche pour la première fois depuis longtemps.
Écrivez un programme qui prend 3 entrées: X, Y et Z.
- X = sur (colonnes)
- Y = bas (lignes)
- Z = marqueur de position
Le programme doit ensuite imprimer une grille visuelle X en travers et Y en bas. Cette grille peut être composée de n'importe quel caractère sauf "+". Chaque «emplacement» reçoit un numéro d'index, en comptant à partir de 1 à la coordonnée 1, 1 à travers puis en descendant jusqu'à la fin.
X et Y seront toujours au moins 3, et Z ne sera jamais plus grand que X * Y
.
Z représentera l'emplacement qui est imprimé en "+", sur l'emplacement ainsi que 1 caractère à gauche, à droite, en haut et en bas. Par exemple:
+
+++
+
Enfin, si les caractères + interceptent les bords (le plus haut, le plus à gauche, le plus à droite et / ou le plus bas), alors le + devrait rebondir le long du même axe et déborder de l'autre côté.
Exemples: entrée = 5, 5, 13
-----
--+--
-+++-
--+--
-----
Entrée = 10, 10, 10
-------+++
---------+
---------+
----------
----------
----------
----------
----------
----------
----------
Entrée = 10, 10, 21
----------
+---------
+++-------
+---------
----------
----------
----------
----------
----------
----------
Edit: exemple non carré 16,3,32
---------------+
-------------+++
---------------+
Je pense que j'ai tout couvert. Il ne devrait y avoir aucune limite à l'entrée, mais si votre programme l'exige, limitez-le à 64 * 64.
Point bonus (est-ce que je peux faire ça?): L' entrée Z ne doit pas être> X * Y, mais si elle est plus grande que Y * Z, alors sortez le centre + au milieu de la grille.
EDIT: l' entrée Z ne peut pas être supérieure à X * Y
Modifier 2:. Apporté quelques changements à X et Y pour être plus clair, espérons
C'est le golf de code, le code le plus court gagne.
Réponses:
Python 2,
172171 octetsEdit: sauvé 1 octets en le convertissant en fonction.
Précédent (plus lisible):
la source
JavaScript (ES6), 165 octets
la source
Befunge, 175 octets
Essayez-le en ligne!
La première ligne (et une courte continuation sur la deuxième ligne) est l'endroit où les paramètres sont lus et quelques constantes sont calculées - les coordonnées de l'emplacement ( lx , ly ), ainsi que les coordonnées ajustées qui tiennent compte du rebond sur le bords:
Les deuxième et troisième lignes contiennent les boucles principales sur la hauteur et la largeur de la grille, le chemin d'exécution allant de droite à gauche au départ avant de tourner sur la troisième ligne de gauche à droite. Pour chaque coordonnée de la grille ( gx , gy ), nous calculons la condition suivante:
Si cette condition est vraie, nous poussons a
"+"
sur la pile, si faux nous poussons a"-"
. Pour éviter la ramification ici, nous poussons vraiment43 + 2 * !condition
(43 étant la valeur ASCII de plus et 45 étant moins).Une fois les boucles terminées, le dernier bit de code n'est plus qu'une routine de sortie standard qui imprime tout sur la pile.
la source
JavaScript (ES6), 170
Toujours jouable au golf
Moins golfé
Tester
la source