Le printemps est arrivé récemment et c'est presque le moment où les fleurs commencent à germer. Je veux donc que vous les aidiez à grandir.
Ta tâche:
Étant donné deux nombres,, m
et n
, les m
fleurs de sortie sont placées au hasard sur une n*n
grille.
Une seule fleur ressemble à ceci:
&
|
La position d'une fleur est définie par son emplacement &
. Lorsque vous placez deux fleurs au hasard, aucune ne peut être au même endroit. Si une fleur &
chevauche une autre fleur |
, affichez le &
. La rangée inférieure de fleurs ne peut en contenir &
.
L'entrée peut être sous la forme d'un nombre ou d'une chaîne, via l'une des méthodes standard.
La sortie peut être une liste de chaînes, chaque chaîne représentant une ligne de la grille ou une chaîne délimitée suivant la même directive que la liste. Méthodes standard de sortie. Les traînées sont autorisées et vous pouvez utiliser des onglets pour séparer vos fleurs. Notez que chaque grille doit être complètement remplie, avec des espaces ou quelque chose.
Notez que l'entrée sera toujours valide, vous pourrez toujours légalement insérer les m
fleurs dans la grille n
par n
.
Cas de test:
Étant donné que seuls des cas de test très étroits peuvent être garantis, en raison de l'ensemble du bit de "placement aléatoire", ce sera le seul type de cas de test avec une réponse fournie. Mais je vais essayer toutes les soumissions en ligne pour m'assurer qu'elles sont valides en utilisant aussi certains cas de test.
L'entrée pour les cas de test est donnée dans le formulaire m, n
.
Input: 2, 2
Output:
&&
||
--------------
Input: 6, 3
Output:
&&&
&&&
|||
Notez que la nouvelle ligne après le mot Output:
dans les cas de test est facultative.
Autres cas de test:
- 1, 10
- 0, 100
- 5, 8
- 6, 3
Le golf de code ainsi le code le plus court gagne!
Merci à ComradeSparklePony d'avoir relevé ce défi et de l'avoir affiché dans la boîte cadeau du Père Noël secret !. Poteau de bac à sable
Réponses:
Gelée , 33 octets
Essayez-le en ligne!
Comment?
la source
m
etn
ou pourquoi le faites-voussquare m
? wth est un nilad ?rotate
. Bon travail; excellente ventilation!PHP (> = 7.1),
135 131 128 116 116 110109 octetsprend l'entrée des arguments de la ligne de commande; exécuter
-nr
ou tester en ligne .panne
la source
-r
est gratuit ; il indique à PHP d'exécuter du code à partir de l'argument de ligne de commande.-n
réinitialise PHP aux paramètres par défaut.Python 2 , 150 octets
Essayez-le en ligne!
Comment?
Prend
input()
de STDIN et décompresse le tuple fourni (une chaîne séparée par des virgules d'entiers décimaux comme3,6
) dansn
etm
.Crée un
n*(n-1)
"parterre" long , ordonné et unidimensionnelb
, en concaténant:- une liste contenant une "fleur"
[1]
répétéem
; et- une liste contenant un "espace"
[0]
répétén*~-n-m
fois *.* L'opérateur têtard
~
(~x=-1-x
) enregistre 2 octetsn*~-n-m
à la place de l'aspect plus normaln*(n-1)-m
.Mélange (en utilisant
random
lashuffle
fonction de) ce parterre de fleurs pour placer les fleurs et les espaces au hasard parmi lesn*(n-1)
positions.Parcourt les lignes indexées 0
r
, etprints
chacune à son tour pour créer un parterre de fleurs bidimensionnel à partir de celui unidimensionnel ...Le dernier
n*n
parterre de fleurs en deux dimensions ( ) a des tiges,s
une rangée sous les capitulesf
, si et seulement s'il n'y a pas de capitule à montrer. Ceci est réalisé par XORing (^
)f
avec-s
oùf
ets
sont les1
s et0
s d'avant et en utilisant le résultat pour indexer dans la chaîne de longueur 3' &|'
:Pour obtenir
f
ets
lazip
fonction est utilisée avec deux copies du parterre de fleurs unidimensionnel, une avecn
des espaces de fuite (les capitules) et une avecn
des espaces de tête (les tiges). Le tout est créé pour chaque ligne (pour économiser des octets), et la ligne requise est découpée en utilisant[r*n:r*n+n]
.la source
Python 2 ,
184179 octetsEssayez-le en ligne!
la source
Python 2 , 129 octets
Essayez-le en ligne!
Génère la chaîne de sortie un caractère à la fois. Choisit au hasard si la cellule actuelle est une fleur avec une probabilité égale au nombre
m
de fleurs restantes divisé par le nombre d'espaces restants. Ajoute une nouvelle ligne à tous lesn
caractères. Une cellule vide est remplie d'une tige|
si le symbolen
de la fin est a&
.la source
PHP, 111 octets
Version en ligne
-1 octet pour une nouvelle ligne physique
une solution 115 octets en utilisant max
De cette façon, avec 137 octets mélange la première partie de la chaîne
la source
JavaScript (ES6), 157 octets
Explication: crée un tableau représentant la grille de fleurs et les nouvelles lignes. Recherche récursivement au hasard des carrés vides dans lesquels placer des fleurs jusqu'à ce que le nombre souhaité de fleurs soit atteint. Enfin, les tiges des fleurs sont générées là où il y a de la place pour elles.
la source
Fusain , 27 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Entrée
n
.Modifiez le sens d'impression par défaut vers le bas.
Entrez
m
et bouclez plusieurs fois.Accédez à un emplacement aléatoire sur la grille.
S'il y a déjà une fleur, continuez à sauter vers des emplacements aléatoires jusqu'à ce qu'un endroit approprié soit trouvé.
Imprimez le capitule.
Imprimez la tige s'il n'y a pas déjà un capitule en dessous.
la source