Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
61
Task/Periodic-table/ALGOL-68/periodic-table.alg
Normal file
61
Task/Periodic-table/ALGOL-68/periodic-table.alg
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
BEGIN # display the period and group number of an element, #
|
||||
# given its atomic number #
|
||||
INT max atomic number = 118; # highest known element #
|
||||
# the positions are stored as: #
|
||||
# ( group number * group multiplier ) + period #
|
||||
INT group multiplier = 100;
|
||||
[ 1 : max atomic number ]INT position;
|
||||
# construct the positions of the elements in the table #
|
||||
BEGIN
|
||||
STRING periodic table = "- ="
|
||||
+ "-- -----="
|
||||
+ "-- -----="
|
||||
+ "-----------------="
|
||||
+ "-----------------="
|
||||
+ "--8--------------="
|
||||
+ "--9--------------="
|
||||
;
|
||||
INT period := 1;
|
||||
INT group := 1;
|
||||
INT element := 1;
|
||||
FOR t FROM LWB periodic table TO UPB periodic table DO
|
||||
CHAR p = periodic table[ t ];
|
||||
IF p = "8" OR p = "9" THEN
|
||||
# lantanoids or actinoids #
|
||||
INT series period = IF p = "8" THEN 8 ELSE 9 FI;
|
||||
INT series group := 4;
|
||||
FOR e TO 15 DO
|
||||
position[ element ] := ( group multiplier * series group ) + series period;
|
||||
element +:= 1;
|
||||
series group +:= 1
|
||||
OD
|
||||
ELIF p /= " " THEN
|
||||
# there is a single element here #
|
||||
position[ element ] := ( group multiplier * group ) + period;
|
||||
element +:= 1;
|
||||
IF p = "=" THEN
|
||||
# final element of the period #
|
||||
period +:= 1;
|
||||
group := 0
|
||||
FI
|
||||
FI;
|
||||
group +:= 1
|
||||
OD
|
||||
END;
|
||||
# display the period and group numbers of test elements #
|
||||
[]INT test = ( 1, 2, 29, 42, 57, 58, 59, 71, 72, 89, 90, 103, 113 );
|
||||
FOR t FROM LWB test TO UPB test DO
|
||||
INT e = test[ t ];
|
||||
IF e < LWB position OR e > UPB position THEN
|
||||
print( ( "Invalid element: ", whole( e, 0 ), newline ) )
|
||||
ELSE
|
||||
INT period = position[ e ] MOD group multiplier;
|
||||
INT group = position[ e ] OVER group multiplier;
|
||||
print( ( "Element ", whole( e, -3 )
|
||||
, " -> ", whole( period, 0 ), ", ", whole( group, -2 )
|
||||
, newline
|
||||
)
|
||||
)
|
||||
FI
|
||||
OD
|
||||
END
|
||||
Loading…
Add table
Add a link
Reference in a new issue