[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference rusure::math

Title:Mathematics at DEC
Moderator:RUSURE::EDP
Created:Mon Feb 03 1986
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:2083
Total number of notes:14613

130.0. "Floor Areas" by XENON::GAUDREAU () Tue Aug 21 1984 16:53

   This problem was one of a set given at my college as a contest between the
students and the professors, needless to say, the students killed'em.  Although,
not strictly mathematical in nature, it is an interesting problem.  Personally,
I thought it was very challenging but ever so 'simple' once I looked at it
in the 'right-way'.

   A carpet layer wants a program [algorithm] for computing the floor area for
any floor given only its outside dimensions and number of corners.  A floor
may be ANY shape [square, rectangle, "square spiral", etc] with the restriction
that all corners are right angles.  The data for the program is to be presented
in this fashion :

               XXX d1xx d2xx d3xx
where,
   XXX is the number of corners (data elements following XXX)
   d1xxx ... d3xx are direction/distance points as :
                      N02
    meaning North 2 units.

A sample floor of 5 by 4 units with an area of 20 would be :

                 +--+--+--+--+--+
                 |              |
                 +              +      The data would be :
                 |              |
                 +              +     04 N04 E05 S04 W05
                 |              |
                 +              +      The program should output 20
                 |              |
                 +--+--+--+--+--+


   I'm not sure what I want for an answer.  A general algorithm would be ok but
a working program all the better [it being an algorithm by definition].


 Joe
 -=-
T.RTitleUserPersonal
Name
DateLines
130.1TURTLE::GILBERTTue Jan 01 1985 03:4225
$ fn = -1
$ fs = -1
$ fe = +1
$ fw = +1
$ dxn =  0
$ dyn = +1
$ dxs =  0
$ dys = -1
$ dxe = +1
$ dye =  0
$ dxw = -1
$ dyw =  0
$ area = 0
$ x = 0
$ y = 0
$loop:
$ inq dn
$ d =  f$extract(0,1,dn)
$ n = 'f$extract(1,9,dn)
$ area = area + f'd * n * (x * dy'd + y * dx'd)
$ x = x + n * dx'd
$ y = y + n * dy'd
$ m = f$fao("Area = !SL/2, at (!SL,!SL)", area, x, y)
$ write sys$output m
$ goto loop