blob: 9a79ad696508e13c762c20d24112afb18363d5f4 (
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
|
TYPE Pair
DECLARE X : INTEGER
DECLARE Y : INTEGER
ENDTYPE
TYPE PairPtr = ^Pair
PROCEDURE IgnoreCopy(P : Pair)
P.X <- 999
ENDPROCEDURE
PROCEDURE Shift(BYREF X : INTEGER, Y : INTEGER)
X <- X + 1
Y <- Y - 1
ENDPROCEDURE
FUNCTION Triangle(N : INTEGER) RETURNS INTEGER
IF N = 0 THEN
RETURN 0
ENDIF
RETURN N + Triangle(N - 1)
ENDFUNCTION
DECLARE Count : INTEGER
DECLARE Index : INTEGER
DECLARE N : INTEGER
DECLARE Value : Pair
DECLARE Saved : Pair
DECLARE P : PairPtr
INPUT Count
FOR Index <- 1 TO Count
INPUT N
DECLARE X : INTEGER
DECLARE Y : INTEGER
INPUT X
INPUT Y
Value.X <- X
Value.Y <- Y
Saved <- Value
CALL IgnoreCopy(Value)
P <- ^Value
P^.X <- P^.X + P^.Y
CALL Shift(X, Y)
OUTPUT Value.X, ":", Saved.X, ":", X, ":", Y, ":", Triangle(N)
NEXT Index
|