Answers:
最佳108字符解决方案,结合了Orabig的一些想法。
($x,$y)=<>=~/[-\d]+/g;printf"%7s
",$_ for$x,x.$y,"-"x7,(map{abs($x*$_).$"x$i++}reverse$y=~/\d/g),"-"x7,$x*$y
早期的139 char解决方案
sub P{sprintf"%*d",@_}
($x,$y)=<>=~/[^,]+/g;$,=$/;
print P(7,$x)," x".P(4,$y),"-"x7,(map{P 7-$i++,abs$_*$x}reverse$y=~/\d/g),
"-"x7,P 7,$x*$y
$y=~/\d/g
招很聪明
码
a_~g~b_ :=
With[{e = IntegerDigits@b}, Column[Flatten@{a, UnderBar["x " <> IntegerString[b]],
Table[Row @@ {PadRight[{a Reverse[e][[i]]}, i, " "]}, {i, Length@e}], OverBar[a b]},
Alignment -> Right]]
用法
g[845, 921]
IntegerString[921]
您的意思IntegerString[b]
吗?
"x "
。
Python,174170:
a,b=input();r,s=str(a),str(b);h=len(r+s)*'-';print'\n'.join(["%9s\n%9s\n%9s"%(r,'x'+s,h)]+["%%%ii"%(9-i)%(int(d)%10*a)for i,d in enumerate(s[::-1])]+["%9s\n%9i"%(h,a*b)])
用法:严格按照要求运行,然后在标准输入中输入值。
要查看运行情况:http : //ideone.com/S8xNb
输出:
1234
x5678
--------
9872
8638
7404
6170
--------
7006652
感谢fabiocerqueira和beary605和David Carraher
print '\n'
-> print'\n'
,10*a) for i,d in enumerate
-> 10*a)for i,d in enumerate
,"%9s\n%9i" % (h,a*b)
->"%9s\n%9i"%(h,a*b)
Python,145,另一个答案,输出有些不同。
码
a,b=input();h=6*'-';print'\n'.join(["%6i\nx%5i\n%s"%(a,b,h)]+["%%%ii"%(6-i)%(int(d)%10*a)for i,d in enumerate(str(b)[::-1])]+["%s\n%6i"%(h,a*b)])
用法
按照要求
输出量
999
x 999
------
8991
8991
8991
------
998001
要查看运行情况:http : //ideone.com/mdR18
Perl中,157个 151 150 144 141 133字符:
($x,$y)=<>=~/[-\d]+/g;map{$z=~s/z/ z/g;$z=(abs$x*$_)."z$z"}split//,abs$y;map{printf"%6s
",$_}$x,"x$y",$b="-"x6,(split/z/,$z),$b,$x*$y
用法:
>echo "-123, 456" | perl mult.pl
-123
x456
-------
738
615
492
-------
-56088