ASCII कला के साथ लंबे गुणन की कल्पना करें


12

चुनौती

एक प्रोग्राम लिखें, जो मानक इनपुट से दो पूर्णांकों को लेता है, एक अल्पविराम द्वारा अलग किया जाता है, और फिर उन दो पूर्णांकों के लंबे गुणा के दृश्य को मानक आउटपुट में प्रिंट करता है।

उदाहरण के लिए:

इनपुट

14, 11

कार्यक्रम का उत्पादन

     14
    x11
   _____
     14
    14
  ______
    154

इनपुट

-7, 20

कार्यक्रम का उत्पादन

     -7
    x20
   _____
     00
    14
   _____
   -140

[Ass -९९९, ९९९] में हमेशा इनपुट और संख्याओं को सही मानें

मानदंड जीतना

सबसे छोटा कोड जीतता है!


जवाबों:


3

पर्ल, 108 चरस

ओब्रिग के कुछ विचारों को शामिल करते हुए, सर्वश्रेष्ठ 108 चर समाधान।

($x,$y)=<>=~/[-\d]+/g;printf"%7s
",$_ for$x,x.$y,"-"x7,(map{abs($x*$_).$"x$i++}reverse$y=~/\d/g),"-"x7,$x*$y

इससे पहले 139 चार समाधान

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चाल चालाक थी
Orabîg

5

गणितज्ञ 213 217 197 193 186 184 193 184 177

कोड

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]?
डेविड झांग 4

हाँ, अच्छी पकड़!
6

मुझे लगता है कि स्पेस में स्पेस को हटाने की अनुमति देता है "x "
atı 12uʎs

आप सही हैं। मैंने इसे छोड़ने का फैसला किया क्योंकि यह बेहतर लग रहा था (और मैं वैसे भी सबसे छोटा कोड नहीं था)।
डेविड डे

1

पायथन, 174 170:

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

फेबीओकेरेकिरा और बेय्यब ५०५ और डेविड कैरर के लिए धन्यवाद


आप print '\n'print'\n'10*a) for i,d in enumerate10*a)for i,d in enumerate"%9s\n%9i" % (h,a*b)"%9s\n%9i"%(h,a*b)
व्हॉट्सएप के

1

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


1

पर्ल , 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

आज सुबह एक विचार था:
प्रिंटफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.