Consider the following ASCII image of five concentric anti-aliased ASCII aureoles:
........
.@..............@.
..... .....
.@.. ...@@@@@@@@... ..@.
.@. ..@@.. ..@@.. .@.
.@. .@@. ........ .@@. .@.
.@ @@ .@@@@@..@@@@@. @@ @.
.@ @. .@@. .@@. .@ @.
@. @@ @@. @@@@@@@@ .@@ @@ .@
.@ .@ .@. @@@. .@@@ .@. @. @.
.@ @@ @@ @@ @@ @@ @@ @@ @.
.@ @@ @@ @@ @@ @@ @@ @@ @.
.@ .@ .@. @@@. .@@@ .@. @. @.
@. @@ @@. @@@@@@@@ .@@ @@ .@
.@ @. .@@. .@@. .@ @.
.@ @@ .@@@@@..@@@@@. @@ @.
.@. .@@. ........ .@@. .@.
.@. ..@@.. ..@@.. .@.
.@.. ...@@@@@@@@... ..@.
..... .....
.@..............@.
........
You must write a program to draw a given subset of the above circles in as few characters as possible.
The input is either five booleans in your choice of formatting (be it 1 1 1 1 1
or [False, True, False, False, True]
), with the first boolean corresponding to the inner-most circle, or an integer where the least-significant bit corresponds to the inner circle (e.g. 1 0 0 1 1
is equivalent to 25
).
Output for 1 1 1 1 1
/31
: see above.
Output for 1 0 1 0 1
/21
:
........
.@..............@.
..... .....
.@.. ..@.
.@. .@.
.@. ........ .@.
.@ .@@@@@..@@@@@. @.
.@ .@@. .@@. @.
@. @@. .@@ .@
.@ .@. .@. @.
.@ @@ @@ @@ @.
.@ @@ @@ @@ @.
.@ .@. .@. @.
@. @@. .@@ .@
.@ .@@. .@@. @.
.@ .@@@@@..@@@@@. @.
.@. ........ .@.
.@. .@.
.@.. ..@.
..... .....
.@..............@.
........
Output for 0 0 0 1 0
/8
(note the leading whitespace):
...@@@@@@@@...
..@@.. ..@@..
.@@. .@@.
@@ @@
@. .@
@@ @@
.@ @.
@@ @@
@@ @@
.@ @.
@@ @@
@. .@
@@ @@
.@@. .@@.
..@@.. ..@@..
...@@@@@@@@...
The aureoles themselves must be exactly as presented above. However, trailing whitespace is optional. Also, if some outer aureoles are missing, it is up to you whether your program outputs the leading empty lines or the trailing empty lines.