Arrays: Difference between revisions

2,660 bytes added ,  2 years ago
Line 5,836:
Assign a value to a certain key:
<lang php>$AssignArray["CertainKey"] = "Value";</lang>
 
=={{header|Picat}}==
Picat has support both arrays and lists. Arrays are general much faster than lists, especially for many elements and if there are much element accesses/updates.
 
Here are some examples how to use arrays.
<lang Picat>import util.
 
go =>
 
% Create an array of length 10
Len = 10,
A = new_array(Len),
bind_vars(A,0), % Initialize all values to 0
println(a=A),
A[1] := 1, % Assign a value
println(a=A),
println(a1=A[1]), % print first element
% (re)assign a value
foreach(I in 1..Len) A[I] := I end,
println(A[3..7]), % print some interval of an array
nl,
% 2D arrays
A2 = new_array(4,4),
foreach(I in 1..4, J in 1..4)
A2[I,J] := (I-1)*4+J
end,
foreach(Row in A2) println(Row) end,
 
% These functions are defined in the util module.
% They returns lists so we have to convert them to arrays.
println('rows '=to_array(A2.rows)),
println('columns '=A2.columns.to_array),
println(diagonal1=A2.diagonal1.to_array),
println(diagonal2=A2.diagonal2.to_array),
 
nl,
% Pushing values to an array
A3 = {}, % an empty array
foreach(I in 1..4)
A3 := A3 ++ {10**I+I}
end,
println(a3=A3),
nl,
 
% Some misc functions
println([first=A3.first(), second=A3.second(),last=A3.last()]),
 
nl.
</lang>
 
Output:
 
<pre>
a = {0,0,0,0,0,0,0,0,0,0}
a = {1,0,0,0,0,0,0,0,0,0}
a1 = 1
{3,4,5,6,7}
 
{1,2,3,4}
{5,6,7,8}
{9,10,11,12}
{13,14,15,16}
rows = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}
columns = {{1,5,9,13},{2,6,10,14},{3,7,11,15},{4,8,12,16}}
diagonal1 = {1,6,11,16}
diagonal2 = {4,7,10,13}
 
a3 = {11,102,1003,10004}
 
[first = 11,second = 102,last = 10004]
 
</pre>
 
This was inspired by the Prolog example showing how lists can be used.
<lang Picat>listvariant:-
List = new_list(5), % create a list of length 5
nth(1,List,a), % put an a at position 1 , nth/3 uses indexing from 1
nth(4,List,b), % put an b at position 4
println(list=List),
append(List,[d],List2), % append an d at the end , List2 has 5 elements
println(list2=List2),
Add = new_list(5), % create a new list of length 5
append(List2,Add,List3), % append 5 free variables to List2
println(len=List3.len), % List3 now has 11 elements
println(list3=List3),
Value = List3[1], % get the value at position 1
println(value=Value). % will print out a
</lang>
 
Output ("_4970" etc are undefined variable):
<pre>
list = [a,_4970,_4980,b,_49a0]
list2 = [a,_4970,_4980,b,_49a0,d]
len = 11
list3 = [a,_4970,_4980,b,_49a0,d,_4e50,_4e60,_4e70,_4e80,_4e90]
value = a
</pre>
 
=={{header|PicoLisp}}==
495

edits