Martin 1624467700 learn # R=ivxlcdm ; r(){ local r= i=3 j k v=$1 ; for((i=3;i>=0;--i)) do ((j=10**i, k=v/j, v%=j, i<3))&&{ ((k%5==4 )) && r+=${R:i*2:1} ; ((k>3)) && r+=${R:i*2+(k+1)/5:1} ; } ; ((k++,k%=5)) && for((;--k;))do r+=${R:i*2:1}; done done ; printf '%s ' "$r" ; } ; for p in {1..20} {21..111..3} ; do r $p ; done