Com pouco dinheiro, você se inscreveu para criar rosquinhas para a The Donut Shop ™, a maior empresa de rosquinhas digitais do mundo, principalmente porque elas vendem todos os tamanhos de rosquinha imagináveis.
Agora, considerando que os padrões de negociação atualmente são muito difíceis, você precisa escrever um pedaço de código o mais curto possível para criar esses anéis de espuma, para que o código-fonte que os criou possa ser colocado na parte externa do pacote.
Desafio
Dadas 4 entradas, raio do anel externo, raio do anel interno, as possíveis polvilhas e a chance de uma célula ser polvilhada, produz uma rosquinha coberta nessas polvilhas com os raios interno e externo corretos.
- A entrada pode ser tomada como você deseja (argumentos para uma função, stdin, argumentos do programa) e em qualquer ordem.
- As polvilhas serão dadas na forma de 1 caractere por tipo de polvilha
^+*-
como entrada pitada seria uma lista de 4 polvilha,^
,+
,*
,-
- A possibilidade de uma pitada será inserido como um valor de ponto flutuante entre 0 e 1. por exemplo,:
0.1
,0.23
- Você deve imprimir a saída para stdout ou equivalente.
- Granulado não pode estar nas bordas da rosquinha.
- Cada tipo de aspersão deve ter uma chance igualmente provável de estar em cada célula.
- Os raios são dados em unidades de 1 célula.
- Se o raio interno for igual a 0 OU ao raio externo, diz-se que o anel não possui anel.
- Ambos os raios serão números inteiros não negativos.
- As bordas interna e externa da rosquinha devem ser representadas usando hashes (
#
) Um teste para ver se um ponto está em um círculo, dado um raio e o centro do círculo é:
(x-center)**2+(y-center)**2 < radius**2
Exemplo de entrada com saída
(raio externo, raio interno, granulado, possibilidade de granulado)
10, 4, "^ + * -", 0,1
######### # # ## ++ * *## # # # ^^ - * # # ##### ^ # #+ # # # # # #- # # # # * # # # #+ # # # # # #^ +# # # # # # # # * ##### # # + - # # ^ # ## ^ + ## # ^ # #########
5, 2, ": ^ + *", 0,9
##### #^^+ ^# #**### # #:# #^# #^# #*# #:# #*# #:+###* # # *:^:# #####
Isso é código de golfe, a resposta mais curta em bytes ganha
10, 4
e 5, 2
são bem diferentes. Gostaria de deixar um comentário sobre a resposta, mas percebi que realmente não entendia como a saída deveria ser para quaisquer dimensões, exceto as dos exemplos. Se você deseja alterar sua ideia original para corresponder à saída da resposta, isso é com você, mas o desafio deve definir claramente como desenhar as fronteiras de qualquer maneira.