Из-за нехватки денег вы подписались на постройку пончиков для The Donut Shop ™, крупнейшей компании по производству цифровых пончиков в мире, в основном потому, что они продают пончики любого размера, какие только можно вообразить.
Теперь, учитывая, что торговые стандарты в настоящее время очень жесткие, вам нужно написать как можно более короткий фрагмент кода, чтобы создать эти пончики, чтобы исходный код, который их создал, можно было поместить снаружи пакета.
Вызов
С учетом 4 входных данных, радиуса внешнего кольца, радиуса внутреннего кольца, возможных разбрызгиваний и вероятности разбрызгивания ячейки выведите пончик, покрытый этими разбрызгивателями, который имеет правильные внутренние и внешние радиусы.
- Входные данные могут быть приняты по вашему усмотрению (аргументы функции, стандартный ввод, программные аргументы) и в любом порядке.
- Брызги будут даны в виде 1 символа для каждого типа брызг
^+*-
в качестве входных данных посыпьте будет список из 4 -х опрыскиваний,^
,+
,*
,-
- Вероятность опрыскивания будет введена в качестве значения с плавающей точкой между 0 и 1. Например:
0.1
,0.23
- Вы должны распечатать вывод на стандартный вывод или эквивалентный.
- Брызги не могут быть по краям пончика.
- Каждый тип разбрызгивания должен иметь одинаковую вероятность попадания в каждую клетку.
- Радиусы даны в единицах с 1 ячейкой.
- Если внутренний радиус равен 0 ИЛИ внешнему радиусу, говорят, что пончик не имеет кольца.
- Оба радиуса будут неотрицательными целыми числами.
- Внутренние и внешние края пончика должны быть представлены с помощью хэшей (
#
) Тест, чтобы увидеть, находится ли точка в круге, учитывая радиус и центр круга:
(x-center)**2+(y-center)**2 < radius**2
Пример ввода с выводом
(внешний радиус, внутренний радиус, разбрызгивание, вероятность разбрызгивания)
10, 4, "^ + * -", 0,1
######### # # ## ++ * *## # # # ^^ - * # # ##### ^ # #+ # # # # # #- # # # # * # # # #+ # # # # # #^ +# # # # # # # # * ##### # # + - # # ^ # ## ^ + ## # ^ # #########
5, 2, ": ^ + *", 0,9
##### #^^+ ^# #**### # #:# #^# #^# #*# #:# #*# #:+###* # # *:^:# #####
Это код гольф, самый короткий ответ в байтах выигрывает
10, 4
и 5, 2
довольно разные. Я собирался оставить комментарий к ответу, но понял, что не совсем понимаю, как должен выглядеть результат для каких-либо измерений, кроме тех, что в примерах. Если вы хотите изменить исходную идею в соответствии с выводом из ответа, это зависит от вас, но задача должна четко определить, как нарисовать границы в любом случае.