JSFiddle - React, Tailwind, and code Playground

JavaScript

function g(a,b,c){x=[];while(a>0||b>0||c>0){i=b<3||a<4?a:4;a-=i;if(i>3&&b>1){b-=2;i++}else{i+=(c--<b&&i>4?0:.1)+(b-->0?.5:0)}x.push(i*1e3)}return x}

function alertResult(a,b,c){alert("g("+a+","+b+","+c+") = "+JSON.stringify(g(a,b,c)));}
alertResult(1,2,3);
alertResult(3,4,1);
alertResult(7,5,1);
alertResult(21,14,2);
alertResult(5,1,1);
alertResult(5,1,0);
alertResult(6,2,0);
alertResult(3,0,7);
alertResult(10,0,0);
alertResult(0,10,0);
alertResult(0,0,10);
alertResult(5,1,7);