Период полураспада, возраст окаменелости, Углерод-14 и... JavaScript)

Mar 07, 2021 10:43

В мире много всего интересного! Возможно, одна из неплохих целей в жизни - заниматься интересной работой так, чтобы закрывать потребности свои (и своей семьи), и при этом оставалось ещё время и вкус к интересному, которое не для денег, а "просто так"!) Завершая "лирическое вступление" скажу, что т.к. недавно я записался в школу RSS (о чем прошлый пост), логично, что решаю задачи. И вот там есть такое комплексное задание "Basic JS" - 10 задач с автотестами - написал 10 функций, которые проходят все тесты - заработал 50 баллов. Гениально и просто. Одна из задач называется "Carbon dating". Я сначала даже название её перевести нормально не смог. Поэтому решил разобраться. А пока разбирался, стало интересно - решил поделиться. Сразу скажу - здесь не будет решения задачи по JS - сама по себе она довольно проста. Здесь скорее подборка ссылок, чтобы наполнить эту задачу смыслом для моих коллег, которым предстоит её решать, и просто "интересное", которым хочу поделиться - для тех, кто зашел почитать.


UPD: наверное логично начать со ссылки на задание.
Далее перевод названия: "метод радиоуглеродного датирования".)
Краткое описание:
Углерод состоит из трех изотопов - двух стабильных и одного радиоуглерода. При этом последний постоянно образуется в атмосфере после реакции атомов азота с нейтронами, которые есть в космических лучах. Радиоуглерод попадает в оборот углерода в атмосфере, биосфере и гидросфере. Углерод-14 радиоактивен, с периодом полураспада около 5 700 лет. Это значит, что за 5 700 лет распадется половина этого вещества.

После попадания в атмосферу он превращается в углекислый газ, который потребляют растения в процессе фотосинтеза. Животные, включая человека, потребляют много растений (и животных, которые потребляют растения) - так углерод-14 попадает внутрь всех существ. Он сохраняется в живых организмах до тех пор, пока они живут. Когда они умирают, количество углерода-14 больше не пополняется. Теперь довольно просто определить, сколько всего атомов углерода должно быть в образце, учитывая его вес и химический состав. Зная период распада вещества, мы можем посчитать количество углерода-14 и выяснить, когда организм погиб, и примерное время его жизни. [источник]

Теперь, как мне кажется, можно перейти к статье, которую нам предлагают в задании использовать за основной источник данных.
Сейчас, когда, я надеюсь, мы более-менее разобрались, что к чему, можно посмотреть на формулы. Нас интересует, по сути, вот эта часть:


На что здесь стоит обратить внимание? Мы будем считать время по второй формуле.
k - для нас, по сути, константа, т.к. зависит от периода полураспада (для нашего углерода это 5730 лет) и постоянной 0,693, которая, по сути - округленное значение натурального логарифма двойки (я так понял, это связано с тем, что "полу"-распад, если не прав, прошу поправить!).
Наверное, чтобы было меньше путаницы, нам задали исходные данные:


MODERN_ACTIVITY - радиоактивность современного, "свежего" углерода-14,
HALF_LIFE_PERIOD - период полураспада углерода-14,
я предлагаю тут же посчитать k.
Остается только записать формулу и подставить в неё радиоактивность углерода-14 в "изучаемом образце".

Для первичного теста предлагаю использовать значение из статьи (8,0) и заведомо недопустимое значение:
console.log(dateSample('8.0')); // 5200
console.log(dateSample('0')); // false

У меня после написания функции получилось так:


Также, если говорить уже про конкретную задачу, а не про метод в целом, предлагаю обратить внимание на ряд нюансов:
- функция принимает на вход строку, которая должна корректно преобразовываться в число,
- функция должна проверять допустимость введенной радиоактивности - значения 0 и отрицательные, равно как и больше современного, лишены смысла,
- если значение не преобразуется в число, или полученное число бессмысленно, функция просто возвращает false!

Прошу прощения, если написал банальные вещи.)
Как всегда буду рад замечаниям и дополнениям, самый быстрый канал связи - Телеграм.
Всем, кто пишет программы - 100% на тестах, и всем без исключения - побольше интересного в жизни!)

мысли, учитьсяучиться, javascript, интересное, rsschool

Previous post Next post
Up