blob: 79277b491e501f034d436936f7ee5d8c9b020635 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
#! /usr/bin/env gforth
\ Challenge 089
\
\ TASK #2 � Magical Matrix
\ Submitted by: Mohammad S Anwar
\ Write a script to display matrix as below with numbers 1 - 9.
\ Please make sure numbers are used once.
\
\ [ a b c ]
\ [ d e f ]
\ [ g h i ]
\ So that it satisfies the following:
\
\ a + b + c = 15
\ d + e + f = 15
\ g + h + i = 15
\ a + d + g = 15
\ b + e + h = 15
\ c + f + i = 15
\ a + e + i = 15
\ c + e + g = 15
\ Test a brute-force method; for a better algorithm see my perl solution.
: solve
1 2 3 4 5 6 7 8 9 { a b c d e f g h i } \ create 9 local variables
0 TO a BEGIN a 1+ TO a a 10 < WHILE
0 TO b BEGIN b 1+ TO b b 10 < WHILE
b a <> IF
0 TO c BEGIN c 1+ TO c c 10 < WHILE
c a <> c b <> AND IF
0 TO d BEGIN d 1+ TO d d 10 < WHILE
d a <> d b <> d c <> AND AND IF
0 TO e BEGIN e 1+ TO e e 10 < WHILE
e a <> a b <> e c <> e d <> AND AND AND IF
0 TO f BEGIN f 1+ TO f f 10 < WHILE
f a <> f b <> f c <> f d <> f e <> AND AND AND AND IF
0 TO g BEGIN g 1+ TO g g 10 < WHILE
g a <> g b <> g c <> g d <> g e <> g f <>
AND AND AND AND AND IF
0 TO h BEGIN h 1+ TO h h 10 < WHILE
h a <> h b <> h c <> h d <> h e <> h f <> h g <>
AND AND AND AND AND AND IF
0 TO i BEGIN i 1+ TO i i 10 < WHILE
i a <> i b <> i c <> i d <>
i e <> i f <> i g <> i h <>
AND AND AND AND AND AND AND IF
a b c + + 15 = IF
d e f + + 15 = IF
g h i + + 15 = IF
a d g + + 15 = IF
b e h + + 15 = IF
c f i + + 15 = IF
a e i + + 15 = IF
c e g + + 15 = IF
." [ " a . b . c . ." ]" CR
." [ " d . e . f . ." ]" CR
." [ " g . h . i . ." ]" CR
EXIT
THEN
THEN
THEN
THEN
THEN
THEN
THEN
THEN
THEN
REPEAT
THEN
REPEAT
THEN
REPEAT
THEN
REPEAT
THEN
REPEAT
THEN
REPEAT
THEN
REPEAT
THEN
REPEAT
REPEAT
;
solve BYE
|