Étant à court d'argent, vous vous êtes inscrit pour construire des beignets pour The Donut Shop ™, la plus grande entreprise de beignets numériques au monde, principalement parce qu'ils vendent toutes les tailles de beignets imaginables.
Maintenant, étant donné que les normes commerciales sont de nos jours très difficiles, vous devez écrire un morceau de code aussi court que possible pour créer ces beignets afin que le code source qui les a créés puisse être placé à l'extérieur du paquet.
Défi
Étant donné 4 entrées, le rayon de l'anneau extérieur, le rayon de l'anneau intérieur, les paillettes possibles et la chance d'une cellule ayant une paillette, sortez un beignet recouvert de ces paillettes qui a les rayons intérieurs et extérieurs corrects.
- L'entrée peut être prise comme vous le souhaitez (arguments d'une fonction, stdin, arguments du programme) et dans n'importe quel ordre.
- Les arrosages seront donnés sous forme de 1 caractère par type d'arrosage
^+*-
comme entrée de saupoudrer serait une liste de 4 arrose,^
,+
,*
,-
- La chance d'un Saupoudrez sera entré comme une valeur en virgule flottante compris entre 0 et 1. par exemple:
0.1
,0.23
- Vous devez imprimer la sortie sur stdout ou équivalent.
- Les paillettes ne peuvent pas être sur les bords du beignet.
- Chaque type de saupoudrage doit avoir une chance tout aussi probable d'être sur chaque cellule.
- Les rayons sont donnés en unités à 1 cellule.
- Si le rayon intérieur est égal à 0 OU au rayon extérieur, le beignet est dit sans anneau.
- Les deux rayons seront des entiers non négatifs.
- Les bords intérieurs et extérieurs du beignet doivent être représentés à l'aide de hachages (
#
) Un test pour voir si un point est dans un cercle, étant donné un rayon et le centre du cercle est:
(x-center)**2+(y-center)**2 < radius**2
Exemple d'entrée avec sortie
(rayon extérieur, rayon intérieur, arrose, risque d'arroser)
10, 4, "^ + * -", 0,1
######### # # ## ++ * *## # # # ^^ - * # # ##### ^ # #+ # # # # # #- # # # # * # # # #+ # # # # # #^ +# # # # # # # # * ##### # # + - # # ^ # ## ^ + ## # ^ # #########
5, 2, ": ^ + *", 0,9
##### #^^+ ^# #**### # #:# #^# #^# #*# #:# #*# #:+###* # # *:^:# #####
Ceci est le golf de code, la réponse la plus courte en octets gagne
10, 4
et5, 2
sont assez différentes. J'allais laisser un commentaire sur la réponse, mais je me suis rendu compte que je ne comprenais pas vraiment à quoi la sortie devrait ressembler pour toutes les dimensions sauf celles des exemples. Si vous souhaitez faire en sorte que votre idée d'origine corresponde à la sortie de la réponse, cela ne dépend que de vous, mais le défi doit clairement définir comment tracer les frontières de toute façon.Réponses:
MATLAB, 231 octets
Voici une solution matlab:
Quelques exemples:
la source
Python, 263 octets
J'ai donc vu un défi sans réponse qui semblait relativement facile, mais aussi intéressant et j'ai pensé:
Hmm ... Si je suis le seul à avoir une réponse, je gagnerai jusqu'à ce qu'une meilleure réponse apparaisse inévitablement.
Je me suis donc assis avec Python pendant quelques minutes et j'ai trouvé un brouillon que, avec l'aide des suggestions de la communauté, j'ai peaufiné pour réduire sa taille.
Pour les exemples ci-dessus, cela crée
et
Je doute fortement que ce soit la solution la plus courte possible, mais je pense que cela a plutôt bien fonctionné pour la tentative d'un adolescent autodidacte de tuer le temps. Étant donné que cela a été conçu pour être aussi petit que possible, je n'ai pas inclus de commentaires et j'ai pris des raccourcis sur chaque nom de variable et en tant que tel, ce programme est plus pour la convivialité que pour la lisibilité.
Si vous souhaitez utiliser ce code pour une raison inconnue, exécutez-le dans IDLE et tapez la commande
dans le format décrit ci-dessus.
la source
abs
appel, car les rayons sont garantis non négatifs. Je recommande également de consulter les conseils pour jouer au golf en Python pour des pointeurs supplémentaires. Encore une fois, bienvenue!N=False if I==0 or I>=O else True
pourrait êtrenot (I==0 or I>=O)
et la fonction C pourrait être un lambda. Mais c'est une très bonne première entrée!P
plus d'une fois, il est donc inutile d'enregistrer le*100
dans une variable.