# Uiua, <s>46</s> <s>44</s> <s>42</s> 40 bytes

<sup>[crossed out 44 is still regular 44 :(](https://codegolf.stackexchange.com/a/256052/108687)</sup>

    ⊏◿13/+×+2⇡4⇌=0[⍉.⊞⟜⊃-+.]-⇡+1×2.:$  O/\-|

[Try it!](https://uiua.org/pad?src=0_10_1__RiDihpAg4oqP4pe_MTMvK8OXKzLih6E04oeMPTBb4o2JLuKKnuKfnOKKgy0rLl0t4oehKzHDlzIuOiQgIE8vXC18CgriiaEmcCBGIDAK4omhJnAgRiAxCuKJoSZwIEYgMgriiaEmcCBGIDMK) I’m submitting this on the day of the 2024 solar eclipse, which is fitting for a challenge about the sun.

I also like that all of my improvements have been by 2 bytes each :)

As of my latest revision 42 &rarr; 40 bytes, this borrows some logic from [randomra’s very clever J solution](https://codegolf.stackexchange.com/a/49785/108687). This still isn’t a direct port as some parts didn’t translate so well to Uiua.

I also have a 41 byte solution which doesn’t do any porting:

    ⊏◿13/+×+2⇡4[⍉,⇌,]↯⧻.:⊞=.⟜=⇡+1×2.:$  O-/|\

[Try it!](https://uiua.org/pad?src=0_10_1__RiDihpAg4oqP4pe_MTMvK8OXKzLih6E0W-KNiSzih4wsXeKGr-Knuy464oqePS7in5w94oehKzHDlzIuOiQgIE8tL3xcCgriiaEoJnAiIuKJoSZwIEYpIOKHoTQK)

Explanation of the 41 bytes:

Consider the input 3. We double this and add 1 to get the side length 7.

From this we start with the identity matrix, and a reversed copy:

    0 0 0 0 0 0 1    1 0 0 0 0 0 0
    0 0 0 0 0 1 0    0 1 0 0 0 0 0
    0 0 0 0 1 0 0    0 0 1 0 0 0 0
    0 0 0 1 0 0 0    0 0 0 1 0 0 0
    0 0 1 0 0 0 0    0 0 0 0 1 0 0
    0 1 0 0 0 0 0    0 0 0 0 0 1 0
    1 0 0 0 0 0 0    0 0 0 0 0 0 1

Also make the array of this many zeros with a 1 at the position of the original input:

    0 0 0 1 0 0 0

Create a square matrix of this, and a transposed copy:

    0 0 0 0 0 0 0    0 0 0 1 0 0 0
    0 0 0 0 0 0 0    0 0 0 1 0 0 0
    0 0 0 0 0 0 0    0 0 0 1 0 0 0
    1 1 1 1 1 1 1    0 0 0 1 0 0 0
    0 0 0 0 0 0 0    0 0 0 1 0 0 0
    0 0 0 0 0 0 0    0 0 0 1 0 0 0
    0 0 0 0 0 0 0    0 0 0 1 0 0 0

Then we take these 4 matrices in an array and multiply them by 2, 3, 4, and 5 respectively:



    0 0 0 2 0 0 0   0 0 0 0 0 0 0
    0 0 0 2 0 0 0   0 0 0 0 0 0 0
    0 0 0 2 0 0 0   0 0 0 0 0 0 0
    0 0 0 2 0 0 0   3 3 3 3 3 3 3
    0 0 0 2 0 0 0   0 0 0 0 0 0 0
    0 0 0 2 0 0 0   0 0 0 0 0 0 0
    0 0 0 2 0 0 0   0 0 0 0 0 0 0

    4 0 0 0 0 0 0   0 0 0 0 0 0 5
    0 4 0 0 0 0 0   0 0 0 0 0 5 0
    0 0 4 0 0 0 0   0 0 0 0 5 0 0
    0 0 0 4 0 0 0   0 0 0 5 0 0 0
    0 0 0 0 4 0 0   0 0 5 0 0 0 0
    0 0 0 0 0 4 0   0 5 0 0 0 0 0
    0 0 0 0 0 0 4   5 0 0 0 0 0 0

Sum them all together:

    4 0 0  2 0 0 5  
    0 4 0  2 0 5 0  
    0 0 4  2 5 0 0  
    3 3 3 14 3 3 3  
    0 0 5  2 4 0 0  
    0 5 0  2 0 4 0
    5 0 0  2 0 0 4

We’re going to index these numbers into a string to get each character, and that 14 is going to get in the way, so take the results mod 13:

    4 0 0 2 0 0 5
    0 4 0 2 0 5 0
    0 0 4 2 5 0 0
    3 3 3 1 3 3 3
    0 0 5 2 4 0 0
    0 5 0 2 0 4 0
    5 0 0 2 0 0 4

Finally index these into a string so that 0 becomes a space, 1 becomes O, 2 becomes |, 3 becomes -, 4 becomes \\, and 5 becomes /:

    \  |  /
     \ | / 
      \|/  
    ---O---
      /|\  
     / | \ 
    /  |  \