Sunday, May 29, 2016

Helper Perl nand2tetris

Go from

Register( in=in, load=a, out=outA );
Register( in=in, load=a, out=outA );
Register( in=in, load=a, out=outA );
Register( in=in, load=a, out=outA );

Register( in=in, load=a, out=outA );
Register( in=in, load=a, out=outA );
Register( in=in, load=a, out=outA );
Register( in=in, load=a, out=outA );

to

Register( in=in, load=a, out=outA );
Register( in=in, load=b, out=outB );
Register( in=in, load=c, out=outC );
Register( in=in, load=d, out=outD );

Register( in=in, load=e, out=outE );
Register( in=in, load=f, out=outF );
Register( in=in, load=g, out=outG );
Register( in=in, load=h, out=outH );

easily (helps with the RAM8 example). Yes, in this case, it's faster to type manually :) But then, why are you a techie :) ?

perl -p -e 'BEGIN{$i=0} s/(=(?:out)?)(a)/sprintf("$1%c",ord($2)+$i )/gei and $i++;' 

No comments: