Можете описать как работает эта функция по-порядку? Меня этот пример прям в ступор ввел. Мне бы прям по-порядку, как что куда передается, что вызывается, что и куда после этого возвращается и тд. Простым языком и шаг за шагом. Понятно, что тут рекурсия, но хотя бы сам принцип... до конца не нужно все перебрать в тексте разумеется:) Не хочу дальше двигаться, пока не пойму этот пример, а обратиться не к кому. Чтоб вы понимали что тут происходит вообще, то тут как бы высчитывается процент ДНК, который есть у автора от его самого дальнего родственника:)
var ANCESTRY_FILE = JSON.stringify([
{"name": "Carolus Haverbeke", "sex": "m", "born": 1832, "died": 1905, "father": "Carel Haverbeke", "mother": "Maria van Brussel"},
{"name": "Emma de Milliano", "sex": "f", "born": 1876, "died": 1956, "father": "Petrus de Milliano", "mother": "Sophia van Damme"},
{"name": "Maria de Rycke", "sex": "f", "born": 1683, "died": 1724, "father": "Frederik de Rycke", "mother": "Laurentia van Vlaenderen"},
{"name": "Jan van Brussel", "sex": "m", "born": 1714, "died": 1748, "father": "Jacobus van Brussel", "mother": "Joanna van Rooten"},
{"name": "Philibert Haverbeke", "sex": "m", "born": 1907, "died": 1997, "father": "Emile Haverbeke", "mother": "Emma de Milliano"},
{"name": "Jan Frans van Brussel", "sex": "m", "born": 1761, "died": 1833, "father": "Jacobus Bernardus van Brussel", "mother":null},
{"name": "Pauwels van Haverbeke", "sex": "m", "born": 1535, "died": 1582, "father": "N. van Haverbeke", "mother":null},
{"name": "Clara Aernoudts", "sex": "f", "born": 1918, "died": 2012, "father": "Henry Aernoudts", "mother": "Sidonie Coene"},
{"name": "Emile Haverbeke", "sex": "m", "born": 1877, "died": 1968, "father": "Carolus Haverbeke", "mother": "Maria Sturm"},
{"name": "Lieven de Causmaecker", "sex": "m", "born": 1696, "died": 1724, "father": "Carel de Causmaecker", "mother": "Joanna Claes"},
{"name": "Pieter Haverbeke", "sex": "m", "born": 1602, "died": 1642, "father": "Lieven van Haverbeke", "mother":null},
{"name": "Livina Haverbeke", "sex": "f", "born": 1692, "died": 1743, "father": "Daniel Haverbeke", "mother": "Joanna de Pape"},
{"name": "Pieter Bernard Haverbeke", "sex": "m", "born": 1695, "died": 1762, "father": "Willem Haverbeke", "mother": "Petronella Wauters"},
{"name": "Lieven van Haverbeke", "sex": "m", "born": 1570, "died": 1636, "father": "Pauwels van Haverbeke", "mother": "Lievijne Jans"},
{"name": "Joanna de Causmaecker", "sex": "f", "born": 1762, "died": 1807, "father": "Bernardus de Causmaecker", "mother":null},
{"name": "Willem Haverbeke", "sex": "m", "born": 1668, "died": 1731, "father": "Lieven Haverbeke", "mother": "Elisabeth Hercke"},
{"name": "Pieter Antone Haverbeke", "sex": "m", "born": 1753, "died": 1798, "father": "Jan Francies Haverbeke", "mother": "Petronella de Decker"},
{"name": "Maria van Brussel", "sex": "f", "born": 1801, "died": 1834, "father": "Jan Frans van Brussel", "mother": "Joanna de Causmaecker"},
{"name": "Angela Haverbeke", "sex": "f", "born": 1728, "died": 1734, "father": "Pieter Bernard Haverbeke", "mother": "Livina de Vrieze"},
{"name": "Elisabeth Haverbeke", "sex": "f", "born": 1711, "died": 1754, "father": "Jan Haverbeke", "mother": "Maria de Rycke"},
{"name": "Lievijne Jans", "sex": "f", "born": 1542, "died": 1582, "father":null, "mother":null},
{"name": "Bernardus de Causmaecker", "sex": "m", "born": 1721, "died": 1789, "father": "Lieven de Causmaecker", "mother": "Livina Haverbeke"},
{"name": "Jacoba Lammens", "sex": "f", "born": 1699, "died": 1740, "father": "Lieven Lammens", "mother": "Livina de Vrieze"},
{"name": "Pieter de Decker", "sex": "m", "born": 1705, "died": 1780, "father": "Joos de Decker", "mother": "Petronella van de Steene"},
{"name": "Joanna de Pape", "sex": "f", "born": 1654, "died": 1723, "father": "Vincent de Pape", "mother": "Petronella Wauters"},
{"name": "Daniel Haverbeke", "sex": "m", "born": 1652, "died": 1723, "father": "Lieven Haverbeke", "mother": "Elisabeth Hercke"},
{"name": "Lieven Haverbeke", "sex": "m", "born": 1631, "died": 1676, "father": "Pieter Haverbeke", "mother": "Anna van Hecke"},
{"name": "Martina de Pape", "sex": "f", "born": 1666, "died": 1727, "father": "Vincent de Pape", "mother": "Petronella Wauters"},
{"name": "Jan Francies Haverbeke", "sex": "m", "born": 1725, "died": 1779, "father": "Pieter Bernard Haverbeke", "mother": "Livina de Vrieze"},
{"name": "Maria Haverbeke", "sex": "m", "born": 1905, "died": 1997, "father": "Emile Haverbeke", "mother": "Emma de Milliano"},
{"name": "Petronella de Decker", "sex": "f", "born": 1731, "died": 1781, "father": "Pieter de Decker", "mother": "Livina Haverbeke"},
{"name": "Livina Sierens", "sex": "f", "born": 1761, "died": 1826, "father": "Jan Sierens", "mother": "Maria van Waes"},
{"name": "Laurentia Haverbeke", "sex": "f", "born": 1710, "died": 1786, "father": "Jan Haverbeke", "mother": "Maria de Rycke"},
{"name": "Carel Haverbeke", "sex": "m", "born": 1796, "died": 1837, "father": "Pieter Antone Haverbeke", "mother": "Livina Sierens"},
{"name": "Elisabeth Hercke", "sex": "f", "born": 1632, "died": 1674, "father": "Willem Hercke", "mother": "Margriet de Brabander"},
{"name": "Jan Haverbeke", "sex": "m", "born": 1671, "died": 1731, "father": "Lieven Haverbeke", "mother": "Elisabeth Hercke"},
{"name": "Anna van Hecke", "sex": "f", "born": 1607, "died": 1670, "father": "Paschasius van Hecke", "mother": "Martijntken Beelaert"},
{"name": "Maria Sturm", "sex": "f", "born": 1835, "died": 1917, "father": "Charles Sturm", "mother": "Seraphina Spelier"},
{"name": "Jacobus Bernardus van Brussel", "sex": "m", "born": 1736, "died": 1809, "father": "Jan van Brussel", "mother": "Elisabeth Haverbeke"}
]);
var ancestry = JSON.parse(ANCESTRY_FILE);
var byName = {};
ancestry.forEach(function(person) {
byName[person.name] = person;
});
function reduceAncestors(person, f, defaultValue) {
function valueFor(person) {
if (person == null)
return defaultValue;
else
return f(person, valueFor(byName[person.mother]),
valueFor(byName[person.father]));
}
return valueFor(person);
}
function sharedDNA(person, fromMother, fromFather) {
if (person.name == "Pauwels van Haverbeke")
return 1;
else
return (fromMother + fromFather) / 2;
}
var ph = byName["Philibert Haverbeke"];
console.log(reduceAncestors(ph, sharedDNA, 0) / 4);
Как я понял нужно: console.log(reduceAncestors(ph, sharedDNA, 0) / 4);
[valueFor] Значение для Emma de Milliano = 0
Мать: Sophia van Damme = 0
Отец: Petrus de Milliano = 0
[valueFor] Значение для Maria Sturm = 0
Мать: Seraphina Spelier = 0
Отец: Charles Sturm = 0
[valueFor] Значение для Joanna de Pape = 0
Мать: Petronella Wauters = 0
Отец: Vincent de Pape = 0
[valueFor] Значение для Elisabeth Hercke = 0
Мать: Margriet de Brabander = 0
Отец: Willem Hercke = 0
[valueFor] Значение для Anna van Hecke = 0
Мать: Martijntken Beelaert = 0
Отец: Paschasius van Hecke = 0
[valueFor] Значение для Lievijne Jans = 0
Мать: null = 0
Отец: null = 0
[sharedDNA] вызвано для Pauwels van Haverbekeб поэтому вернём 1
[valueFor] Значение для Pauwels van Haverbeke = 1
Мать: null = 0
Отец: N. van Haverbeke = 0
[valueFor] Значение для Lieven van Haverbeke = 0.5
Мать: Lievijne Jans = 0
Отец: Pauwels van Haverbeke = 1
[valueFor] Значение для Pieter Haverbeke = 0.25
Мать: null = 0
Отец: Lieven van Haverbeke = 0.5
[valueFor] Значение для Lieven Haverbeke = 0.125
Мать: Anna van Hecke = 0
Отец: Pieter Haverbeke = 0.25
[valueFor] Значение для Daniel Haverbeke = 0.0625
Мать: Elisabeth Hercke = 0
Отец: Lieven Haverbeke = 0.125
[valueFor] Значение для Livina Haverbeke = 0.03125
Мать: Joanna de Pape = 0
Отец: Daniel Haverbeke = 0.0625
[valueFor] Значение для Lieven de Causmaecker = 0
Мать: Joanna Claes = 0
Отец: Carel de Causmaecker = 0
[valueFor] Значение для Bernardus de Causmaecker = 0.015625
Мать: Livina Haverbeke = 0.03125
Отец: Lieven de Causmaecker = 0
[valueFor] Значение для Joanna de Causmaecker = 0.0078125
Мать: null = 0
Отец: Bernardus de Causmaecker = 0.015625
[valueFor] Значение для Maria de Rycke = 0
Мать: Laurentia van Vlaenderen = 0
Отец: Frederik de Rycke = 0
[valueFor] Значение для Elisabeth Hercke = 0
Мать: Margriet de Brabander = 0
Отец: Willem Hercke = 0
[valueFor] Значение для Anna van Hecke = 0
Мать: Martijntken Beelaert = 0
Отец: Paschasius van Hecke = 0
[valueFor] Значение для Lievijne Jans = 0
Мать: null = 0
Отец: null = 0
[sharedDNA] вызвано для Pauwels van Haverbekeб поэтому вернём 1
[valueFor] Значение для Pauwels van Haverbeke = 1
Мать: null = 0
Отец: N. van Haverbeke = 0
[valueFor] Значение для Lieven van Haverbeke = 0.5
Мать: Lievijne Jans = 0
Отец: Pauwels van Haverbeke = 1
[valueFor] Значение для Pieter Haverbeke = 0.25
Мать: null = 0
Отец: Lieven van Haverbeke = 0.5
[valueFor] Значение для Lieven Haverbeke = 0.125
Мать: Anna van Hecke = 0
Отец: Pieter Haverbeke = 0.25
[valueFor] Значение для Jan Haverbeke = 0.0625
Мать: Elisabeth Hercke = 0
Отец: Lieven Haverbeke = 0.125
[valueFor] Значение для Elisabeth Haverbeke = 0.03125
Мать: Maria de Rycke = 0
Отец: Jan Haverbeke = 0.0625
[valueFor] Значение для Jan van Brussel = 0
Мать: Joanna van Rooten = 0
Отец: Jacobus van Brussel = 0
[valueFor] Значение для Jacobus Bernardus van Brussel = 0.015625
Мать: Elisabeth Haverbeke = 0.03125
Отец: Jan van Brussel = 0
[valueFor] Значение для Jan Frans van Brussel = 0.0078125
Мать: null = 0
Отец: Jacobus Bernardus van Brussel = 0.015625
[valueFor] Значение для Maria van Brussel = 0.0078125
Мать: Joanna de Causmaecker = 0.0078125
Отец: Jan Frans van Brussel = 0.0078125
[valueFor] Значение для Livina Sierens = 0
Мать: Maria van Waes = 0
Отец: Jan Sierens = 0
[valueFor] Значение для Joanna de Pape = 0
Мать: Petronella Wauters = 0
Отец: Vincent de Pape = 0
[valueFor] Значение для Elisabeth Hercke = 0
Мать: Margriet de Brabander = 0
Отец: Willem Hercke = 0
[valueFor] Значение для Anna van Hecke = 0
Мать: Martijntken Beelaert = 0
Отец: Paschasius van Hecke = 0
[valueFor] Значение для Lievijne Jans = 0
Мать: null = 0
Отец: null = 0
[sharedDNA] вызвано для Pauwels van Haverbekeб поэтому вернём 1
[valueFor] Значение для Pauwels van Haverbeke = 1
Мать: null = 0
Отец: N. van Haverbeke = 0
[valueFor] Значение для Lieven van Haverbeke = 0.5
Мать: Lievijne Jans = 0
Отец: Pauwels van Haverbeke = 1
[valueFor] Значение для Pieter Haverbeke = 0.25
Мать: null = 0
Отец: Lieven van Haverbeke = 0.5
[valueFor] Значение для Lieven Haverbeke = 0.125
Мать: Anna van Hecke = 0
Отец: Pieter Haverbeke = 0.25
[valueFor] Значение для Daniel Haverbeke = 0.0625
Мать: Elisabeth Hercke = 0
Отец: Lieven Haverbeke = 0.125
[valueFor] Значение для Livina Haverbeke = 0.03125
Мать: Joanna de Pape = 0
Отец: Daniel Haverbeke = 0.0625
[valueFor] Значение для Pieter de Decker = 0
Мать: Petronella van de Steene = 0
Отец: Joos de Decker = 0
[valueFor] Значение для Petronella de Decker = 0.015625
Мать: Livina Haverbeke = 0.03125
Отец: Pieter de Decker = 0
[valueFor] Значение для Elisabeth Hercke = 0
Мать: Margriet de Brabander = 0
Отец: Willem Hercke = 0
[valueFor] Значение для Anna van Hecke = 0
Мать: Martijntken Beelaert = 0
Отец: Paschasius van Hecke = 0
[valueFor] Значение для Lievijne Jans = 0
Мать: null = 0
Отец: null = 0
[sharedDNA] вызвано для Pauwels van Haverbeke, поэтому вернём 1
[valueFor] Значение для Pauwels van Haverbeke = 1
Мать: null = 0
Отец: N. van Haverbeke = 0
[valueFor] Значение для Lieven van Haverbeke = 0.5
Мать: Lievijne Jans = 0
Отец: Pauwels van Haverbeke = 1
[valueFor] Значение для Pieter Haverbeke = 0.25
Мать: null = 0
Отец: Lieven van Haverbeke = 0.5
[valueFor] Значение для Lieven Haverbeke = 0.125
Мать: Anna van Hecke = 0
Отец: Pieter Haverbeke = 0.25
[valueFor] Значение для Willem Haverbeke = 0.0625
Мать: Elisabeth Hercke = 0
Отец: Lieven Haverbeke = 0.125
[valueFor] Значение для Pieter Bernard Haverbeke = 0.03125
Мать: Petronella Wauters = 0
Отец: Willem Haverbeke = 0.0625
[valueFor] Значение для Jan Francies Haverbeke = 0.015625
Мать: Livina de Vrieze = 0
Отец: Pieter Bernard Haverbeke = 0.03125
[valueFor] Значение для Pieter Antone Haverbeke = 0.015625
Мать: Petronella de Decker = 0.015625
Отец: Jan Francies Haverbeke = 0.015625
[valueFor] Значение для Carel Haverbeke = 0.0078125
Мать: Livina Sierens = 0
Отец: Pieter Antone Haverbeke = 0.015625
[valueFor] Значение для Carolus Haverbeke = 0.0078125
Мать: Maria van Brussel = 0.0078125
Отец: Carel Haverbeke = 0.0078125
[valueFor] Значение для Emile Haverbeke = 0.00390625
Мать: Maria Sturm = 0
Отец: Carolus Haverbeke = 0.0078125
[valueFor] Значение для Philibert Haverbeke = 0.001953125
Мать: Emma de Milliano = 0
Отец: Emile Haverbeke = 0.00390625
0.00048828125
Добавьте промежуточный вывод в консоль. Станет понятнее, что происходит. (Это не ответ.)
function sharedDNA(person, fromMother, fromFather) {
if (person.name == "Pauwels van Haverbeke") {
console.log(person.name, 1);
return 1;
} else {
console.log(person.name, fromMother, fromFather, (fromMother + fromFather) / 2);
return (fromMother + fromFather) / 2;
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не подгружаються стили и JS файлы, как в моем AppBundle так и в SanataAdminBundleФайлы подключены через assets, прим :
Элемент с надписью: "Сделано в конструкторе калькуляторов UCALC"
Порекомендуйте как сделать подобный слайдерПо нажатию на 1 из 3 миниатюр раскрывается слева картинка