සාරාංශය
Source code
<syntaxhighlight lang="perl">
!/usr/bin/perl
my @elements = (
sym, pe, g, RGB color, mass, natural radionuclide (0=no, "+"=many, undef=controversial or already stated)
["n", 0, 18, 0, 1, 0 ],
["H", 1, 1, "#FFF", 0, 3 ],
["He", 1, 18, "#FFF", 0, 0 ],
["Li", 2, 1, "#FFF", 0, 0 ],
["Be", 2, 2, "#0F0", 9],
["B", 2, 13, "#FFF", 0, 0 ],
["C", 2, 14, "#FFF", 0, 14 ],
["N", 2, 15, "#FFF", 0, 0 ],
["O", 2, 16, "#FFF", 0, 0 ],
["F", 2, 17, "#0F0", 19],
["Ne", 2, 18, "#FFF", 0, 0 ],
["Na", 3, 1, "#0F0", 23],
["Mg", 3, 2, "#FFF", 0, 0 ],
["Al", 3, 13, "#0F0", 27],
["Si", 3, 14, "#FFF", 0, 0 ],
["P", 3, 15, "#0F0", 31],
["S", 3, 16, "#FFF", 0, 0 ],
["Cl", 3, 17, "#FFF", 0],
["Ar", 3, 18, "#FFF", 0, 0 ],
["K", 4, 1, "#FFF", 0, 40 ],
["Ca", 4, 2, "#FFF", 0, 48, "_" ],
["Sc", 4, 3, "#0F0", 45],
["Ti", 4, 4, "#FFF", 0, 0 ],
["V", 4, 5, "#9FF", 51, 50, "_" ],
["Cr", 4, 6, "#FFF", 0, 0 ],
["Mn", 4, 7, "#0F0", 55],
["Fe", 4, 8, "#FFF", 0, 0 ],
["Co", 4, 9, "#0F0", 59],
["Ni", 4, 10, "#FFF", 0, 0 ],
["Cu", 4, 11, "#FFF", 0, 0 ],
["Zn", 4, 12, "#FFF", 0, 0 ],
["Ga", 4, 13, "#FFF", 0, 0 ],
["Ge", 4, 14, "#FFF", 0, 76, "_" ],
["As", 4, 15, "#0F0", 75],
["Se", 4, 16, "#FFF", 0, 82, "_" ],
["Br", 4, 17, "#FFF", 0, 0 ],
["Kr", 4, 18, "#FFF", 0, 78, "_" ],
["Rb", 5, 1, "#0FF", 85, 87 ],
["Sr", 5, 2, "#FFF", 0, 0 ],
["Y", 5, 3, "#0F0", 89],
["Zr", 5, 4, "#FFF", 0, 96, "_" ],
["Nb", 5, 5, "#0F0", 93],
["Mo", 5, 6, "#FFF", 0, 100, "_" ],
["Tc", 5, 7, "#F0F", 0],
["Ru", 5, 8, "#FFF", 0, 0 ],
["Rh", 5, 9, "#0F0", 103],
["Pd", 5, 10, "#FFF", 0, 0 ],
["Ag", 5, 11, "#FFF", 0, 0 ],
["Cd", 5, 12, "#FFF", 0, "_" ],
["In", 5, 13, "#9FF", 113, 115, "_" ],
["Sn", 5, 14, "#FFF", 0, 0 ],
["Sb", 5, 15, "#FFF", 0, 0 ],
["Te", 5, 16, "#FFF", 0, "+" ],
["I", 5, 17, "#0F0", 127],
["Xe", 5, 18, "#FFF", 0, "+" ],
["Cs", 6, 1, "#0F0", 133],
["Ba", 6, 2, "#FFF", 0, 130, "_" ],
["La", 6, 0, "#0FF", 139, 138],
["Ce", 6, 0, "#FFF", 0, 0 ],
["Pr", 6, 0, "#0F0", 141],
["Nd", 6, 0, "#FFF", 0, "_" ],
["Pm", 6, 0, "#F0F", 0],
["Sm", 6, 0, "#FFF", 0, "+" ],
["Eu", 6, 0, "#9FF", 153, 151, "_" ],
["Gd", 6, 0, "#FFF", 0, 152, "_" ],
["Tb", 6, 0, "#0F0", 159],
["Dy", 6, 0, "#FFF", 0, 0 ],
["Ho", 6, 0, "#0F0", 165],
["Er", 6, 0, "#FFF", 0, 0 ],
["Tm", 6, 0, "#0F0", 169],
["Yb", 6, 0, "#FFF", 0, 0 ],
["Lu", 6, 0, "#0FF", 175, 176 ],
["Hf", 6, 4, "#FFF", 0, 174, "_" ],
["Ta", 6, 5, "#FFF", 0, 0 ],
["W", 6, 6, "#FFF", 0, 180, "_" ],
["Re", 6, 7, "#0FF", 185, 187 ],
["Os", 6, 8, "#FFF", 0, 186, "_" ],
["Ir", 6, 9, "#FFF", 0, 0 ],
["Pt", 6, 10, "#FFF", 0, 190 ],
["Au", 6, 11, "#0F0", 197],
["Hg", 6, 12, "#FFF", 0, 0 ],
["Tl", 6, 13, "#FFF", 0, 0 ],
["Pb", 6, 14, "#FFF", 0, 0 ],
["Bi", 6, 15, "#F60", 209],
["Po", 6, 16, "#F0F", 0],
["At", 6, 17, "#F0F", 0],
["Rn", 6, 18, "#F0F", 0],
["Fr", 7, 1, "#F0F", 0],
["Ra", 7, 2, "#F0F", 0],
["Ac", 7, 0, "#F0F", 0],
["Th", 7, 0, "#F00", 0, "+" ],
["Pa", 7, 0, "#F00", 231],
["U", 7, 0, "#F0F", 0, "+" ],
["Np", 7, 0, "#F0F", 0],
["Pu", 7, 0, "#F0F", 0],
["Am", 7, 0, "#F0F", 0, 0 ],
["Cm", 7, 0, "#F0F", 0, 0 ],
["Bk", 7, 0, "#F0F", 0, 0 ],
["Cf", 7, 0, "#F0F", 0, 0 ],
["Es", 7, 0, "#F0F", 0, 0 ],
["Fm", 7, 0, "#F0F", 0, 0 ],
["Md", 7, 0, "#F0F", 0, 0 ],
["No", 7, 0, "#F0F", 0, 0 ],
["Lr", 7, 0, "#F0F", 0, 0 ],
["Rf", 7, 4, "#F0F", 0, 0 ],
["Db", 7, 5, "#F0F", 0, 0 ],
["Sg", 7, 6, "#F0F", 0, 0 ],
["Bh", 7, 7, "#F0F", 0, 0 ],
["Hs", 7, 8, "#F0F", 0, 0 ],
["Mt", 7, 9, "#F0F", 0, 0 ],
["Ds", 7, 10, "#F0F", 0, 0 ],
["Rg", 7, 11, "#F0F", 0, 0 ],
["Cn", 7, 12, "#F0F", 0, 0 ],
["Nh", 7, 13, "#F0F", 0, 0 ],
["Fl", 7, 14, "#F0F", 0, 0 ],
["Mc", 7, 15, "#F0F", 0, 0 ],
["Lv", 7, 16, "#F0F", 0, 0 ],
["Ts", 7, 17, "#F0F", 0, 0 ],
["Og", 7, 18, "#F0F", 0, 0 ],
);
sub start_box {
my $fill="";
$fill=' style="fill:'.$_[2].'"' if ($_[2]);
print "<g> <rect$fill x=\"".(20*$_[1]-19)."\" width=\"18\" y=\"".($_[0]-19)."\" height=\"18\"/> ";
};
sub make_tria {
my $fill="";
$fill=' style="fill:'.$_[2].'"' if ($_[2]);
print "<polyline$fill points=\""
.(20*$_[1]-19).",".($_[0]-19)." "
.(20*$_[1]-12).",".($_[0]-19)." "
.(20*$_[1]-19).",".($_[0]-14)
."\"/> ";
};
sub make_text {
my $cl="";
$cl=' class="'.$_[3].'"' if ($_[3]);
print "<text$cl x=\"".$_[0]."\" y=\"".$_[1]."\">".$_[2]."</text> ";
};
sub smart_symbol {
make_text ($_[0], $_[1], $_[2], (length($_[2])>2)?"smallsym":"sym");
};
sub smart_number {
my $x = $_[0] - 3;
my $cl = "num";
if ( $_[2] >=100 ) { $cl = "smallnum"; $x -= 3; }
elsif ( $_[2] >=10 ) { $x -= 3; };
make_text ($x, $_[1], $_[2], $cl);
};
sub print_Z {
my $ref = $elements[$_[0]];
return unless $ref;
my $intro;
my $base_y = 20 * $ref->[1];
my $group = $ref->[2];
if ($group == 1) { # First element in a period
$intro = $ref->[1];
}
elsif (!$group) {
if ( $ref->[1] == 6) { # Lanthanoid
if ($_[0] == 57) { # Lanthanum
start_box($base_y, 3); make_text (45, $base_y-8, "*", "sym"); print "</g>";
$intro = "* lanthanoids";
};
$base_y = 168;
$group = $_[0] - 54;
}
elsif ( $ref->[1] == 7) { # Actinoid
if ($_[0] == 89) { # Actinium
start_box($base_y, 3); make_text (43, $base_y-8, "**", "sym"); print "</g>";
$intro = "** actinoids";
};
$base_y = 190;
$group = $_[0] - 86;
}
else { return; };
};
if ($intro) {
print "\n";
make_text (($intro=~/^\*/)?3:-5, $base_y-10, $intro) if ($intro);
print "\n";
};
start_box ($base_y, $group, $ref->[3] # background (if defined)
);
if (defined($ref->[5])) {
if ($ref->[5] =~ /^[\+_]/) { # several radionuclides
print '<rect class="rnm"'.(($ref->[5]=~/^_/)?' style="fill:#F96"':)
.' x="'.(20*$group-19).'" width="5" y="'.($base_y-19).'" height="4"/> ';
}
elsif ($ref->[5]) {
make_tria ($base_y, $group,
($ref->[6])?"#F60" #several "radionuclides" are practically stable
:"#F00");
}
else { make_tria ($base_y, $group); }; # no radionuclides (the default style)
};
smart_number (20*$group-11, $base_y-5, $_[0]); # Atomic number
smart_symbol (20*$group-13, $base_y-9, $ref->[0]); # Symbol
smart_number (20*$group-12, $base_y-11, $ref->[4]) if ($ref->[4]); # Mass number
print "</g>\n"; # end box
};
print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\
<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd \">\
<svg xmlns=\"http://www.w3.org/2000/svg \" xml:space=\"preserve\" width=\"1098\" height=\"588\" viewBox=\"-5 -6 366 196\"\
xmlns:xlink=\"http://www.w3.org/1999/xlink \">\
<defs>\
<style type=\"text/css\">\
<![CDATA[\
rect {stroke:#666; stroke-width:1px; fill:none} /* for cells */\
text {fill:#000; font-family:sans; font-size:5px; stroke:none} /* periods and groups */\
.sym {font-family:serif; font-size:7px}\
.smallsym {font-family:serif; font-size:5.5px} /* Uu? */\
.num {font-size:4px} /* up to 99 */\
.smallnum {font-size:3px} /* 100 and greater */\
polyline {stroke:none; fill:#000} /* this default for \"no radionuclides\" */\
.rnm {fill:#7F00FF; stroke:none} /* several radionuclides */\
]]>\
</style>\
</defs>\n\n";
my $group;
make_text ( 8, -1, 1);
make_text (28, 18, 2);
for ( $group=3; $group<=12; $group++) { make_text(20*$group-12, 58, $group); };
for ($group=13; $group<=17; $group++) { make_text(20*$group-14, 18, $group); };
make_text (346, -1, 18);
my $Z;
for ($Z=1; $Z<=118; $Z++) { print_Z ($Z); };
print "</svg>\n";
}}
}}
බලපත්රීකරණය
I, මෙම කාර්යයේ ප්රකාශන අයිතිය දරන්නා,පහත බලපත්රය යටතේ එය ප්රකාශයට පත් කරනු ලබයි:
ඔබ නිදහස්:
බෙදාහදා ගැනීමට – කාර්යය පිටපත් කිරීමට,බෙදා හැරීමට සහ සම්ප්රේෂණය කිරීමට
නැවත සංකලනය කිරීමට – කාර්යයට අනුවර්තනය වීමට
පහත කොන්දේසිවලට යටත්ව:
attribution – වරපත වෙත බැඳියක්ද සපයමින් ඔබ විසින් සුදුසු කර්තෘභාරය ප්රදානය කල යුතු අතර, කිසියම් වෙනස්වීම් සිදුකලේ නම් එයද සඳහන් කල යුතු වෙයි. ඕනෑම සුදුසු ආකාරයට මෙය ඔබ විසින් සිදුකල හැකි මුත්, වරපත්දායකයා විසින් ඔබ හෝ ඔබගේ භාවිතය හෝ පිටසන් කරන බවට ඇඟවෙන ලෙසින් එය සිදු නොකල යුතු වෙයි.
share alike – මෙම විෂය කාරණා භාවිතා කොට නැවත සංකලනය, ප්රතියෝජනය හෝ වැඩිදියුණුව කලේ නම්, ඉන්පසු ඔබගේ දායකත්වය ඔබ විසින් බෙදාහැරිය යුත්තේ මුල් වරපත හා සමාන හෝ සංගතික හෝ වරපතක් භාවිතා කරමිනි. https://creativecommons.org/licenses/by-sa/3.0 CC BY-SA 3.0 Creative Commons Attribution-Share Alike 3.0 true true
ඔබට අභිමත වරපත තෝරාගත හැක.
සිංහල මෙම ගොනුව නිරූපණය කරන්නෙඑ කුමක්දැයි තනි පේළියේ පැහැදිළි කිරීමක් එක් කරන්න.