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 |
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.R | Title | User | Personal Name | Date | Lines |
---|---|---|---|---|---|
130.1 | TURTLE::GILBERT | Tue Jan 01 1985 03:42 | 25 | ||
$ 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 |