This commit is contained in:
Ingy döt Net 2013-10-27 22:24:23 +00:00
parent 6f050a029e
commit 776bba907c
3887 changed files with 59894 additions and 7280 deletions

View file

@ -0,0 +1,19 @@
#!/usr/bin/awk -f
BEGIN {
split("cul-de-sac",a,"-");
split("1-2-3",b,"-");
concat_array(a,b,c)
for (i in c) {
print i,c[i];
}
}
function concat_array(a,b,c) {
for (i in a) {
c[++nc]=a[i];
}
for (i in b) {
c[++nc]=b[i];
}
}

View file

@ -0,0 +1,55 @@
MODULE ArrayConcat;
IMPORT StdLog;
PROCEDURE Concat(x: ARRAY OF INTEGER; y: ARRAY OF INTEGER; OUT z: ARRAY OF INTEGER);
VAR
i: INTEGER;
BEGIN
ASSERT(LEN(x) + LEN(y) <= LEN(z));
FOR i := 0 TO LEN(x) - 1 DO z[i] := x[i] END;
FOR i := 0 TO LEN(y) - 1 DO z[i + LEN(x)] := y[i] END
END Concat;
PROCEDURE Concat2(x: ARRAY OF INTEGER;y: ARRAY OF INTEGER): POINTER TO ARRAY OF INTEGER;
VAR
z: POINTER TO ARRAY OF INTEGER;
i: INTEGER;
BEGIN
NEW(z,LEN(x) + LEN(y));
FOR i := 0 TO LEN(x) - 1 DO z[i] := x[i] END;
FOR i := 0 TO LEN(y) - 1 DO z[i + LEN(x)] := y[i] END;
RETURN z;
END Concat2;
PROCEDURE ShowArray(x: ARRAY OF INTEGER);
VAR
i: INTEGER;
BEGIN
i := 0;
StdLog.Char('[');
WHILE (i < LEN(x)) DO
StdLog.Int(x[i]);IF i < LEN(x) - 1 THEN StdLog.Char(',') END;
INC(i)
END;
StdLog.Char(']');StdLog.Ln;
END ShowArray;
PROCEDURE Do*;
VAR
x: ARRAY 10 OF INTEGER;
y: ARRAY 15 OF INTEGER;
z: ARRAY 25 OF INTEGER;
w: POINTER TO ARRAY OF INTEGER;
i: INTEGER;
BEGIN
FOR i := 0 TO LEN(x) - 1 DO x[i] := i END;
FOR i := 0 TO LEN(y) - 1 DO y[i] := i END;
Concat(x,y,z);StdLog.String("1> ");ShowArray(z);
NEW(w,LEN(x) + LEN(y));
Concat(x,y,z);StdLog.String("2:> ");ShowArray(z);
StdLog.String("3:> ");ShowArray(Concat2(x,y));
END Do;
END ArrayConcat.

View file

@ -1,11 +1,9 @@
#define std'routines'arrays'*.
#define extensions'io.
#symbol Program =
#symbol program =
[
#var a := (1,2,3).
#var b := (4,5).
#var c := a~earrayop add:b.
'program'output << "(" << a << ") + (" << b << ") = (" << c <<")%n".
consoleEx write:"(" write::a write:") + (" write::b write:") = (" write::(a + b) writeLine:")".
].

View file

@ -1 +1 @@
[1 2] [3 4] append
[1 2] [3 4] append collapse .