Dec 29, 2008 01:43
В незапамятные времена мне в голову пришла идея написать на PHP таблицу Менделеева, просто ради интереса. Тут стоит отметить для людей, слабо знакомых с химией, что таблица Менделеева это не какая-то абсолютная вещь, в ее клетках может быть указана самая разнообразная информация об элементах, да и сами элементы могут быть расположены различным образом. Самыми популярными из этих образов являются короткопериодный и длиннопериодный вариант.
«Замечательно» - решил я - «Последовательность элементов будет задаваться в текстовом файле, а скрипт будет это все оттуда считывать, нумеровать, выдавать в таблицу и раскрашивать, как положено. Раскрашивать удобнее всего стилями. Для начала пригодится стиль для ячейки с элементом elem, стиль с именем самого элемента, например Hf и стили, согласно которым ячейки будут помечаться цветом - s, p, d, f, согласно электронной конфигурации элемента».
Этот класс я определял такой функцией:
function spdf($n)
{
$inert = array(0, 2, 10, 18, 36, 54, 86, 118, 164);
$i = 0; $full = $i;
while ($inert[$i] <= $n) $full = $i++;
$pi = $inert[$full]; $ni = $inert[$full + 1];
if($n == $pi) return "p";
if($n - $pi < 3) return "s";
if($ni - $n < 6) return "p";
if($ni - $n < 16) return "d";
return "f";
}
Но вот беда: в итоговой таблице все-все элементы выводились верно (своими цветами, на своих местах), кроме фтора.
Интересно, кто быстрее догадается о причинах такого странного поведения, химики или программисты? :)
химия,
программирование,
юмор