summaryrefslogtreecommitdiff
path: root/Arrays/arrays.b
blob: 671efff0ed04079b967da698c9572543d1edd515 (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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
implement Arrays;

include "sys.m";
include "draw.m";

sys: Sys;
print: import sys;

Arrays: module {
	init: fn(nil: ref Draw->Context, nil: list of string);
};

nums: array of int;

width: int = 6;

init(nil: ref Draw->Context, nil: list of string) {
	sys = load Sys Sys->PATH;

	# Nums
	print("Len nums: %d\n", len nums);

	nums = array[width] of int;

	print("Len nums: %d\n", len nums);

	print("[");
	for(i := 0; i < width; i++)
		print(" %d", nums[i] = i << 1);
	print("]\n\n");

	# Arr
	arr := array[12] of byte;
	arrstr := "baby ducks!!";

	for(i = 0; i < len arrstr; i++)
		arr[i] = byte arrstr[i];

	print("Len arr: %d\n", len arr);

	print("[");
	for(i = 0; i < len arr; i++)
		print(" %c", int arr[i]);
	print("]\n\n");

	# Dbl
	dbl := array[len arr *2] of byte;

	for(i = 0; i < len arr; i++)
		dbl[i*2] = dbl[i*2+1] = arr[i];

	print("Len dbl: %d\n", len dbl);

	print("[");
	for(i = 0; i < len dbl; i++)
		print(" %c", int dbl[i]);
	print("]\n\n");

	# Chars
	chars := array[] of {"a", "b", "c", "d", "e", "f"};

	print("Len chars: %d\n", len chars);

	print("[");
	for(i = 0; i < len chars; i++)
		print(" %s", chars[i]);
	print("]\n\n");

	# Nest
	nest: array of array of string;

	print("Len nest: %d\n", len nest);

	nest = array[4] of array of string;

	print("Len nest: %d\n", len nest);

	for(i = 0; i < len nest; i++)
		nest[i] = array[2 << i] of string;

	print("Lens: [");
	for(i = 0; i < len nest; i++)
		print(" %d", len nest[i]);
	print("]\n\n");

	# Buf
	buf := array[10] of {* => byte 3};

	print("Len buf: %d\n", len buf);

	print("[");
	for(i = 0; i < len buf; i++)
		print(" %d", int buf[i]);
	print("]\n\n");

	# Two
	two := array[4] of list of (string, string);

	#two = array[4] of list of (string, string);

	two[0] = ("ducks", "quack") :: two[0];

	two[2] = ("inferno", "os") :: two[2];

	print("Len two: %d\n", len two);

	print("Lens: [");
	for(i = 0; i < len two; i++)
		print(" %d", len two[i]);
	print("]\n");

	print("[");
	for(i = 0; i < len two; i++) {
		if(two[i] == nil) {
			print(" (nil, nil)");
			continue;
		}

		(s0, s1) := hd two[i];
		print(" (%s %s)", s0, s1);
	}
	print("]\n");

	exit;
}