Smiley Triangle 61 byte

anarchy golf - Smileys Triangle ですが、Nyhx さんのコードを参考にしたら、C で 61 byte のコードができました。なるほど strcat ですか。ichirin2501 さんのコードにもう少し手を加えれば 61 byte になります。
それまでの私の記録は 66 byte でしたが、こんなコードでした。

i,j;
main(){
    for(;j<1057;)
        printf(":\n:-\0)"+(i*i-i<j++|!i?!!i++:5));
}

ややこし過ぎて、このアルゴリズムのままこれ以上縮めるのは私には無理です。教訓:トリッキー過ぎるコードを書いても後々縮めにくくなるのでよくない。