Proven optimal!
((([[[()()()]]])))
Try it online!
This prints
-3
-3
-3
(There is a trailing newline)
Explanation
Brain-Flak, Brain-Flueue and Miniflak
([[[()()()]]]) Push -3
( ) Copy
( ) Copy
Flakcats
Flakcats is quite different from the other 3 flaks and I am surprised that this works in Flakcats. The three operators here are nearly the same as the ones that Brain-Flak uses.
The main difference in this particular program between Flakcats is the (...) operator which in Flakcats is equivalent to ([{}]...) in Brain-Flak. This however does not make a difference to us because it picks up zeros and thus operates much in the same way that Brain-Flak does.
Here is that program compiled into Brian-Flak:
([{}]([{}]([{}][[[()()()]]])))
Proof of optimality
This is not a formal proof, but rather an informal proof that would have to be expanded to be made more rigorous
Because of the restrictions that Brain-Flak programs must be a balanced-string and the program length must be a multiple of 3 any valid submission must be a multiple of 6 in length. This means any solution smaller than 18 must be length 12.
Because of the outputs trailing newline the final height of the stack must be a multiple of three or we will break the restrictions on output.
Any valid submission of length 12 must have 2 types of braces (having less would break the restrictions on number of distinct characters and more would mean more than 12 characters). Since the program produces output it must have a push.
This leaves us to select our other set of braces. The options are:
<...>/<>
This fails because we need to generate "value" in order to create any number other than zero we must give up a () to create a one which makes it impossible to push more than two times.
[...]/[]
This fails for the same reason the last failed. The square braces are really bad at making value. The [] monad can create value but we need to push numbers first and we then don't have enough parens left over to push three times.
{...}/{}
This one is promising, we could create a loop and use one () to push multiple times, but alas it is not possible.
In order for the loop to end there must be a zero on the stack at some point and in order for us to have the correct output we must have something other than zero on the stack at the end of the program. Since we have neither [] nor <> the zero at the end of the loop must be a implicit zero from the bottom of the stack. This means the loop cannot add any new numbers to the stack making it useless.
Since none of the brace choices can create a program of length 12 none can exist.
Alternative 24 byte solutions
(<((<((<(())>)())>)())>)
Try it online!
((<((<((<>)())>)())>)())
Try it online!
((((((()()()){}){}){})))
Try it online!
123123123will work, as currently written.) – ais523 12 hours agoabcabcabcwith a trailing newline? – ETHproductions 11 hours ago