Essendo a corto di soldi, ti sei registrato per costruire ciambelle per The Donut Shop ™, la più grande azienda di ciambelle digitali al mondo, principalmente perché vendono ogni dimensione di ciambella immaginabile.
Ora, dato che gli standard di trading al giorno d'oggi sono molto difficili, è necessario scrivere un pezzo di codice il più corto possibile per creare queste ciambelle in modo che il codice sorgente che le ha create possa essere inserito all'esterno del pacchetto.
Sfida
Dati 4 ingressi, raggio dell'anello esterno, raggio dell'anello interno, possibili spruzzi e la possibilità che una cella abbia uno spruzzo, emetta una ciambella coperta in quegli spruzzi che ha i raggi interni ed esterni corretti.
- L'input può essere preso come desideri (argomenti di una funzione, stdin, argomenti del programma) e in qualsiasi ordine.
- Gli spruzzi verranno dati sotto forma di 1 carattere per tipo di spruzzo
^+*-come input cospargere sarebbe un elenco di 4 spruzza,^,+,*,-- La possibilità di una spruzzatura viene inserito come un valore in virgola mobile tra 0 e 1. esempio:
0.1,0.23
- È necessario stampare l'output su stdout o equivalente.
- Gli spruzzi non possono essere sui bordi della ciambella.
- Ogni tipo di spruzzatura deve avere una probabilità altrettanto probabile di trovarsi su ogni cella.
- I raggi sono indicati in unità di 1 cella.
- Se il raggio interno è uguale a 0 O al raggio esterno, si dice che la ciambella non ha anello.
- Entrambi i raggi saranno numeri interi non negativi.
- I bordi interno ed esterno della ciambella devono essere rappresentati usando gli hash (
#) Un test per vedere se un punto si trova in un cerchio, dato un raggio e il centro del cerchio è:
(x-center)**2+(y-center)**2 < radius**2
Esempio di input con output
(raggio esterno, raggio interno, spruzzi, possibilità di spruzzi)
10, 4, "^ + * -", 0.1
######### # # ## ++ * *## # # # ^^ - * # # ##### ^ # #+ # # # # # #- # # # # * # # # #+ # # # # # #^ +# # # # # # # # * ##### # # + - # # ^ # ## ^ + ## # ^ # #########5, 2, ": ^ + *", 0.9
##### #^^+ ^# #**### # #:# #^# #^# #*# #:# #*# #:+###* # # *:^:# #####
Questo è il codice golf, vince la risposta più breve in byte
10, 4e 5, 2sono piuttosto diverse. Stavo per lasciare un commento sulla risposta, ma mi sono reso conto di non capire davvero come dovrebbe essere l'output per qualsiasi dimensione tranne quelle negli esempi. Se vuoi cambiare la tua idea originale in modo che corrisponda all'output della risposta, dipende da te, ma la sfida dovrebbe definire chiaramente come disegnare i bordi in entrambi i modi.