Olga Tuzova wrote: > > Hello everybody, > > We have enjoyed Word Sculpturing proposed by Yehuda, and what about > number sculpturing? Let's begin with the following pyramid. > > This pyramid uses the procedure of multiplication which I took from > the "Informatics", the newspaper I've mentioned. This procedure > imitates the process of large number multiplication we follow using > pen and paper. As the integers are not large here, it isn't > necessary to use the procedure, but without it the program > wouldn't be interesting at all. :-) > I tried, but failed, to define the limits of it's implementation. The > procedure allows to multiply the large integers, when the result > is greater then the largest allowed integer, but in this process the > intermediate sums shouldn't exceed it. I'm not sure, I'm making any > sense. What I mean is -- > > let's multiply 234 and 567. > The result may be obtained as > 234 * 7 + (234 * 6) * 10 + (234 * 5 ) * 100 > So, every time we have to multiply 234 (the first integer) and > 1-digital integer and then move the result left and add it to the > previous intermediate sum. If we'll store the result as a word (why > not, if it's useful? :-) ) then it may exceed the largest allowed > integer. But intermediate results shouldn't exceed this largest > integer. And I don't know how this problem may be solved before hand, > that is, before we begin multiplication and get something like > "remainder doesn't like 999 999 999 999 999 as an input". > > And now here is a Number Pyramid: > > to number.pyramid.ini > ct > number.pyramid 1 1 > end > > to number.pyramid :l :k > if :l>9 [stop] > (pr :k "*8+ :l "= proc.mult :k 8 :l ") > number.pyramid :l+1 10*:k+:l+1 > end > > to proc.mult :x :y :s :res > ifelse not :y=0 [make "s :s+:x*(remainder :y 10) > op proc.mult :x int :y/10 int :s/10 ~ > word remainder :s 10 :res]~ > [if not :s=0 [make "res word :s :res] op :res ] > end > ------------------------------------ > Hope, you'll like it. > Olga, Beautiful AND interesting. If you want your number pyramid to look more like a number pyramid, you might try the following (there's really no need for PROC.MULT here): ======================================= to main ; Pyramid by Olga T. ts ct pyramid 1 1 end to pyramid :l :k if :l>9[stop] pr(word form :k 9 0 "*8+ :l "= :k*8+:l) pyramid :l+1 10*:k+:l+1 end ======================================= Enjoy, [[Yehuda]] --------------------------------------------------------------- Please post messages to the Logo forum to logo-l@gsn.org. Mail questions about the list administration to logofdn@gsn.org. To unsubscribe send unsubscribe logo-l to majordomo@gsn.org.
Global SchoolNet Foundation -
Linking Kids Around the World!
Copyright GSN - All Rights Reserved
- Comments
& Questions
Visit GSN's
Global
Schoolhouse for more exciting learning resources!
Search our Site
-
Home