Nous avons un jardin carré de 10x10 mètres à l'extérieur de notre maison. Nous voulons planter de l'herbe et faire une terrasse. Nous avons décidé comment diviser le jardin, mais nous n'avons pas décidé du rapport entre la quantité d'herbe et la terrasse.
Nous avons besoin d'aide pour le visualiser, et l'art ASCII est clairement le meilleur moyen de le faire.
Défi:
Prenez un entier dans la plage inclusive [0, 100] (ou éventuellement décimal [0, 1]) représentant le pourcentage de jardin qui devrait être en terrasse.
Un mètre carré de terrasse sera représenté par un tiret -
ou une barre |
. Un mètre carré d'herbe sera représenté par une marque de hachage #
.
- Si la quantité de terrasse est inférieure ou égale à 50%, le jardin doit être recouvert de barres, en commençant dans le coin inférieur gauche, et rempli verticalement, puis horizontalement.
- Si la quantité de terrasse est supérieure à 50%, nous voulons que le platelage soit dans l'autre sens (tirets au lieu de barres), et en commençant dans le coin inférieur gauche, et remplissez horizontalement, puis verticalement.
Exemples:
N = 25%
||########
||########
||########
||########
||########
|||#######
|||#######
|||#######
|||#######
|||#######
N = 75%
##########
##########
-----#####
----------
----------
----------
----------
----------
----------
----------
N = 47%
||||######
||||######
||||######
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
N = 50%
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
N = 51%
##########
##########
##########
##########
-#########
----------
----------
----------
----------
----------
N = 0%
##########
##########
##########
##########
##########
##########
##########
##########
##########
##########
N = 100%
----------
----------
----------
----------
----------
----------
----------
----------
----------
----------
C'est le code-golf donc le code le plus court en octets gagne. Règles standard concernant les E / S. C'est de l'art ASCII, donc la sortie devrait ressembler aux exemples ci-dessus. C'est-à-dire que la sortie ["|", "|" ...]
n'est pas OK.
Les explications sont encouragées comme toujours :)
Réponses:
APL (Dyalog) , 34 octets
Fonction de préfixe anonyme attendant un entier compris entre 0 et 100. Suppose que
⎕IO
( I ndex O rigin) est0
, ce qui est le cas par défaut sur de nombreux systèmes.Essayez-le en ligne!
{
…}
Lambda;⍵
est l'argument:'#-|[
…]
Indexez la chaîne avec le tableau suivant:50≥⍵
1 si 50 est supérieur ou égal à l'argument, sinon 0s←
magasin à s (pour s mall)1+
incrément⍵⍴
cyclique r Eshape à longueur d'argument100↑
prenez la première centaine de cela, remplissez de zéros10 10⍴
r forme à dix lignes et dix colonnes⊢
rendement qui (séparés
de10 10
)⍉⍣s
transposer si petit⊖
retourner à l'enversla source
{⊖⍉⍣c⊢10 10⍴(⍵/'-|'⊃⍨c←⍵≤50),100/'#'}
99/'#'
⍴
J ,
39, 3837 octetsComment ça fonctionne:
Essayez-le en ligne!
la source
{.
avec un argument dépassant les limites est une bonne astuce.(]|.@|:_10{&'#|-'\100{.1+$)>&50
_100{.
les remplissages au début, mais j'ai dû inverser chaque ligne, alors j'ai abandonné.JavaScript (ES6), 84 octets
Prend l'entrée comme un entier dans [0 ... 100] .
Cas de test
Afficher l'extrait de code
Formaté et commenté
la source
Python 2 ,
121117116 116 octetsEssayez-le en ligne!
la source
[i*10:-~i*10]
possible[i*10:][:10]
.Gelée , 23 octets
Essayez-le en ligne!
Modifiez le nombre avant
Ç
dans le pied de page pour modifier l'entrée. Fonctionne comme un lien monadique dans un programme sans arguments de ligne de commande, ce qui est autorisé .la source
ȷ2
->³
)SWI Prolog, 249 octets
La solution est assez simple. La procédure
a
crée des lignes,l
écrit des caractères dans les colonnes d'une ligne etr
décide quel caractère doit être imprimé.la source
G<51
devrait fonctionner au lieu deG<=50
.MATL , 26 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
Python 2 , 85 octets
Essayez-le en ligne!
Dans les deux cas, chaque ligne est complétée à droite par
#
une longueur de 10, ce qui nous permet de partager ce code entre les deux cas. Le nombre 10 a été utilisé assez souvent pour que l'aliasingT=10
enregistre un nombre décent d'octets.la source
51
et après, il manque une rangée.Rubis ,
9282 octetsEssayez-le en ligne!
Comment ça fonctionne:
Chaque cellule de la grille a un numéro progressif partant du coin inférieur gauche et se poursuivant horizontalement ou verticalement en fonction de la valeur de n:
Si
n>50
, le nombre est100-y*10+x
sinon c'estx*10+9-y
la source
Fusain , 25 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
la source
Husk , 24 octets
Essayez-le en ligne!
Explication
la source
SOGL V0.12 , 21 octets
Essayez-le ici!
Explication:
la source
dc ,
210197 octetsEssayez-le en ligne!
la source
APL (Dyalog Classic) , 33 octets
Essayez-le en ligne!
basé sur la réponse d'Adám
⎕d
est la chaîne'0123456789'
∘.,
produit cartésien⍨
avec lui-même⍎¨
évaluer chacun - obtenir une matrice 10x10 de 0..99⍵>
matrice booléenne pour laquelle l'argument⍵
est plus grand⊢
agit comme séparateur(⍉+⍨)⍣(⍵≤50)
si ⍵≤50 doublez la matrice (+
avec elle-même) et transposez (⍉
)⊖
inversion verticale'#-|'[ ]
indexer la chaîne'#-|'
avec chaque élément de la matricela source
q , 51 octets
la source
Rétine ,
7262 octetsEssayez-le en ligne! Le lien inclut des cas de test. Edit: 10 octets enregistrés avec l'aide de @MartinEnder. Explication:
Répétez
|
le nombre de fois donnéMais si l'entrée était d'au moins 51, remplacez-les par l'
-
art.Ajouter 100
#
s.Divisez-vous en 10 groupes de 10, jetez tout ce qui reste.
Si l'entrée était au moins 51, transposez le résultat.
Triez le résultat.
Solution alternative, également 62 octets:
Le tri avant la transposition permet d'économiser un octet sur la condition de transposition mais coûte un octet pour obtenir le résultat dans le bon ordre.
la source
#
de la premièreO
étape, car ce$.%`
sera tout au plus9
. Vous pouvez également économiser un octet en évitant la boucle au prix d'une autre étape de tri à la fin, comme ceci: tio.run/##K0otycxL/… Il y a probablement même un moyen plus court de réorganiser le résultat de cetteM
étape dans la forme finale .O
scène ordinaire juste après laM
scène, de sorte que vous puissiez continuer à utiliser une tête de lecture au lieu d'une vue arrière.Python 2 ,
106103 octetsEssayez-le en ligne!
la source
PHP, 119 + 1 octets
Exécuter en tant que pipe avec
-nR
ou l' essayer en ligne .la source
Gelée , 24 octets
Essayez-le en ligne!
Comment ça fonctionne
J'utilise trop d'exposants ...
la source
R , 102 octets
Essayez-le en ligne!
Lit
n
partir de stdin et imprime le jardin sur stdout.Explication:
la source