,[.[<]<+[>>]++++[-<++++++++>],]<[<]<<<++++++++++.>>[[>]>[-<+>]>[-<+>]>>[.>>]<<[<]<<.<<[..<<]<.>>-]>[[>]>[.>>]<<[<<]>.>>[..>>]<<,<[<]<<.>>>]
Try it online!
Takes input via unary, with +
s as tally marks (allowed by the poster). Decided to rework this, as I thought the old one was a bit longer than it could be (though this one is too!).
Old Version (151 bytes):
>--[>+<++++++]<[->+>.<<]++++++++[-<+<++++>>]<++>>[<<.>>-[-<+<<.>>>]<[->+<]>>>+[-<.>>+<]>+[-<+>]<<<]>>[<<<<.>>[-<+<<.>>>]<[->+<]>+>>-[-<.>>+<]>-[-<+>]<]
Try it online!
Takes input as the starting cell. I couldn't think of a way to leverage the first half to help with the second, so there's a loop for each of them.
How It Works:
>--[>+<++++++] Create 43 ('+') two space to the left of n
<[->+>.<<] Print n '+'s while preserving n
++++++++[-<+<++++>>]<++ Create 32 (' ') and 10 ('\n')
Tape: 32 10 0 n 43 t
>>
[ Loop over the first half of the diamond
<<.>> Print a newline
-[-<+<<.>>>] Decrement n and print n spaces
<[->+<] Restore n
>>>+[-<.>>+<] Increment t and print t '+'s
>+[-<+>]<<< Increment t again and restore it
]>>
[ Loop over the second half
<<<<.>> Print a newline
[-<+<<.>>>]< Print n spaces
[->+<]>+ Restore and increment n
>>-[-<.>>+<] Decrement t and print t '+'s
>-[-<+>]< Decrement t again and restore it
]
And just for fun:
+++++++++
>
--[
>+<++
++++]<[
->+>.<<]+
+++++++[-<+
<++++>>]<++>>
[<<.>>-[-<+<<.>
>>]<[->+<]>>>+[-<
.>>+<]>+[-<+>]<<<
]>>[<<<<.>>[-<+
<<.>>>]<[->+<
]>+>>-[-<.>
>+<]>-[-<
+>]<]++
+++++
+++
+
Try it online!
n
in unary? \$\endgroup\$+
as tally mark? \$\endgroup\$n
is even? \$\endgroup\$