[Question]
  [
In my language [Pyramid Scheme](https://github.com/ConorOBrien-Foxx/Pyramid-Scheme), there is a slightly funny construct: the empty triangle:
```
^
-
```
When given no arguments, it returns `0`. To generate `1` using this construct, we could use this:
```
   ^
  /!\
 ^---
 -
```
This simply passes `0` to the negation function. We can continue negating this result:
```
 ^
/!\
---^
  /!\
 ^---
 -
```
To get 0. One more negation gives:
```
   ^
  /!\
 ^---
/!\
---^
  /!\
 ^---
 -
```
## Challenge
Given an integer **n** ≥ 1, output the empty pyramid being negated **n** times in the described fashion.
## Test cases
```
input
output
1
   ^
  /!\
 ^---
 -
2
 ^
/!\
---^
  /!\
 ^---
 -
3
   ^
  /!\
 ^---
/!\
---^
  /!\
 ^---
 -
6
 ^
/!\
---^
  /!\
 ^---
/!\
---^
  /!\
 ^---
/!\
---^
  /!\
 ^---
 -
```
  
[Answer]
# [Pyramid Scheme](https://github.com/ConorOBrien-Foxx/Pyramid-Scheme), ~~31655 bytes, non-competing (obviously...)~~  ~~16989~~ ~~12901~~ 8465 bytes, somewhat-competing
So, I thought this would be a funny thing to try.
## Edits:
* -14666 bytes by finally getting around to [adding some compiler optimisation to psll](https://github.com/MarcinKonowalczyk/psll-lang/commit/597f0de1b9718532319360259fa68fd07ce9d610)
* -4088 bytes by using different optimisation technique
* -4436 bytes by [implementing automatic variable name shortening into psll](https://github.com/MarcinKonowalczyk/psll-lang/commit/67c02355f27cbc3cdd238d4b20475cb6320190eb) (I really wanted the Explanation psll code to compile into the answer *without* any modifications)
```
      ^    ^  ^          ^             ^  ^        ^          ^        ^      ^  ^          ^          ^                ^       ^                 ^          ^
     ^-   / \ -^        / \           ^- / \       -^        / \      ^-     / \ -^        / \        / \              ^-      / \               / \        / \
    ^-   /set\ -^      /set\         ^- /set\       -^      /set\    ^-     /set\ -^      /set\      /set\            / \     /set\             /   \      /out\
   ^-   ^-----^ -^    ^-----^       ^- ^-----^       -^    ^-----^   -^    ^-----^ -^    ^-----^    ^-----^          ^---^   ^-----^           /     \    ^-----^
  ^-   /f\   / \ -^  /t\   /f\     ^- /r\   /+\       -^  /r\   /+\   -^  /r\   /+\ -^  /r\   /+\  /r\   /+\        ^-  / \ /l\   /0\         / loop  \  /s\   /d\
  -^   ---  /chr\ -^ ---   ---    ^-  ---  ^---^       -^ ---  ^---^   -^ ---  ^---^ -^ ---  ^---^ ---  ^---^      ^-  /   \---   ---        ^---------^ ---   ---
   -^      ^----- / \            / \      /r\ /e\       -^    /r\ /f\   -^    /r\ /c\ -^    /r\ /d\    /r\ /e\    ^-  /     \               /!\       / \
    -^    / \    ^---^          ^---^     --- ---       / \   --- ---    -^   --- --- / \   --- ---    --- ---   ^-  /       \             ^---      /   \
     -^  /47 \  / \  -^        / \  -^                 /   \              -^         /   \                      ^-  /         \           /!\       /     \
      -^ ----- /set\  -^      /set\  -^               /     \              -^       /     \                    ^-  /           \         ^---      /       \
       -^     ^-----^  -^    ^-----^  -^             /       \              -^     /       \                  ^-  /      ?      \       / \       ^---------^
        -^   /a\   / \  -^  /t\   /+\  -^           /         \              -^   /         \                ^-  ^---------------^     /<=>\     / \       / \
         -^  ---  /chr\  -^ ---  ^---^  -^         ^-----------^             ^-  ^-----------^              ^-  /!\             / \   ^-----^   /   \     /set\
         / \     ^-----  / \    /t\ /a\  -^       / \         / \           ^-  / \         / \            ^-  ^---            /   \ /l\   /n\ /     \   ^-----^
        /   \   / \     /   \   --- ---   -^     /set\       /set\         ^-  /set\       /set\          ^-  /?\             /     \---   ---/       \ /l\   /+\
       /     \ /33 \   /     \             -^   ^-----^     ^-----^       ^-  ^-----^     ^-----^        ^-  ^---^           /       \       /         \---  ^---^
      /       \-----  /       \             -^ /r\   /+\   /r\   /+\     ^-  /r\   /+\   /r\   /+\      ^-  /m\ / \         ^---------^     /           \   /l\ /1\
     /         \     ^---------^            / \---  ^---^  ---  ^---^   ^-   ---  ^---^  ---  ^---^    ^-   ---/   \       / \       / \   /             \  --- ---
    ^-----------^   / \       / \          /   \   /r\ /s\     /r\ /s\ ^-        /r\ /d\     /r\ /d\  ^-      /     \     /out\     /out\ /               \
   / \         ^-  /set\     /set\        /     \  --- ---     --- ---/ \        --- ---     --- --- ^-      /       \   ^-----^   ^-----/                 \
  /set\       ^-  ^-----^   ^-----^      ^-------^                   /   \                          ^-      ^---------^ /s\   /c\ /e\   /                   \
 ^-----^     ^-  /b\   / \ /d\   / \    ^-      ^-                  /     \                        ^-      / \       / \---   --- ---  /                     \
/n\   /#\   ^-   ---  /chr\---  /chr\  ^-      ^-                  /       \                      / \     /out\     /out\             /                       \
---  ^---  ^-        ^-----    ^----- ^-      / \                 /         \                    /   \   ^-----^   ^-----            /                         \
    /l\   / \       / \       / \    ^-      /   \               ^-----------^                  /     \ /s\   /s\ /s\               /                           \
   /ine\ /   \     /92 \     /45 \  ^-      /     \              -^         / \                /       \---   --- ---              /                             \
   -----/     \    -----     ----- ^-      /       \              -^       /set\              /         \                         /                               \
       /       \                  ^-      /         \              -^     ^-----^            ^-----------^                       /                                 \
      /         \                ^-      ^-----------^              -^   /r\   /+\          / \         / \                     /                                   \
     ^-----------^              ^-       -^         / \              -^  ---  ^---^        /set\       /   \                   ^-------------------------------------^
    / \         ^-             / \        -^       /set\              -^     /r\ /s\      ^-----^     /     \                 / \                                   / \
   /set\       ^-             /   \        -^     ^-----^             / \    --- ---     /m\   /n\   / loop  \               /   \                                 /   \
  ^-----^     ^-             /     \        -^   /r\   /c\           ^---^               ---   ---  ^---------^             /     \                               /     \
 /s\   / \   ^-             /       \        -^  ---   ---          / \  -^                        / \       / \           /       \                             /   ?   \
 ---  /chr\ ^-             /         \        -^                   /set\  -^                      /   \     /set\         /         \                           ^---------^
     ^-----/ \            ^-----------^        -^                 ^-----^  -^                    / <=> \   ^-----^       ^-----------^                         /!\       ^-
    / \   /   \           -^         / \        -^               /r\   /+\  -^                  ^-------^ /m\   /-\     / \         / \                       ^---      / \
   /32 \ /     \           -^       /set\        -^              ---  ^---^  -^                / \     / \---  ^---^   /set\       /   \                     / \       /out\
   -----/       \           -^     ^-----^       / \                 /r\ /a\  -^              /<=>\   /-1 \   /m\ /2\ ^-----^     /     \                   /   \     ^-----
       ^---------^           -^   /t\   /+\     /   \                --- ---  / \            ^-----^  -----   --- ---/k\   /l\   / loop  \                 /  ?  \   /t\
      / \       / \           -^  ---  ^---^   /     \                       /   \          /m\   /2\                ---   ---  ^---------^               ^-------^  ---
     /set\     /set\           -^     /t\ /d\ /       \                     /     \         ---   ---                          / \       / \             /!\     ^-
    ^-----^   ^-----^          / \    --- ---/         \                   /       \                                          /   \     /set\           ^---    / \
   /e\   / \ /c\   / \        /   \         ^-----------^                 /         \                                        / <=> \   ^-----^         / \     /out\
   ---  /chr\---  /chr\      /     \       / \         / \               ^-----------^                                      ^-------^ /k\   /-\       /<=>\   ^-----
       ^-----    ^-----     /       \     /set\       /set\             / \         / \                                    / \     / \---  ^---^     ^-----^ /r\
      / \       / \        /         \   ^-----^     ^-----^           /set\       /set\                                  /<=>\   /-1 \   /k\ /2\   /+\   /1\---
     /10 \     /94 \      ^-----------^ /t\   /+\   /t\   /+\         ^-----^     ^-----^                                ^-----^  -----   --- ---  ^---^  ---
     -----     -----     / \         / \---  ^---^  ---  ^---^       /r\   /+\   /r\   /+\                              /k\   /2\                 /k\ /m\
                        /set\       /set\   /t\ /d\     /t\ /d\      ---  ^---^  ---  ^---^                             ---   ---                 --- ---
                       ^-----^     ^-----^  --- ---     --- ---          /r\ /b\     /r\ /e\
                      /t\   /+\   /t\   /+\                              --- ---     --- ---
                      ---  ^---^  ---  ^---^
                          /t\ /b\     /t\ /e\
                          --- ---     --- ---
```
[Try it online!](https://tio.run/##lVnbbhwpEH3vryDKo4XI2F5FkZL1jyCkZDxRIsdxNDP7kK/3dnM9VVTReB7a0EXDoS6nCvzn7/nr889Hezn@OD2fXl9N/IX8CKb@oMlk0qDQDxvMBi86AflqSX/s@nDGG1tlWw/GWXghDIoTDKags7UPegH7amnwLqdrmz31EB686AYVeNoUdDYA0QlWiSkA3ct/1wgwTh/s9gt5@tKr@OgLPoj2uynox/lFkAQRX0aYhUtR4HcPJnJxX@ldUuA5vrhBJeI72mdS/nFccVvK/YqCDx4A/np5@RMhuksUPm5KTGqw22fHH@e4QOzlZ5wwNgNVI3lH@6zHPk4IVxxkmaY3277angv4VRrAfbd2N2W4E3XG@O67p/2jx96jZx8XhKaPkXeehUiepxlecJa0ybbRNBreVRu03aG0NhswDi3U2aNql@ZJ9x@jxbcHYwjbM5Tr9wyjBCl1OyNgQ5WZhi07ia0EwtihAycapI6SzSVAw0FUaQiuTFzDnNEBQyfbpIxSpAzbAx3UfByiYiEzu68eTZmJ5YYrTzZLnUSTJnBtcQuM5z5/@dczmK4pL00NnML5AvCFbnJt@SCo7p0XUljj5uaw0auWjjIyoZT@psKoVfArb9TMPJBW9H10ZWb@7cFpA7NvAV7TYe43KiiWgDzZpeaBNIkfvBRilXqb42bMN1WFBbq7u8tAexfqEmWXmwfSKg6DOAPnbe61sLHVxEbGiCmUptOoI1WaxM@eWD7wSGHEsynSHbIaeewF2dcd7o4l41BTqCStYicyiwPTAZLsZIsUnk6YBv11S6IX37Lx2g41BiDbtnawPYPHAg9ajjFT1B9VOzo4cXXHtoX5GKYQpAyaYeSSWq7j9A0cIqB@Trw8yNS2l2yxjkefyWXdsRQyTvhuRUeDbh32rVBNMk4tZuhKu8l4dMhwWO6ReOTwNmJcpe898e6YRzCj7KNT8TnFy4yYNDm@GmC4dskjtaUfs4YpFw3PfWYGXqlgMl@rMU9c23fWU5Muof7kbZcW8TP4SvD@/H3ymJ8/3ZbW/T9GoQW5JvWq@ZnHzQLMECG8vSl901oSO4ilaXeU3fOACYRQqu6Ul/sloHSa3XOCKYgN5E6VubNgyjz8pDssv96AsaLcKTZ3Pa9Pv12FplicV9nyL1U2PO3JNzgj7yulCeRq4gEaubtRPjLs7ohnQC2z6R5Y1sP43cqtVDuT@4y3JE5Dj8k8GepJDr3w6I10zAcdW1KYWXF7ZgJpPTRnujVeA8qgdrcr@qlfSxJz6RRGPSSokKcVpEbwVDJOuQToTEzde4ZXhQN1qeT8LgEKgLQ7gQppPSuzfD7Lr3jADXahJbvfzYf9FcpZviEwvBrNYWb9NM3Sy5TEAHdbSu@9XKamjvPl6wJewtGj0RTZEkcvN8mklvd7GVKs6s787qAI8mWJs4dkvO3IeOunKBd3kcYvykETOeqKmVJUA1ThXnZmS4on9@ShqpR5Ny71kM@B15b5ZVLpkuWYDtkusoPeihvb4V1y7KoaVU6PkC6v6Xw0ZkO@C4GFZ2m3RX/As7j43weaKsc0OEfnU3zbor7E/KkeJY@e/0/JiPckVrmGfiNIjWfZcW9RD5S99ca8N0fgGsE@IcE2jpBinLaY@QY3fNPMPcWsTa8r0Y1im9pucMG3i17Gx9n0yWceyHd0B99i@vChHi/vjZfshlxJedPsoh/YuGdQvKBbjHSeFAymX@yZ4c2kqrwnhTaTGp/hhlwuyEi7MKJhbTOELf90nsTbyJG@me67yzyaqL95/I@hMvnYOdR9sJWXwY47JS0D410B93WEWwHy@no4/A8 "Pyramid Scheme ‚Äì Try It Online")
## Explanation
```
(set n (# line)) // Set n to line input
(set space (chr 32))
(set newline (chr 10))
(set caret (chr 94))
(set fslash (chr 47))
(set bang (chr 33))
(set bslash (chr 92))
(set dash (chr 45))
// Left triangle
(set lt fslash)
(set lt (+ lt bang)) (set lt (+ lt bslash)) (set lt (+ lt newline))
(set lt (+ lt dash)) (set lt (+ lt dash)) (set lt (+ lt dash))
// Right triangle
(set rt caret) (set rt (+ rt newline))
(set rt (+ rt space)) (set rt (+ rt space))
(set rt (+ rt fslash)) (set rt (+ rt bang)) (set rt (+ rt bslash))
(set rt (+ rt newline))
(set rt (+ rt space)) (set rt (+ rt caret))
(set rt (+ rt dash)) (set rt (+ rt dash)) (set rt (+ rt dash))
(set rt (+ rt newline))
// n = mod(m,2)
((set m n) (loop (<=> (<=> m 2) -1) (set m (- m 2))))
// Print the top and the first triangle
(? (! (? m ( // If m
    (out space space) (out space)
))) ( // Else
    (out space caret) (out newline)
))
(set l 0)
(loop (! (! (<=> l n))) ( // While l < n
    ((set k l) (loop (<=> (<=> k 2) -1) (set k (- k 2)))) // k = mod(l,2)
    (? (! (? (! (<=> (+ k m) 1)) ( // If xor(k,m)
        (out rt)
    ))) ( // Else
        (out lt)
    ))
(set l (+ l 1))
))
(out space dash) // Final triangle
```
[Answer]
# [Charcoal](https://github.com/somebody1234/Charcoal), 17 bytes
```
Ôº¶ÔºÆ¬´‚Üô^‚Üí/!\¬∂¬≥‚ÄñÔº¥¬ª‚Üì^-
```
[Try it online!](https://tio.run/##S85ILErOT8z5/z8tv0hBwzOvoLTErzQ3KbVIQ1NToZqLM6AoM69Ew8olvzzPJzWtREdBKU5J0xouHpSZngES1FeMiYnJQ5IxBjGDUtNyUpNLQooS84qB5udqAAVruZCMBBmnC9T1/7/xf92yHAA "Charcoal ‚Äì Try It Online") Link is to verbose version of code. Explanation:
```
Ôº¶ÔºÆ¬´
```
Loop for the appropriate number of negations.
```
‚Üô^‚Üí/!\¬∂¬≥
```
Print a negation function. (The `¬≥` expands to `---`.)
```
‚ÄñÔº¥
```
Reflect the canvas.
```
¬ª‚Üì^-
```
At the end of the loop, print the empty triangle.
[Answer]
# [Python 2](https://docs.python.org/2/), 94 bytes
```
i=input();print i%2*2*" "+" ^"
while i:print['/!\\\n---^','  /!\\\n ^---'][i%2];i-=1
print" -"
```
[Try it online!](https://tio.run/##JYtBCoAgEEX3nmIaCMsaItsVnURzFzQQJmFEp7ew5X/v/fDE7fA6JZ7ZhytW9RRO9hG41EorBGwQHIp7430FHrM0siustZ6InGwlwD/BfUAu5rsuE9Pci1wjEKY0vA "Python 2 ‚Äì Try It Online")
Trying to golf this... 3 `print` statements seem awfully redundant.
[Answer]
# [Proton](https://github.com/alexander-liao/proton), 101 bytes
```
a=>{k=" ^---"for i:0..a print(["   ^",k,"---^"][i?~i%2+1:i]+"\n"+" "*(~i%2)*2+"/!\\")print(k+"\n -")}
```
[Try it online!](https://tio.run/##JYvdCoMgGIZv5dsLgWa2LdhJYF1IJnQifAga4tnYbt2KTp@fPaeSYvWmbmb6BgNyWmv4lInHV99vtGeORSwgIocudDi9w7rw/OdmUO@RVwUboUBoxcVkOyg8H9ZC3nO4AtKQv@rFR9YD "Proton ‚Äì Try It Online")
also too long lol
[Answer]
# Perl 5, 77+1 (-p) bytes
```
$\=' ^
 _';map$_%2?$\=~s,\^,  ^
  /!\\
 ^---,:$\=~s,  \^,^
/!\\
---^,,1..$_}{
```
[try it online](https://tio.run/##K0gtyjH9/18lxlZdIY5LIV7dOjexQCVe1cgeKFRXrBMTp6MAklDQV4yJ4VKI09XV1bGCSCkoACXjuMASQOE4HR1DPT2V@Nrq//8NDf7lF5Rk5ucV/9ctAAA)
[Answer]
# [Funky](https://github.com/TehFlaminTaco/Funky), 95 bytes
```
n=>{print((n%2)?" ^":"   ^")fori=n i>0i--print({"  /!\\\n ^---","/!\\\n---^"}[i%2])print"   -"}
```
[Try it online!](https://tio.run/##SyvNy678n2b7P8/WrrqgKDOvREMjT9VI015JIU7JSklBAUhppuUXZdrmKWTaGWTq6kIUVQOl9BVjYmLyFOJ0dXWVdJQgPCA7Tqk2OlPVKFYTrBJkhK5S7f80DUNjzf8A "Funky ‚Äì Try It Online")
[Answer]
# JavaScript (ES6), ~~77~~ 74 bytes
```
n=>(s=`^
  /!\\
 ^---`,n%2?`   `+s:` ^`)+`
/!\\
---${s}`.repeat(n/2)+`
 -`
```
### Try it:
```
f=
n=>(s=`^
  /!\\
 ^---`,n%2?`   `+s:` ^`)+`
/!\\
---${s}`.repeat(n/2)+`
 -`
```
```
<input oninput=o.innerHTML=f(value)>
<pre id=o>
```
[Answer]
# Java 8, 104 bytes
```
n->{String r=n%2>0?"   ^\n":" ^\n";for(;n-->0;r+=n%2<1?"  /!\\\n ^---\n":"/!\\\n---^\n");return r+" -";}
```
**Explanation:**
[Try it here.](https://tio.run/##nVBNi8IwEL3vr5gNCAmS@rGwh43WX6CXPW4VsjFKtE5Lmgoi/e110vaoFyFDePPeY@bNSV@1LEqLp/25NbmuKlhrh/cPAIfB@oM2FjYRAvwG7/AIhhMDKBQ1Gyp6VdDBGdgAwhJalOl90PoljubpdMXIvsuQ/bDuU4fCc4VSplPlx1GzmEXN5DPLMoSdlLIT95hQNAnlbag9gh8zkEw1reqnl/V/TtOHJa6F28OFMvB@h78taDEEuFXBXpKiDklJVMiRY2L4THRZnvKvmeicv@38etv5LYbLN@0D)
```
n->{                       // Method with integer parameter and String return-type
  String r=                //  Result-String, starting at:
           n%2>0?          //  If the input is odd:
            "   ^\n"       //   Start the result at "   ^" + new-line
           :               //  Else (the input is even):
            " ^\n";        //   Start the result at " ^" + new-line
  for(;n-->0;              //  Loop the input amount of times
    r+=n%2<1?              //   If the current row is even:
        "  /!\\\n ^---\n"  //    Append the result-String with "  /!\" + new-line
                           //                                  " ^---" + new-line
       :                   //   Else (the current row is odd):
        "/!\\\n---^\n"     //    Append the result-String with "/!\" + new-line
                           //                                  "---^" + new-line
  );                       //  End of loop
  return r                 //  Return the result-String
          +" -";           //   + " -"
}                          // End of method
```
[Answer]
# [Retina](https://github.com/m-ender/retina), ~~70~~ ~~68~~ 60 bytes
*thanks to @MartinEnder for -8 bytes*
```
.+
$*
r`11
21
1
¬∂  /!\¬∂ ^---
2
¬∂/!\¬∂---^
^¬∂( *)
$1 ^$&
$
¬∂ -
```
[Try it online!](https://tio.run/##K0otycxL/P9fT5tLRYurKMHQkMvIkMuQ69A2BQV9xRggFaerq8tlBBQAc4GcOK64Q9s0FLQ0uVQMFeJU1LhUQKp1//83AwA "Retina ‚Äì Try It Online")
[Answer]
# [Python 2](https://docs.python.org/2/), 73 bytes
```
lambda n:n%2*'  '+' ^%s\n -'%(-~n/2*r"""
/!\
---^
  /!\
 ^---""")[n%2*9:]
```
[Try it online!](https://tio.run/##K6gsycjPM/qfZhvzPycxNyklUSHPKk/VSEtdQUFdW10hTrU4Jk9BV11VQ7cuT99Iq0hJSYlLXzGGS1dXN45LQQHEVIgDcoDimtEgjZZWsf8LijLzShTSNCw1/wMA "Python 2 ‚Äì Try It Online")
Golfing [TFeld's solution](https://codegolf.stackexchange.com/a/148486/20260).
[Answer]
# [SOGL V0.12](https://github.com/dzaima/SOGL), 25 [bytes](https://github.com/dzaima/SOGL/blob/master/chartable.md)
```
 ^¬∂ -‚Äù.‚à´2%¬´I"X¬¨ŒíNN‚îòy7¬π‚Äò‚àÜ≈æ
```
[Try it Here!](https://dzaima.github.io/SOGLOnline/?code=JTIwJTVFJUI2JTIwLSV1MjAxRC4ldTIyMkIyJTI1JUFCSSUyMlglQUMldTAzOTJOTiV1MjUxOHk3JUI5JXUyMDE4JXUyMjA2JXUwMTdF,inputs=Mw__)
[Answer]
# [Python 2](https://docs.python.org/2/), 100 bytes
```
lambda n:n%2*'  '+' ^\n'+'\n'.join(['/!\\\n---^','  /!\\\n ^---'][i%2]for i in range(n,0,-1))+'\n -'
```
[Try it online!](https://tio.run/##JYxLCgIxEESv0i6GTjTxk40geJLpCUQ02qKVIczG08eImype8aj5szwKQstnaa/0vlwT4YQhrJmIN0xR0KvH9lkUZuTdSkTgvY/suvNHin3gadQhTLlUUlJQTbjfDNze@YO1vxPy3OaqWCibo21f "Python 2 ‚Äì Try It Online")
[Answer]
# [C (gcc)](https://gcc.gnu.org/), 87 bytes
```
f(n){for(puts(n%2?"   ^":" ^");n;)puts(n--%2?"  /!\\\n ^---":"/!\\\n---^");puts(" -");}
```
[Try it online!](https://tio.run/##JY3BCgIxDETv@YpYEBLWIHoRrOKPlAUpVHIwiq6nZb@9ZtvLMGHeZLI8cq61kPFcXh96/6Yv2fZ4C4g4hnNw4WiReyDSo/0mpWQ4iogz/XK/sg0MKG6X@ryrEcMM/g3VJtTYbJN1T6@HqJdT1GHgQsq7XvcyLNDRCn8 "C (gcc) ‚Äì Try It Online")
[Answer]
# [Python 2](https://docs.python.org/2/), 82 bytes
```
def f(n):x=n%2;print' '*x*2,'^'+(-~n/2*"\n/!\\\n---^\n  /!\\\n ^---")[x*9:]+'\n -'
```
[Try it online!](https://tio.run/##JcixDkAwEADQXzkSubZcGt0QX@J0omE5IoZa/Ho1Mb53Pvd2iEtpWQMEJbqPo1RuOK9dbgQ00bgGPdaKXrHOlCy2YGYhIs8C8At8dqmnaLp@rjEHYQqq1ekD "Python 2 ‚Äì Try It Online")
[Answer]
# [Python 3](https://docs.python.org/3/), 167 bytes
```
def f(n):
	g=[[" "]*5for _ in'  '*-~n];a=["^","/!\\","---"]
	for i in range(n):
		for r,R in zip(a,g[i*2:]):R[(i-n)%2*2+(r>"]"):]=r
	g[-2][1]="^";g[-1][1]="-";return g
```
[Try it online!](https://tio.run/##JU9BCsIwEDy3r4gLYhIbpZFeWuIjek2jFGxjBLch1IMe/HpM7V5mZxhmGP@e7xOeYrwNIxkpsjrPrNIaCBhejVMgV@JwR8iOiy@aplcaLlDAcdN1CYQQYPJs8bnkI6FHO6wpfzEU7SJ/nKd9YbXjsjasbjV1AtlWcrmn4QwGWG1USM1aSKNLo1JHk0i5EgFNGOZXQGKjDw5nCh3C4TE5pM/eU1j/Ig2oWLr4Aw "Python 3 ‚Äì Try It Online")
-4 bytes thanks to Mr. Xcoder  
-1 byte thanks to Jonathan Frech
[Answer]
# [05AB1E](https://github.com/Adriandmen/05AB1E/wiki/Commands), 42 [bytes](https://github.com/Adriandmen/05AB1E/wiki/Codepage)
```
√â¬∑>'^√∫¬∂‚Ä¢2√Ç≈∏¬ß'v√¥√Ö‚Ä¢"-
 ^\!/"√Ö–≤J12√¥IL<R√®`‚Äû -J
```
[Try it online](https://tio.run/##AUgAt/9vc2FiaWX//8OJwrc@J17DusK24oCiMsOCxbjCpyd2w7TDheKAoiItCiBeXCEvIsOF0LJKMTLDtElMPFLDqGDigJ4gLUr//zM) or [verify some more test cases](https://tio.run/##yy9OTMpM/W/qquSZV1BaYqWgZO9ny6XkX1oC4en8P9x5aLudetzhXYe2PWpYZHS46eiOQ8vVyw5vOdwK5CvpcinExSjqKx1uvbDJy9Do8BY/H5ugwysSHjXMU9D1@q9zaJv9fwA).
**Minor 42 [bytes](https://github.com/Adriandmen/05AB1E/wiki/Codepage) alternative:**
```
√â¬∑√∞√∫‚Äû^
‚Ä¢e
QŒ£≈ìKŒî‚Ä¢"- ^
\!/"√Ö–≤J8‚ÇÇ‚Äö¬£ILR√®¬ª‚Ä¶
 -J
```
[Try it online](https://tio.run/##AU0Asv9vc2FiaWX//8OJwrfDsMO64oCeXgrigKJlClHOo8WTS86U4oCiIi0gXgpcIS8iw4XQsko44oKC4oCawqNJTFLDqMK74oCmCiAtSv//Mw) or [verify some more test cases](https://tio.run/##yy9OTMpM/W/qquSZV1BaYqWgZO9ny6XkX1oC4en8P9x5aPvhDYd3PWqYF8f1qGFRKlfgucVHJ3ufmwLkKOkqxHHFKOorHW69sMnL4lFT06OGWYcW@/kEHV5xaPejhmVcCrpe/3UObbP/DwA).
**Explanation:**
```
√â              # Check if the (implicit) input-integer is odd (1 if odd; 0 if even)
 ¬∑             # Double that (2 if odd; 0 if even)
  >            # Increase it by 1 (3 if odd; 1 if even)
   '^         '# Push string "^" 
     √∫         # Pad it with the input%2*2+1 amount of leading spaces
¬∂              # Push a newline character "\n"
‚Ä¢2√Ç≈∏¬ß'v√¥√Ö‚Ä¢    '# Push compressed integer 193455283599881836
 "-\n ^\!/"√Ö–≤  # Convert it to custom base-"-\n ^\!/"
               # (which converts it to base-length and indices it into the string)
  J            # Join this list of characters together to a single string:
               #  "  /!\\n ^---\n/!\\n---^\n"
   12√¥         # Split it into parts of size 12: ["  /!\\n ^---\n","/!\\n---^\n"]
      IL       # Push a list in the range [1, input]
        <      # Decrease each by 1 to make the range [0, input)
         R     # Reverse it to range (input, 0]
          √®    # Index each into the pair of strings (0-based and modulair)
           `   # Pop and push all strings separated to the stack
‚Äû -            # Push string " -"
J              # Join all strings on the stack together
               # (and output the result implicitly)
√â¬∑             # Same as above
  √∞√∫           # Pad a space character with that many spaces
    ‚Äû^\n       # Push string "^\n"
‚Ä¢e\nQŒ£≈ìKŒî‚Ä¢     # Push integer 11080812880919929
"- ^\n\!/"√Ö–≤J  # Same as above: "/!\\n---^  /!\\n ^---"
8‚ÇÇ‚Äö            # Push 8 and 26 paired together: [8,26]
   ¬£           # Split the string into parts of that size: ["/!\\n---^","  /!\\n ^---"]
    IL         # Push a list in the range [1, input]
      R        # Reverse it to range [input, 1]
       √®       # Index each into the pair of strings (0-based and modulair)
        ¬ª      # Join this list with newline delimiter
‚Ä¶\n -          # Push string "\n -"
J              # Join all strings on the stack together
               # (and output the result implicitly)
```
[See this 05AB1E tip of mine (section *How to compress large integers?*)](https://codegolf.stackexchange.com/a/166851/52210) to understand why `‚Ä¢2√Ç≈∏¬ß'v√¥√Ö‚Ä¢` is `193455283599881836` and `‚Ä¢e\nQŒ£≈ìKŒî‚Ä¢` is `11080812880919929`.  
[The compressed ASCII-string was generation with this 05AB1E tip.](https://codegolf.stackexchange.com/a/120966/52210)
[Answer]
# [Ruby](https://www.ruby-lang.org), 97 94 bytes
```
puts "  "*(a%2)+" ^";f=->n{puts""+["/!\\\n---^","  /!\\\n ^---"][n%2];(n>1)?f[n-1]:puts(" -")}
```
[Try It Online!](https://tio.run/##JYtLCoQwEAWv0j4QktFG43JEPUg@EBdZNuKMCxHPHhWXr6reus17joNp87L9fwQifFQsO12BAvo08CjHo4DKoimcc8LMAfWdvpPCDeCtlJ3vlYxGT8kKG/99fgrE0GdONvp8AQ)
I was unable to find a way to fit the entire thing in one function, so `f` is set to the lambda.
Based on [TotallyHuman](https://codegolf.stackexchange.com/users/68615/totallyhuman)'s Python answer.
]