Al no tener dinero en efectivo, se ha registrado para construir donas para The Donut Shop ™, la compañía de donas digital más grande del mundo, principalmente porque venden donas de todos los tamaños imaginables.
Ahora, dado que los estándares comerciales hoy en día son muy difíciles, debe escribir un fragmento de código lo más corto posible para crear estas donas para que el código fuente que las creó pueda colocarse en el exterior del paquete.
Desafío
Dadas 4 entradas, radio del anillo exterior, radio del anillo interior, las posibles aspersiones y la posibilidad de que una celda tenga una aspersión, genera una rosquilla cubierta en esas aspersiones que tiene los radios internos y externos correctos.
- La entrada puede tomarse como desee (argumentos de una función, stdin, argumentos de programa) y en cualquier orden.
- Las aspersiones se darán en forma de 1 carácter por tipo de aspersión.
^+*-
como entrada espolvorear sería una lista de 4 asperja,^
,+
,*
,-
- La posibilidad de una aspersión se introduce como un valor de punto flotante entre 0 y 1. Por ejemplo:
0.1
,0.23
- Debe imprimir la salida en stdout o equivalente.
- Las chispas no pueden estar en los bordes de la rosquilla.
- Cada tipo de aspersión debe tener una probabilidad igualmente probable de estar en cada celda.
- Los radios se dan en unidades de 1 celda.
- Si el radio interno es igual a 0 O al radio externo, se dice que la rosquilla no tiene anillo.
- Ambos radios serán enteros no negativos.
- Los bordes interno y externo de la rosquilla se deben representar con hashes (
#
) Una prueba para ver si un punto está en un círculo, dado un radio y el centro del círculo es:
(x-center)**2+(y-center)**2 < radius**2
Ejemplo de entrada con salida
(radio exterior, radio interior, aspersiones, posibilidad de aspersión)
10, 4, "^ + * -", 0.1
######### # # ## ++ * *## # # # ^^ - * # # ##### ^ # #+ # # # # # #- # # # # * # # # #+ # # # # # #^ +# # # # # # # # * ##### # # + - # # ^ # ## ^ + ## # ^ # #########
5, 2, ": ^ + *", 0.9
##### #^^+ ^# #**### # #:# #^# #^# #*# #:# #*# #:+###* # # *:^:# #####
Este es el código de golf, la respuesta más corta en bytes gana
10, 4
y 5, 2
son bastante diferentes. Iba a dejar un comentario sobre la respuesta, pero me di cuenta de que realmente no entendía cómo debería ser la salida para cualquier dimensión, excepto las de los ejemplos. Si desea cambiar su idea original para que coincida con el resultado de la respuesta, depende de usted, pero el desafío debe definir claramente cómo dibujar los bordes de cualquier manera.