home *** CD-ROM | disk | FTP | other *** search
- \ File trip3.seq Problem 4.4 Solutions by Dave Brown
-
- \ 1st Version of Brute Force Method. ( Tries every possible
- \ combination eg. 1 1 1, 1 1 2, 1 1 3, 1 1 4 )
- \ Note: This version does not work by Levels.
- \ This version uses Variables and is also quite slow.
-
- \ A, B, and C hold the sides, AA, BB, and CC hold the sides
- \ squared. N holds the largest A can be, not the Level.
- VARIABLE A VARIABLE B VARIABLE C VARIABLE N
- VARIABLE AA VARIABLE BB VARIABLE CC
-
- : ?CR #OUT @ 70 > IF CR ASCII | EMIT THEN ;
-
- : .ABC ( -- )
- ?CR A @ 7 .R B @ 7 .R C @ 7 .R
- SPACE ASCII | EMIT SPACE ;
-
- \ Brute force method..1st Vesion. 20:39DTB04/12/87
- \ Requires no stack input
- : TRIP3A ( -- )
- CR ." What is the largest A can be?"
- CR ." -->" #IN N !
- CR N @ 1 DO I A ! I DUP * AA !
- N @ 2* I DO I B ! I DUP * BB !
- J I + I DO I C ! I DUP * CC !
- AA @ BB @ + CC @ =
- IF .ABC THEN
- LOOP LOOP
- KEY? ?LEAVE ( any key escape ) LOOP ;
-
- \ 2nd Version of Brute Force Method. 20:43DTB04/12/87
- \ Faster Version of Brute Force, uses only 2 Variables
- VARIABLE N VARIABLE K
-
- : ?CR #OUT @ 70 > IF CR ASCII | EMIT THEN ;
-
- : TRIP3B ( -- )
- CR ." What is the largest A can be?"
- CR ." -->" #IN N ! CR
- 72 #OUT ! ?CR
- N @ 1 DO I K !
- N @ 2* I DO I DUP * J DUP * +
- J I + I DO DUP I DUP * =
- IF ?CR K @ 7 .R
- J 7 .R
- I 7 .R 2 SPACES ASCII | EMIT
- THEN
- LOOP DROP LOOP
- KEY? ?LEAVE ( any key escape ) LOOP ;
-
-
- \ Sorts Triples out by their small side. 21:13DTB04/12/87
- \ The higher the level is, the slower it will go.
-
- \ Uses only one Variable.
- VARIABLE K
-
- : ?CR #OUT @ 70 > IF CR THEN ;
-
- : TRIP3C ( -- )
- CR ." Search up to what level? "
- CR ." -->" #IN
- CR DUP DUP * 3 DO I K !
- DUP 2 MAX 1 DO
- I 1 ?DO
- J J * I I * - DUP K @ =
- IF ?CR 7 U.R I J 2 * * 7 U.R
- J J * I I * + 7 U.R 3 SPACES
- ELSE DROP
- THEN LOOP LOOP
- KEY? ?LEAVE LOOP DROP ;
-