[{"data":1,"prerenderedAt":1142},["ShallowReactive",2],{"$f_AfBbU_IJhNcGA-l95wOxlktKz9kBBLwgDcndHPU_cA":3,"$fMMUdSFktwQFqMVGPrTtt3EC5yheBp7PzwIqznamFcMo":73,"$fc0LoAJgqXDLbKKd2JS_NpM4SuzBK8EycUXINSg09CKU":76,"$fM3ea55k6lKMPOTM84llDB26VSQDVVbxiQuSBFQw9P_c":81,"$f1Prj1xEczHja_-L7FyIGgRHd5_cSWHo7r6AE5aheAik":426,"$fI5fDmvm-5tr9wcH0eHaKZa1j3y_FQIQaHHPqbZxAHJE":648,"mdc-jlxyz0-key":668,"mdc--80rz3r-key":680,"mdc-x42vbi-key":688,"mdc-rnho-key":704,"mdc--fush1u-key":712,"mdc-ozxz2g-key":720,"mdc--84q4uw-key":737,"mdc-u8jxrn-key":757,"mdc-qid5k0-key":792,"mdc-t51smw-key":800,"mdc--8legpz-key":1015,"mdc--u26d91-key":1036,"mdc-lwwihq-key":1126},{"content":4,"quizQuestionContent":44,"type":63,"pageMeta":64},[5,9,13,16,20,24,27,31,34,38,41],{"id":6,"value":7,"isTypeH1":8},"1901","Как гарантированно найти лёгкую фальшивую монету среди 8 за минимальное число взвешиваний на чашечных весах?",true,{"id":10,"value":11,"anchor":12,"isTypeH2":8},"4354","Теория: как определить минимум взвешиваний","theory-how-to-determine-the-minimum",{"id":14,"value":15,"isTypeParagraph":8},"10008","Каждое взвешивание на чашечных весах даёт 3 возможных результата, поэтому за n взвешиваний можно различить не более чем 3^n «веток» в дереве решений.\n\nЕсли заранее известно, что фальшивая монета легче, то максимум монет, среди которых можно найти одну лёгкую за n взвешиваний, равен 3^n, а минимальное число взвешиваний для c монет выражается как `ceil(log3(c))`.\n\nДля 8 монет: `ceil(log3(8)) = 2`, поскольку 3^1 = 3 \u003C 8 и 3^2 = 9 ≥ 8, значит 1 взвешивания недостаточно, а 2 теоретически достаточно и (важно) достижимо конкретной стратегией.",{"id":17,"description":18,"titleAlert":19,"isTypeAlertWarning":8},"687","Если в условии не сказано, что фальшивая монета легче, и допускается «легче или тяжелее», количество гипотез становится больше (как минимум в 2 раза), и нижняя граница по взвешиваниям меняется.",null,{"id":21,"value":22,"anchor":23,"isTypeH2":8},"4355","Пошаговая стратегия 3+3+2 (2 взвешивания)","step-by-step-3-3-2",{"id":25,"value":26,"isTypeParagraph":8},"10009","Обозначения: монеты `1..8`, а операция `weigh(A, B)` означает взвесить набор A против набора B.\n\nШаг 1 (первое взвешивание): взвесить `1,2,3` против `4,5,6`.\n\nВозможны 3 случая:\n- Равновесие: значит монеты `1..6` настоящие, фальшивая среди `7,8`, тогда во 2-м взвешивании необходимо взвесить `7` против `8` и более лёгкая — фальшивая.\n- Левая чаша легче (то есть `1,2,3` легче `4,5,6`): фальшивая среди `1,2,3`, во 2-м взвешивании необходимо взвесить `1` против `2`; если равны — фальшивая `3`, иначе более лёгкая из (`1`,`2`) — фальшивая.\n- Правая чаша легче: аналогично, фальшивая среди `4,5,6`, во 2-м взвешивании необходимо взвесить `4` против `5`; если равны — фальшивая `6`, иначе более лёгкая из (`4`,`5`) — фальшивая.\n\nНаглядная схема-дерево:\n```\nВзвешивание 1: (1,2,3)  vs  (4,5,6)\n  ├─ равно        → Взвешивание 2: 7 vs 8 → легче = фальшивая\n  ├─ левое легче  → Взвешивание 2: 1 vs 2\n  │     ├─ равно      → 3 фальшивая\n  │     └─ не равно   → легче из (1,2) фальшивая\n  └─ правое легче → Взвешивание 2: 4 vs 5\n        ├─ равно      → 6 фальшивая\n        └─ не равно   → легче из (4,5) фальшивая\n```",{"id":28,"value":29,"anchor":30,"isTypeH3":8},"4357","Взвешивания как дерево решений","weighings-as-decision-tree",{"id":32,"value":33,"isTypeParagraph":8},"10010","Логика решения совпадает с «деревом решений» из разработки: каждый узел (взвешивание) даёт 3 ветви (меньше/больше/равно), а цель — чтобы у каждого листа оставался ровно 1 кандидат.\n\nРазбиение `3+3+2` работает потому, что первое взвешивание либо сразу сужает поиск до 2 монет (случай равновесия), либо до 3 монет (случай перекоса), а 2-е взвешивание умеет однозначно решать и задачу из 2 монет, и задачу из 3 монет.",{"id":35,"value":36,"anchor":37,"isTypeH2":8},"4356","Псевдокод (как для алгоритмической задачи)","pseudocode-as-algorithm",{"id":39,"value":40,"isTypeParagraph":8},"10011","Ниже показан «алгоритм», близкий к тому, как подобное решение оформляется в задачах по программированию.\n\n```\n// weigh(A, B) возвращает:\n//  0  если равны\n// -1  если A легче (левая чаша легче правой)\n//  1  если B легче\nfunction findFakeCoin(coins[1..8]):\n  r1 = weigh([1,2,3], [4,5,6])\n\n  if r1 == 0:\n    // фальшивая среди 7 и 8\n    r2 = weigh([7], [8])\n    if r2 == -1: return 7\n    else: return 8\n\n  if r1 == -1:\n    // фальшивая среди 1,2,3\n    r2 = weigh([1], [2])\n    if r2 == 0: return 3\n    if r2 == -1: return 1\n    else: return 2\n\n  // r1 == 1\n  // фальшивая среди 4,5,6\n  r2 = weigh([4], [5])\n  if r2 == 0: return 6\n  if r2 == -1: return 4\n  else: return 5\n```\n\nТаблица соответствий для 2-го взвешивания в «группе из трёх»:\n| Результат взвешивания X vs Y | Какая фальшивая (если фальшивая легче) |\n|---|---|\n| равно | третья монета Z |\n| X легче | X |\n| Y легче | Y |",{"id":42,"value":43,"isTypeParagraph":8},"10012","В итоге: минимально требуется 2 взвешивания; стратегия `3+3+2` гарантированно находит фальшивую лёгкую монету; невозможность решения за 1 взвешивание объясняется тем, что одно взвешивание даёт лишь 3 исхода при 8 возможных кандидатах.",{"id":45,"options":46,"hint":60,"solution":61,"description":62},"1140",[47,51,54,57],{"id":48,"label":49,"isCorrect":50},"4692","1 взвешивание — достаточно, так как фальшивая легче",false,{"id":52,"label":53,"isCorrect":8},"4693","2 взвешивания — достаточно при разбиении `3+3+2`",{"id":55,"label":56,"isCorrect":50},"4694","3 взвешивания — минимум, потому что 8 монет «слишком много» для двух",{"id":58,"label":59,"isCorrect":50},"4695","4 взвешивания — минимум, иначе нельзя гарантировать результат","Следует начать с взвешивания `3 против 3`, чтобы в одном результате (равновесии) сразу изолировать пару, а в двух других результатах — изолировать тройку, которая решается одним дополнительным взвешиванием.","**Правильный вариант: 2** - 2 взвешивания — достаточно при разбиении '3+3+2'\n\nВ данной задаче заранее известно, что фальшивая монета легче, и это существенно упрощает поиск по сравнению с вариантами, где фальшивая может быть и легче, и тяжелее.","Дано 8 монет. Одна из них фальшивая. Фальшивая монета весит меньше, чем остальные. Также есть весы, которые представлены в виде двух чаш, как такие весы правосудия. Вопрос: за какое минимальное количество взвешиваний можно гарантированно определить, какая монета фальшива?","quizQuestion",{"title":65,"description":7,"ogTitle":65,"ogDescription":7,"ogImageUrl":66,"canonical":19,"ogLocale":67,"ogSiteName":68,"ogImageType":69,"ogImageWidth":70,"ogImageHeight":71,"ogType":72,"ogUrl":19},"Фальшивая монета среди 8: минимум взвешиваний","/og-image.png","ru_RU","goodwebjob.ru","image_jpeg","1200","630","article",{"siteName":74,"siteUrl":75},"GOOD WEB JOB!","https://goodwebjob.ru",[77],{"label":78,"slug":79,"to":80},"Подготовка к тех.интервью","technical-interview","/technical-interview/where-to-begin",{"navigationList":82,"navigationSublist":90},[83,86],{"path":80,"isActive":50,"name":84,"icon":85,"isNavbarMobileDisabled":8},"С чего начать?","material-symbols:visibility-outline-rounded",{"path":87,"isActive":8,"name":88,"icon":89,"isNavbarMobileDisabled":50},"/technical-interview/tasks","Сборник задач","material-symbols:task-outline",[91,100,127,139,145,286,310,319,325,388,409,415],{"title":92,"list":93,"isOpened":50},"Bash",[94,97],{"name":95,"path":96,"isActive":50},"Дан фрагмент bash-скрипта: cd ~; mkdir foo... Что в нем происходит?","/technical-interview/tasks/here-is-a-fragment-of-a-bash-script-cd-mkdir-foo-what-is-happening-in-this-script",{"name":98,"path":99,"isActive":50},"Дан фрагмент bash-скрипта: target=$(ps -Af | grep $1 | head -n 1)...","/technical-interview/tasks/here-is-a-fragment-of-a-bash-script-target-ps-af-grep-1-head-n-1",{"title":101,"list":102,"isOpened":50},"CSS",[103,106,109,112,115,118,121,124],{"name":104,"path":105,"isActive":50},"Дан HTML-код. Какой будет цвет у текста «Some dummy text»?","/technical-interview/tasks/the-html-code-is-given-what-will-be-the-color-of-the-some-dummy-text",{"name":107,"path":108,"isActive":50},"Есть шаблон HTML и CSS кода. Какой будет цвет у текста «Таким образом, постоянное»?","/technical-interview/tasks/there-is-a-template-for-html-and-css-code-what-color-will-the-text-thus-constant-have",{"name":110,"path":111,"isActive":50},"Есть шаблон вложенного HTML кода. Какой будет цвет у текста «One more dummy text»?","/technical-interview/tasks/there-is-a-template-for-embedded-html-code-what-will-be-the-color-of-the-one-more-dummy-text",{"name":113,"path":114,"isActive":50},"Есть шаблон вложенного HTML кода. Будет ли display:block у body влиять на span?","/technical-interview/tasks/there-is-a-template-for-embedded-html-code-will-there-be-a-display-does-bodys-block-affect-span",{"name":116,"path":117,"isActive":50},"Есть HTML код. Будет ли font-weight на span влиять?","/technical-interview/tasks/there-is-an-html-code-will-font-weight-affect-span",{"name":119,"path":120,"isActive":50},"Flexbox и Grid, чем отличаются друг от друга?","/technical-interview/tasks/what-are-the-differences-between-flexbox-and-grid",{"name":122,"path":123,"isActive":50},"Заменяют ли Flexbox и Grid друг друга?","/technical-interview/tasks/do-flexbox-and-grid-replace-each-other",{"name":125,"path":126,"isActive":50},"Есть CSS и JS анимация. Какая между ними разница, что быстрее, что более удобно?","/technical-interview/tasks/there-are-css-and-js-animations-what-is-the-difference-between-them-and-which-is-faster-and-more-convenient",{"title":128,"list":129,"isOpened":50},"Git",[130,133,136],{"name":131,"path":132,"isActive":50},"Разрабатывал, взял закоммитил, запушил. Оказалось, что запушил не в ту ветку, точнее, коммит не в ту ветку. Какие действия?","/technical-interview/tasks/developed-it-committed-it-and-launched-it-it-turned-out-that-i-had-pushed-it-to-the-wrong-branch-or-rather-the-commit-was-in-the-wrong-branch-what-actions",{"name":134,"path":135,"isActive":50},"В git есть несколько вариантов слияния веток, какие? Чем отличаются?","/technical-interview/tasks/git-has-several-options-for-merging-branches-which-ones-how-are-they-different",{"name":137,"path":138,"isActive":50},"Какие существуют стратегии ветвления для работы команды? Что это такое?","/technical-interview/tasks/what-are-the-branching-strategies-for-the-team-what-is-it",{"title":140,"list":141,"isOpened":50},"HTML",[142],{"name":143,"path":144,"isActive":50},"Что такое HTML?","/technical-interview/tasks/what-is-html",{"title":146,"list":147,"isOpened":50},"JavaScript",[148,151,154,157,160,163,166,169,172,175,178,181,184,187,190,193,196,199,202,205,208,211,214,217,220,223,226,229,232,235,238,241,244,247,250,253,256,259,262,265,268,271,274,277,280,283],{"name":149,"path":150,"isActive":50},"Какие логические значения в console.log будут получены?","/technical-interview/tasks/prototype-what-logical-values-will-be-received-in-console-log",{"name":152,"path":153,"isActive":50},"Почему опасно писать прямо в прототипы базовых типов?","/technical-interview/tasks/why-is-it-dangerous-to-write-directly-to-the-prototypes-of-basic-types",{"name":155,"path":156,"isActive":50},"Что вернёт следующий код? Object.create(null).hasOwnProperty('toString')","/technical-interview/tasks/what-will-the-following-code-return-object-create-null-has-own-property-to-string",{"name":158,"path":159,"isActive":50},"Какое значение выведет консоль с object.property?","/technical-interview/tasks/what-value-will-the-console-output-with-object-property",{"name":161,"path":162,"isActive":50},"Что выведется в console.log([arr[0](), arr[0]()])?","/technical-interview/tasks/what-will-be-displayed-in-console-log-arr-0-arr-0",{"name":164,"path":165,"isActive":50},"Что выведет console.log в результате выполнения цикла while?","/technical-interview/tasks/what-will-console-log-output-as-a-result-of-executing-the-while-loop",{"name":167,"path":168,"isActive":50},"Есть функция и объект. Напишите все известные вам способы, чтобы вывести в консоли значение x из объекта, используя функцию","/technical-interview/tasks/there-is-a-function-and-an-object-write-all-the-ways-you-know-to-output-the-value-of-x-from-an-object-in-the-console-using-the-function",{"name":170,"path":171,"isActive":50},"Что вернёт метод book.getUpperName()?","/technical-interview/tasks/what-will-the-book-get-upper-name-method-return",{"name":173,"path":174,"isActive":50},"Переменные объявлены следующим образом: a=3; b=«hello»;. Укажите правильное утверждение","/technical-interview/tasks/variables-are-declared-as-follows-specify-the-correct-statement",{"name":176,"path":177,"isActive":50},"Что выведет консоль в случае присвоения свойства массиву по строковому положительному индексу?","/technical-interview/tasks/what-will-the-console-display-if-a-property-is-assigned-to-an-array-using-a-positive-string-index",{"name":179,"path":180,"isActive":50},"Что выведет консоль в случае присвоения свойства массиву по строковому отрицательному индексу?","/technical-interview/tasks/what-will-the-console-display-if-a-property-is-assigned-to-an-array-using-a-negative-string-index",{"name":182,"path":183,"isActive":50},"Что выведет консоль в случае удаления элемента массива с помощью оператора delete?","/technical-interview/tasks/what-will-the-console-output-if-an-array-element-is-deleted-using-the-delete-operator",{"name":185,"path":186,"isActive":50},"Что вернёт этот код: typeof (function(){})()","/technical-interview/tasks/what-this-code-will-return-typeof-function",{"name":188,"path":189,"isActive":50},"Что получится в результате передачи объекта как аргумента в функцию и выполнения кода?","/technical-interview/tasks/what-will-happen-when-an-object-is-passed-as-an-argument-to-a-function-and-the-code-is-executed",{"name":191,"path":192,"isActive":50},"Какие способы объявления функции есть в JavaScript?","/technical-interview/tasks/what-are-the-ways-to-declare-a-function-in-javascript",{"name":194,"path":195,"isActive":50},"Что такое this в JavaScript?","/technical-interview/tasks/what-is-this-in-javascript",{"name":197,"path":198,"isActive":50},"Что такое Event Loop, как работает?","/technical-interview/tasks/what-is-an-event-loop-and-how-does-it-work",{"name":200,"path":201,"isActive":50},"Что будет, если вызвать typeof на необъявленной переменной?","/technical-interview/tasks/what-happens-if-you-call-typeof-on-an-undeclared-variable",{"name":203,"path":204,"isActive":50},"Что показывает оператор typeof в JavaScript?","/technical-interview/tasks/what-does-the-typeof-operator-show-in-javascript",{"name":206,"path":207,"isActive":50},"Какие типы данных существует в JavaScript?","/technical-interview/tasks/what-types-of-data-exist-in-javascript",{"name":209,"path":210,"isActive":50},"Какую структуру использовать для хранения упорядоченного списка строк в JavaScript?","/technical-interview/tasks/what-is-the-best-structure-to-use-for-storing-an-ordered-list-of-strings-in-javascript",{"name":212,"path":213,"isActive":50},"Что вернет typeof для массива?","/technical-interview/tasks/what-will-typeof-return-for-an-array",{"name":215,"path":216,"isActive":50},"Почему оператор typeof, применённый к массиву, возвращает объект?","/technical-interview/tasks/why-does-the-typeof-operator-applied-to-an-array-return-an-object",{"name":218,"path":219,"isActive":50},"Если нужно хранить список уникальных строк, какую структуру данных выбрать?","/technical-interview/tasks/if-you-need-to-store-a-list-of-unique-strings-which-data-structure-should-i-choose",{"name":221,"path":222,"isActive":50},"Что возвращает typeof для new Set в JavaScript?","/technical-interview/tasks/what-does-typeof-return-for-new-set-in-javascript",{"name":224,"path":225,"isActive":50},"Почему в JavaScript два объекта с одинаковым содержимым при сравнении возвращают false?","/technical-interview/tasks/why-do-two-objects-with-the-same-content-return-false-when-compared-in-javascript",{"name":227,"path":228,"isActive":50},"В чем разница между микро- и макро-тасками в JavaScript?","/technical-interview/tasks/what-is-the-difference-between-micro-and-macro-tasks-in-javascript",{"name":230,"path":231,"isActive":50},"arr.push(0) повлияет на массив так же, как если бы мы выполнили...","/technical-interview/tasks/arr-push-0-will-affect-the-array-in-the-same-way-as-if-we-performed",{"name":233,"path":234,"isActive":50},"Вернуть массив от 1 до n, где числа, кратные 3, заменены на 'fizz', кратные 5 - на 'buzz', а кратные и 3, и 5 одновременно - на 'fizzbuzz'","/technical-interview/tasks/returns-an-array-from-1-to-n-replacing-numbers-that-are-multiples-of-3-with-fizz-numbers-that-are-multiples-of-5-with-buzz-and-numbers-that-are-multiples-of-both-3-and-5-with-fizzbuzz",{"name":236,"path":237,"isActive":50},"Дана строка: 'one.two.three.four.five'. Необходимо из строки сделать вложенный объект","/technical-interview/tasks/the-string-one-two-three-four-five-is-given-it-is-necessary-to-make-a-nested-object-out-of-the-string",{"name":239,"path":240,"isActive":50},"Дано дерево (вложенный объект), надо найти сумму всех вершин","/technical-interview/tasks/given-a-tree-nested-object-it-is-necessary-to-find-the-sum-of-all-vertices",{"name":242,"path":243,"isActive":50},"Для каждого вложенного объекта нужно добавить свойство level, которое равняется числу - номер вложенности","/technical-interview/tasks/for-each-nested-object-you-need-to-add-the-level-property-which-is-equal-to-a-number-the-nesting-number",{"name":245,"path":246,"isActive":50},"Для каждой ветви дерева записать номер вложенности данной ветви","/technical-interview/tasks/for-each-branch-of-the-tree-write-down-the-nesting-number-of-this-branch",{"name":248,"path":249,"isActive":50},"Есть массив, в котором лежат объекты с датами, необходимо отсортировать даты по возрастанию","/technical-interview/tasks/there-is-an-array-containing-objects-with-dates-that-need-to-be-sorted-by-date",{"name":251,"path":252,"isActive":50},"Есть слова в массиве, необходимо определить, состоят ли они из одних и тех же букв","/technical-interview/tasks/there-are-words-in-the-array-it-is-necessary-to-determine-whether-they-consist-of-the-same-letters",{"name":254,"path":255,"isActive":50},"Есть строка, состоящая из разных скобок, необходимо проверить, закрыты ли все","/technical-interview/tasks/there-is-a-string-consisting-of-different-brackets-it-is-necessary-to-check-whether-all-are-closed",{"name":257,"path":258,"isActive":50}," Найти в массиве неповторяющиеся числа","/technical-interview/tasks/find-non-repeating-numbers-in-an-array",{"name":260,"path":261,"isActive":50},"Напишите функцию, который сделает из массива объект","/technical-interview/tasks/write-a-function-that-will-make-an-object-out-of-an-array",{"name":263,"path":264,"isActive":50},"Необходимо проверить, являются ли две строки анаграммами друг друга","/technical-interview/tasks/checks-whether-two-strings-are-anagrams-of-each-other",{"name":266,"path":267,"isActive":50},"Нечётные числа должны отсортироваться по возрастанию, а чётные должны остаться на своих местах","/technical-interview/tasks/odd-numbers-should-be-sorted-in-ascending-order-and-even-numbers-should-remain-in-their-original-positions",{"name":269,"path":270,"isActive":50},"Определить, является ли слово палиндромом","/technical-interview/tasks/determines-whether-a-word-is-a-palindrome",{"name":272,"path":273,"isActive":50},"«Расплющивание» массива","/technical-interview/tasks/flattening-the-array",{"name":275,"path":276,"isActive":50},"Реализовать функцию, принимающую аргументы \"*\", \"1\", \"b\", \"1c\" и возвращающую строку \"1*b*1c\"","/technical-interview/tasks/implement-a-function-that-accepts-arguments-1-b-1c-and-the-return-string-1-b-1c",{"name":278,"path":279,"isActive":50},"Сжатие строк","/technical-interview/tasks/string-compression",{"name":281,"path":282,"isActive":50},"Уникализация значений в массиве","/technical-interview/tasks/unifying-values-in-an-array",{"name":284,"path":285,"isActive":50},"Числа от 1 до 100 находятся в массиве, они хаотично перемешанные, но в нём не хватает одного числа из этой последовательности. Необходимо найти его","/technical-interview/tasks/the-numbers-from-1-to-100-are-in-the-array-they-are-randomly-mixed-but-it-lacks-one-number-from-this-sequence-it-is-necessary-to-find-him",{"title":287,"list":288,"isOpened":50},"React",[289,292,295,298,301,304,307],{"name":290,"path":291,"isActive":50},"Для чего нужен React, какие он решает проблемы?","/technical-interview/tasks/what-is-react-used-for-and-what-problems-does-it-solve",{"name":293,"path":294,"isActive":50},"Какой механизм лежит в основе оптимизации обновлений DOM в React?","/technical-interview/tasks/what-is-the-underlying-mechanism-for-optimizing-dom-updates-in-react",{"name":296,"path":297,"isActive":50},"Если убрать в React VDOM/Fiber, и вручную изменять DOM, разве это не оптимально?","/technical-interview/tasks/if-you-remove-the-vdom-fiber-in-react-and-manually-change-the-dom-isn-t-that-optimal",{"name":299,"path":300,"isActive":50},"Есть блок кода. Что в реальном DOM изменится после нажатия на кнопку?","/technical-interview/tasks/there-is-a-block-of-code-what-changes-in-the-real-dom-after-clicking-the-button",{"name":302,"path":303,"isActive":50},"Есть код, в котором список и кнопка. Что в реальном DOM изменится после нажатия на кнопку?","/technical-interview/tasks/there-is-a-code-in-which-there-is-a-list-and-a-button-what-will-change-in-the-real-dom-after-clicking-on-the-button",{"name":305,"path":306,"isActive":50},"Зачем нужен Redux (Mobx/Effector)? Зачем нужен менеджер состояния? Какие проблемы решает?","/technical-interview/tasks/why-do-we-need-redux-mobx-effector-why-do-we-need-a-state-manager-what-problems-does-it-solve",{"name":308,"path":309,"isActive":50},"Что мешает организовать централизованное состояние без менеджера состояния? Если организовать состояние механизмами реакта: контекстом, стейтом, в чем проблема? Что менеджеры состояния привносят?","/technical-interview/tasks/what-prevents-you-from-organizing-a-centralized-state-without-a-state-manager-if-you-organize-the-state-using-react-context-and-state-mechanisms-what-is-the-problem-what-do-state-managers-add",{"title":311,"list":312,"isOpened":50},"Алгоритмы",[313,316],{"name":314,"path":315,"isActive":50},"Что такое алгоритмическая сложность?","/technical-interview/tasks/what-is-algorithmic-complexity",{"name":317,"path":318,"isActive":50},"Какая алгоритмическая сложность у \"быстрой сортировки\"?","/technical-interview/tasks/what-is-the-algorithmic-complexity-of-quick-sort",{"title":320,"list":321,"isOpened":50},"Дебаггинг",[322],{"name":323,"path":324,"isActive":50},"Как диагностировать и исправить нежелательное изменение цвета фона по клику на кнопку, если исходный код сайта запутан и недоступен для прямого чтения?","/technical-interview/tasks/how-can-diagnose-and-fix-unwanted-background-color-changes-when-clicking-on-a-button-if-the-source-code-of-the-site-is-confusing-and-inaccessible-to-direct-reading",{"title":326,"list":327,"isOpened":50},"Компьютерные сети",[328,331,334,337,340,343,346,349,352,355,358,361,364,367,370,373,376,379,382,385],{"name":329,"path":330,"isActive":50},"Как браузер после ввода домена понимает, откуда брать сайт?","/technical-interview/tasks/how-does-the-browser-know-where-to-get-the-website-after-entering-the-domain",{"name":332,"path":333,"isActive":50},"Что такое DNS, как DNS находит нужный IP-адрес?","/technical-interview/tasks/what-is-dns-and-how-does-dns-find-the-correct-ip-address",{"name":335,"path":336,"isActive":50},"Как домен попадает в DNS в таблицу соответствия: домен – ip","/technical-interview/tasks/how-does-a-domain-get-into-the-dns-mapping-table-domain-ip",{"name":338,"path":339,"isActive":50},"Как браузер решает, какое соединение ему открывать, TCP или UDP?","/technical-interview/tasks/how-does-a-browser-decide-whether-to-open-a-tcp-or-udp-connection",{"name":341,"path":342,"isActive":50},"Ключевые отличия TCP и UDP","/technical-interview/tasks/key-differences-between-tcp-and-udp",{"name":344,"path":345,"isActive":50},"\"TCP/IP\" - кем является TCP, а кем IP в данном случае?","/technical-interview/tasks/tcp-ip-who-is-tcp-and-who-is-ip-in-this-case",{"name":347,"path":348,"isActive":50},"Что такое HTTP и из чего состоит?","/technical-interview/tasks/what-is-http-and-what-does-it-consist-of",{"name":350,"path":351,"isActive":50},"Что такое заголовки в HTTP и зачем они нужны?","/technical-interview/tasks/what-are-http-headers-and-why-do-we-need-them",{"name":353,"path":354,"isActive":50},"Что такое параметры в HTTP?","/technical-interview/tasks/what-are-http-parameters",{"name":356,"path":357,"isActive":50},"Где находится HTML-код в структуре HTTP-ответа?","/technical-interview/tasks/where-is-the-html-code-located-in-the-http-response-structure",{"name":359,"path":360,"isActive":50},"Чем отличаются 1.0, 1.1, 2.0, 3.0 версии HTTP?","/technical-interview/tasks/what-are-the-differences-between-http-versions-1-0-1-1-2-0-and-3-0",{"name":362,"path":363,"isActive":50},"Пользователь авторизован на сайте. Как сервер узнает об этом с последующими другими заходами, что «я – авторизованный пользователь»?","/technical-interview/tasks/the-user-is-logged-in-on-the-website-how-does-the-server-know-that-i-am-an-authorized-user-when-the-user-logs-in-again",{"name":365,"path":366,"isActive":50},"Что такое cookie?","/technical-interview/tasks/what-is-a-cookie",{"name":368,"path":369,"isActive":50},"Кто является инициатором записи cookie в браузере?","/technical-interview/tasks/who-initiates-the-cookie-recording-in-the-browser",{"name":371,"path":372,"isActive":50},"Есть ли возможность с клиента (с браузера) управлять cookie?","/technical-interview/tasks/is-it-possible-to-manage-cookies-from-the-client-browser",{"name":374,"path":375,"isActive":50},"Верно ли утверждение, что злоумышленник, контролирующий роутер и прослушивающий трафик, может получить логины и пароли от сайтов, на которые заходит клиент?","/technical-interview/tasks/is-it-true-that-an-attacker-who-controls-a-router-and-listens-to-traffic-can-obtain-logins-and-passwords-from-websites-that-a-client-visits",{"name":377,"path":378,"isActive":50},"Всё, что идет по HTTPS – оно защищено?","/technical-interview/tasks/is-everything-that-goes-through-https-secure",{"name":380,"path":381,"isActive":50},"Все данные зашифрованы, используется https. Хакер взламывает dns и делает подмену одного ip на другой, на фишинговый сайт. В этом случае, злоумышленник может получить данные (логин \\ пароль)?","/technical-interview/tasks/all-data-is-encrypted-https-is-used-let-s-assume-a-hacker-hacks-the-dns-and-makes-a-substitution-of-one-ip-for-another-a-phishing-site",{"name":383,"path":384,"isActive":50},"Есть веб-приложение. Помимо HTTP, какие протоколы того же уровня (Application Layer) можно дополнительно использовать в веб-приложении в браузере?","/technical-interview/tasks/there-is-a-web-application-in-addition-to-http-what-other-protocols-of-the-same-level-application-layer-can-be-used-in-the-web-application-in-browser",{"name":386,"path":387,"isActive":50},"Каким способом может выполняться авторизация пользователя на сайте?","/technical-interview/tasks/how-can-a-user-be-authorized-on-a-website",{"title":389,"list":390,"isOpened":50},"Отрисовка в браузере",[391,394,397,400,403,406],{"name":392,"path":393,"isActive":50},"Что происходит, когда HTTP прислал HTML? Что браузер дальше делает c HTML с учетом того, что она валидная?","/technical-interview/tasks/what-happens-when-http-sends-html-what-does-the-browser-do-with-this-html-given-that-it-is-valid",{"name":395,"path":396,"isActive":50},"Как браузер парсит JavaScript и изображения при рендеринге?","/technical-interview/tasks/how-the-browser-parses-javascript-and-images-when-rendering",{"name":398,"path":399,"isActive":50},"Что в браузере блокирует рендеринг страницы?","/technical-interview/tasks/what-is-blocking-the-page-rendering-in-the-browser",{"name":401,"path":402,"isActive":50},"Что такое DOM в браузере? Что такое CSSOM?","/technical-interview/tasks/what-is-dom-in-a-browser-what-is-cssom",{"name":404,"path":405,"isActive":50},"Что является узлами в DOM?","/technical-interview/tasks/what-are-nodes-in-the-dom",{"name":407,"path":408,"isActive":50},"Из чего состоит CSSOM?","/technical-interview/tasks/what-does-cssom-consist-of",{"title":410,"list":411,"isOpened":50},"Ревью кода",[412],{"name":413,"path":414,"isActive":50},"По каким характеристикам, ревьюер понимает, что данный код - хороший, а этот код - плохой?","/technical-interview/tasks/how-does-a-reviewer-know-which-code-is-good-and-which-code-is-bad",{"title":416,"list":417,"isOpened":50},"Теория вероятности",[418,421,424],{"name":419,"path":420,"isActive":50},"В комнате три человека. Какова вероятность того, что хотя бы двое из них одного пола? То есть два и более.","/technical-interview/tasks/there-are-three-people-in-the-room-what-is-the-probability-that-at-least-two-of-them-are-of-the-same-sex-that-is-two-or-more",{"name":422,"path":423,"isActive":50},"Есть монета. Ее подбрасывают пять раз подряд. Каждый раз записывается, что выпало - орел или решка. Сколько разных последовательностей орлов и решек может при этом получиться?","/technical-interview/tasks/there-is-a-coin-it-is-tossed-five-times-in-a-row-each-time-it-is-recorded-whether-it-lands-on-heads-or-tails-how-many-different-sequences-of-heads-and-tails-can-be-obtained",{"name":7,"path":425,"isActive":50},"/technical-interview/tasks/how-can-you-guarantee-to-find-an-easy-fake-coin-among-8-in-the-minimum-number-of-weighings-on-a-balance-scale",{"slugs":427},[428,431,433,435,437,440,443,445,447,449,451,453,456,458,460,462,464,466,468,470,472,474,476,478,480,482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,518,520,522,524,526,528,530,532,534,537,539,541,543,545,547,549,551,553,555,557,559,561,563,565,567,569,571,573,575,577,579,581,583,585,587,589,591,593,595,597,599,601,603,605,607,609,611,613,615,617,619,621,623,625,627,629,631,633,635,637,638,640,642,644,646],{"name":429,"value":430},"Теоретические задания","theoretical-tasks",{"name":185,"value":432},"what-this-code-will-return-typeof-function",{"name":84,"value":434},"where-to-begin",{"name":152,"value":436},"why-is-it-dangerous-to-write-directly-to-the-prototypes-of-basic-types",{"name":438,"value":439},"Backend","backend",{"name":441,"value":442},"Frontend","frontend",{"name":149,"value":444},"prototype-what-logical-values-will-be-received-in-console-log",{"name":266,"value":446},"odd-numbers-should-be-sorted-in-ascending-order-and-even-numbers-should-remain-in-their-original-positions",{"name":257,"value":448},"find-non-repeating-numbers-in-an-array",{"name":230,"value":450},"arr-push-0-will-affect-the-array-in-the-same-way-as-if-we-performed",{"name":236,"value":452},"the-string-one-two-three-four-five-is-given-it-is-necessary-to-make-a-nested-object-out-of-the-string",{"name":454,"value":455},"Реализовать функцию, похоже как в Jquery","implement-a-function-similar-to-jquery",{"name":242,"value":457},"for-each-nested-object-you-need-to-add-the-level-property-which-is-equal-to-a-number-the-nesting-number",{"name":158,"value":459},"what-value-will-the-console-output-with-object-property",{"name":161,"value":461},"what-will-be-displayed-in-console-log-arr-0-arr-0",{"name":233,"value":463},"returns-an-array-from-1-to-n-replacing-numbers-that-are-multiples-of-3-with-fizz-numbers-that-are-multiples-of-5-with-buzz-and-numbers-that-are-multiples-of-both-3-and-5-with-fizzbuzz",{"name":263,"value":465},"checks-whether-two-strings-are-anagrams-of-each-other",{"name":269,"value":467},"determines-whether-a-word-is-a-palindrome",{"name":248,"value":469},"there-is-an-array-containing-objects-with-dates-that-need-to-be-sorted-by-date",{"name":275,"value":471},"implement-a-function-that-accepts-arguments-1-b-1c-and-the-return-string-1-b-1c",{"name":239,"value":473},"given-a-tree-nested-object-it-is-necessary-to-find-the-sum-of-all-vertices",{"name":245,"value":475},"for-each-branch-of-the-tree-write-down-the-nesting-number-of-this-branch",{"name":251,"value":477},"there-are-words-in-the-array-it-is-necessary-to-determine-whether-they-consist-of-the-same-letters",{"name":284,"value":479},"the-numbers-from-1-to-100-are-in-the-array-they-are-randomly-mixed-but-it-lacks-one-number-from-this-sequence-it-is-necessary-to-find-him",{"name":254,"value":481},"there-is-a-string-consisting-of-different-brackets-it-is-necessary-to-check-whether-all-are-closed",{"name":260,"value":483},"write-a-function-that-will-make-an-object-out-of-an-array",{"name":164,"value":485},"what-will-console-log-output-as-a-result-of-executing-the-while-loop",{"name":167,"value":487},"there-is-a-function-and-an-object-write-all-the-ways-you-know-to-output-the-value-of-x-from-an-object-in-the-console-using-the-function",{"name":179,"value":489},"what-will-the-console-display-if-a-property-is-assigned-to-an-array-using-a-negative-string-index",{"name":182,"value":491},"what-will-the-console-output-if-an-array-element-is-deleted-using-the-delete-operator",{"name":281,"value":493},"unifying-values-in-an-array",{"name":272,"value":495},"flattening-the-array",{"name":170,"value":497},"what-will-the-book-get-upper-name-method-return",{"name":278,"value":499},"string-compression",{"name":176,"value":501},"what-will-the-console-display-if-a-property-is-assigned-to-an-array-using-a-positive-string-index",{"name":188,"value":503},"what-will-happen-when-an-object-is-passed-as-an-argument-to-a-function-and-the-code-is-executed",{"name":329,"value":505},"how-does-the-browser-know-where-to-get-the-website-after-entering-the-domain",{"name":335,"value":507},"how-does-a-domain-get-into-the-dns-mapping-table-domain-ip",{"name":338,"value":509},"how-does-a-browser-decide-whether-to-open-a-tcp-or-udp-connection",{"name":341,"value":511},"key-differences-between-tcp-and-udp",{"name":344,"value":513},"tcp-ip-who-is-tcp-and-who-is-ip-in-this-case",{"name":347,"value":515},"what-is-http-and-what-does-it-consist-of",{"name":350,"value":517},"what-are-http-headers-and-why-do-we-need-them",{"name":353,"value":519},"what-are-http-parameters",{"name":356,"value":521},"where-is-the-html-code-located-in-the-http-response-structure",{"name":143,"value":523},"what-is-html",{"name":359,"value":525},"what-are-the-differences-between-http-versions-1-0-1-1-2-0-and-3-0",{"name":362,"value":527},"the-user-is-logged-in-on-the-website-how-does-the-server-know-that-i-am-an-authorized-user-when-the-user-logs-in-again",{"name":365,"value":529},"what-is-a-cookie",{"name":368,"value":531},"who-initiates-the-cookie-recording-in-the-browser",{"name":371,"value":533},"is-it-possible-to-manage-cookies-from-the-client-browser",{"name":535,"value":536},"Лайвкодинг","livecoding",{"name":155,"value":538},"what-will-the-following-code-return-object-create-null-has-own-property-to-string",{"name":377,"value":540},"is-everything-that-goes-through-https-secure",{"name":380,"value":542},"all-data-is-encrypted-https-is-used-let-s-assume-a-hacker-hacks-the-dns-and-makes-a-substitution-of-one-ip-for-another-a-phishing-site",{"name":383,"value":544},"there-is-a-web-application-in-addition-to-http-what-other-protocols-of-the-same-level-application-layer-can-be-used-in-the-web-application-in-browser",{"name":395,"value":546},"how-the-browser-parses-javascript-and-images-when-rendering",{"name":392,"value":548},"what-happens-when-http-sends-html-what-does-the-browser-do-with-this-html-given-that-it-is-valid",{"name":398,"value":550},"what-is-blocking-the-page-rendering-in-the-browser",{"name":401,"value":552},"what-is-dom-in-a-browser-what-is-cssom",{"name":404,"value":554},"what-are-nodes-in-the-dom",{"name":407,"value":556},"what-does-cssom-consist-of",{"name":104,"value":558},"the-html-code-is-given-what-will-be-the-color-of-the-some-dummy-text",{"name":107,"value":560},"there-is-a-template-for-html-and-css-code-what-color-will-the-text-thus-constant-have",{"name":110,"value":562},"there-is-a-template-for-embedded-html-code-what-will-be-the-color-of-the-one-more-dummy-text",{"name":113,"value":564},"there-is-a-template-for-embedded-html-code-will-there-be-a-display-does-bodys-block-affect-span",{"name":116,"value":566},"there-is-an-html-code-will-font-weight-affect-span",{"name":119,"value":568},"what-are-the-differences-between-flexbox-and-grid",{"name":122,"value":570},"do-flexbox-and-grid-replace-each-other",{"name":125,"value":572},"there-are-css-and-js-animations-what-is-the-difference-between-them-and-which-is-faster-and-more-convenient",{"name":88,"value":574},"tasks",{"name":191,"value":576},"what-are-the-ways-to-declare-a-function-in-javascript",{"name":194,"value":578},"what-is-this-in-javascript",{"name":197,"value":580},"what-is-an-event-loop-and-how-does-it-work",{"name":200,"value":582},"what-happens-if-you-call-typeof-on-an-undeclared-variable",{"name":203,"value":584},"what-does-the-typeof-operator-show-in-javascript",{"name":206,"value":586},"what-types-of-data-exist-in-javascript",{"name":209,"value":588},"what-is-the-best-structure-to-use-for-storing-an-ordered-list-of-strings-in-javascript",{"name":212,"value":590},"what-will-typeof-return-for-an-array",{"name":215,"value":592},"why-does-the-typeof-operator-applied-to-an-array-return-an-object",{"name":218,"value":594},"if-you-need-to-store-a-list-of-unique-strings-which-data-structure-should-i-choose",{"name":221,"value":596},"what-does-typeof-return-for-new-set-in-javascript",{"name":290,"value":598},"what-is-react-used-for-and-what-problems-does-it-solve",{"name":296,"value":600},"if-you-remove-the-vdom-fiber-in-react-and-manually-change-the-dom-isn-t-that-optimal",{"name":299,"value":602},"there-is-a-block-of-code-what-changes-in-the-real-dom-after-clicking-the-button",{"name":302,"value":604},"there-is-a-code-in-which-there-is-a-list-and-a-button-what-will-change-in-the-real-dom-after-clicking-on-the-button",{"name":305,"value":606},"why-do-we-need-redux-mobx-effector-why-do-we-need-a-state-manager-what-problems-does-it-solve",{"name":323,"value":608},"how-can-diagnose-and-fix-unwanted-background-color-changes-when-clicking-on-a-button-if-the-source-code-of-the-site-is-confusing-and-inaccessible-to-direct-reading",{"name":131,"value":610},"developed-it-committed-it-and-launched-it-it-turned-out-that-i-had-pushed-it-to-the-wrong-branch-or-rather-the-commit-was-in-the-wrong-branch-what-actions",{"name":134,"value":612},"git-has-several-options-for-merging-branches-which-ones-how-are-they-different",{"name":137,"value":614},"what-are-the-branching-strategies-for-the-team-what-is-it",{"name":413,"value":616},"how-does-a-reviewer-know-which-code-is-good-and-which-code-is-bad",{"name":95,"value":618},"here-is-a-fragment-of-a-bash-script-cd-mkdir-foo-what-is-happening-in-this-script",{"name":98,"value":620},"here-is-a-fragment-of-a-bash-script-target-ps-af-grep-1-head-n-1",{"name":314,"value":622},"what-is-algorithmic-complexity",{"name":317,"value":624},"what-is-the-algorithmic-complexity-of-quick-sort",{"name":224,"value":626},"why-do-two-objects-with-the-same-content-return-false-when-compared-in-javascript",{"name":386,"value":628},"how-can-a-user-be-authorized-on-a-website",{"name":227,"value":630},"what-is-the-difference-between-micro-and-macro-tasks-in-javascript",{"name":419,"value":632},"there-are-three-people-in-the-room-what-is-the-probability-that-at-least-two-of-them-are-of-the-same-sex-that-is-two-or-more",{"name":422,"value":634},"there-is-a-coin-it-is-tossed-five-times-in-a-row-each-time-it-is-recorded-whether-it-lands-on-heads-or-tails-how-many-different-sequences-of-heads-and-tails-can-be-obtained",{"name":7,"value":636},"how-can-you-guarantee-to-find-an-easy-fake-coin-among-8-in-the-minimum-number-of-weighings-on-a-balance-scale",{"name":78,"value":79},{"name":374,"value":639},"is-it-true-that-an-attacker-who-controls-a-router-and-listens-to-traffic-can-obtain-logins-and-passwords-from-websites-that-a-client-visits",{"name":332,"value":641},"what-is-dns-and-how-does-dns-find-the-correct-ip-address",{"name":173,"value":643},"variables-are-declared-as-follows-specify-the-correct-statement",{"name":293,"value":645},"what-is-the-underlying-mechanism-for-optimizing-dom-updates-in-react",{"name":308,"value":647},"what-prevents-you-from-organizing-a-centralized-state-without-a-state-manager-if-you-organize-the-state-using-react-context-and-state-mechanisms-what-is-the-problem-what-do-state-managers-add",{"cooperation":649,"copyright":652,"reportError":653,"socialNetwork":655},{"link":650,"title":651},"https://t.me/baurinanton","Сотрудничество","© “GOOD WEB JOB!”",{"label":654,"link":650},"Сообщить об ошибке",{"label":656,"socialNetworkList":657},"Мы в соцсетях:",[658,661,664],{"icon":19,"link":659,"title":660},"https://max.ru/u/f9LHodD0cOKMaukdnnahTeL5pwvjrPfUaZ4S8_1rsNy9I9qsmc9Ar3kP_y8","Max",{"icon":662,"link":650,"title":663},"ic:baseline-telegram","Telegram",{"icon":665,"link":666,"title":667},"ri:vk-fill","https://vk.com/baurinanton","VK",{"data":669,"body":670},{},{"type":671,"children":672},"root",[673],{"type":674,"tag":675,"props":676,"children":677},"element","p",{},[678],{"type":679,"value":62},"text",{"data":681,"body":682},{},{"type":671,"children":683},[684],{"type":674,"tag":675,"props":685,"children":686},{},[687],{"type":679,"value":49},{"data":689,"body":690},{},{"type":671,"children":691},[692],{"type":674,"tag":675,"props":693,"children":694},{},[695,697],{"type":679,"value":696},"2 взвешивания — достаточно при разбиении ",{"type":674,"tag":698,"props":699,"children":701},"code",{"className":700},[],[702],{"type":679,"value":703},"3+3+2",{"data":705,"body":706},{},{"type":671,"children":707},[708],{"type":674,"tag":675,"props":709,"children":710},{},[711],{"type":679,"value":56},{"data":713,"body":714},{},{"type":671,"children":715},[716],{"type":674,"tag":675,"props":717,"children":718},{},[719],{"type":679,"value":59},{"data":721,"body":722},{},{"type":671,"children":723},[724],{"type":674,"tag":675,"props":725,"children":726},{},[727,729,735],{"type":679,"value":728},"Следует начать с взвешивания ",{"type":674,"tag":698,"props":730,"children":732},{"className":731},[],[733],{"type":679,"value":734},"3 против 3",{"type":679,"value":736},", чтобы в одном результате (равновесии) сразу изолировать пару, а в двух других результатах — изолировать тройку, которая решается одним дополнительным взвешиванием.",{"data":738,"body":739},{},{"type":671,"children":740},[741,752],{"type":674,"tag":675,"props":742,"children":743},{},[744,750],{"type":674,"tag":745,"props":746,"children":747},"strong",{},[748],{"type":679,"value":749},"Правильный вариант: 2",{"type":679,"value":751}," - 2 взвешивания — достаточно при разбиении '3+3+2'",{"type":674,"tag":675,"props":753,"children":754},{},[755],{"type":679,"value":756},"В данной задаче заранее известно, что фальшивая монета легче, и это существенно упрощает поиск по сравнению с вариантами, где фальшивая может быть и легче, и тяжелее.",{"data":758,"body":759},{},{"type":671,"children":760},[761,766,779],{"type":674,"tag":675,"props":762,"children":763},{},[764],{"type":679,"value":765},"Каждое взвешивание на чашечных весах даёт 3 возможных результата, поэтому за n взвешиваний можно различить не более чем 3^n «веток» в дереве решений.",{"type":674,"tag":675,"props":767,"children":768},{},[769,771,777],{"type":679,"value":770},"Если заранее известно, что фальшивая монета легче, то максимум монет, среди которых можно найти одну лёгкую за n взвешиваний, равен 3^n, а минимальное число взвешиваний для c монет выражается как ",{"type":674,"tag":698,"props":772,"children":774},{"className":773},[],[775],{"type":679,"value":776},"ceil(log3(c))",{"type":679,"value":778},".",{"type":674,"tag":675,"props":780,"children":781},{},[782,784,790],{"type":679,"value":783},"Для 8 монет: ",{"type":674,"tag":698,"props":785,"children":787},{"className":786},[],[788],{"type":679,"value":789},"ceil(log3(8)) = 2",{"type":679,"value":791},", поскольку 3^1 = 3 \u003C 8 и 3^2 = 9 ≥ 8, значит 1 взвешивания недостаточно, а 2 теоретически достаточно и (важно) достижимо конкретной стратегией.",{"data":793,"body":794},{},{"type":671,"children":795},[796],{"type":674,"tag":675,"props":797,"children":798},{},[799],{"type":679,"value":18},{"data":801,"body":802},{},{"type":671,"children":803},[804,825,845,850,998,1003],{"type":674,"tag":675,"props":805,"children":806},{},[807,809,815,817,823],{"type":679,"value":808},"Обозначения: монеты ",{"type":674,"tag":698,"props":810,"children":812},{"className":811},[],[813],{"type":679,"value":814},"1..8",{"type":679,"value":816},", а операция ",{"type":674,"tag":698,"props":818,"children":820},{"className":819},[],[821],{"type":679,"value":822},"weigh(A, B)",{"type":679,"value":824}," означает взвесить набор A против набора B.",{"type":674,"tag":675,"props":826,"children":827},{},[828,830,836,838,844],{"type":679,"value":829},"Шаг 1 (первое взвешивание): взвесить ",{"type":674,"tag":698,"props":831,"children":833},{"className":832},[],[834],{"type":679,"value":835},"1,2,3",{"type":679,"value":837}," против ",{"type":674,"tag":698,"props":839,"children":841},{"className":840},[],[842],{"type":679,"value":843},"4,5,6",{"type":679,"value":778},{"type":674,"tag":675,"props":846,"children":847},{},[848],{"type":679,"value":849},"Возможны 3 случая:",{"type":674,"tag":851,"props":852,"children":853},"ul",{},[854,891,954],{"type":674,"tag":855,"props":856,"children":857},"li",{},[858,860,866,868,874,876,882,883,889],{"type":679,"value":859},"Равновесие: значит монеты ",{"type":674,"tag":698,"props":861,"children":863},{"className":862},[],[864],{"type":679,"value":865},"1..6",{"type":679,"value":867}," настоящие, фальшивая среди ",{"type":674,"tag":698,"props":869,"children":871},{"className":870},[],[872],{"type":679,"value":873},"7,8",{"type":679,"value":875},", тогда во 2-м взвешивании необходимо взвесить ",{"type":674,"tag":698,"props":877,"children":879},{"className":878},[],[880],{"type":679,"value":881},"7",{"type":679,"value":837},{"type":674,"tag":698,"props":884,"children":886},{"className":885},[],[887],{"type":679,"value":888},"8",{"type":679,"value":890}," и более лёгкая — фальшивая.",{"type":674,"tag":855,"props":892,"children":893},{},[894,896,901,903,908,910,915,917,923,924,930,932,938,940,945,947,952],{"type":679,"value":895},"Левая чаша легче (то есть ",{"type":674,"tag":698,"props":897,"children":899},{"className":898},[],[900],{"type":679,"value":835},{"type":679,"value":902}," легче ",{"type":674,"tag":698,"props":904,"children":906},{"className":905},[],[907],{"type":679,"value":843},{"type":679,"value":909},"): фальшивая среди ",{"type":674,"tag":698,"props":911,"children":913},{"className":912},[],[914],{"type":679,"value":835},{"type":679,"value":916},", во 2-м взвешивании необходимо взвесить ",{"type":674,"tag":698,"props":918,"children":920},{"className":919},[],[921],{"type":679,"value":922},"1",{"type":679,"value":837},{"type":674,"tag":698,"props":925,"children":927},{"className":926},[],[928],{"type":679,"value":929},"2",{"type":679,"value":931},"; если равны — фальшивая ",{"type":674,"tag":698,"props":933,"children":935},{"className":934},[],[936],{"type":679,"value":937},"3",{"type":679,"value":939},", иначе более лёгкая из (",{"type":674,"tag":698,"props":941,"children":943},{"className":942},[],[944],{"type":679,"value":922},{"type":679,"value":946},",",{"type":674,"tag":698,"props":948,"children":950},{"className":949},[],[951],{"type":679,"value":929},{"type":679,"value":953},") — фальшивая.",{"type":674,"tag":855,"props":955,"children":956},{},[957,959,964,965,971,972,978,979,985,986,991,992,997],{"type":679,"value":958},"Правая чаша легче: аналогично, фальшивая среди ",{"type":674,"tag":698,"props":960,"children":962},{"className":961},[],[963],{"type":679,"value":843},{"type":679,"value":916},{"type":674,"tag":698,"props":966,"children":968},{"className":967},[],[969],{"type":679,"value":970},"4",{"type":679,"value":837},{"type":674,"tag":698,"props":973,"children":975},{"className":974},[],[976],{"type":679,"value":977},"5",{"type":679,"value":931},{"type":674,"tag":698,"props":980,"children":982},{"className":981},[],[983],{"type":679,"value":984},"6",{"type":679,"value":939},{"type":674,"tag":698,"props":987,"children":989},{"className":988},[],[990],{"type":679,"value":970},{"type":679,"value":946},{"type":674,"tag":698,"props":993,"children":995},{"className":994},[],[996],{"type":679,"value":977},{"type":679,"value":953},{"type":674,"tag":675,"props":999,"children":1000},{},[1001],{"type":679,"value":1002},"Наглядная схема-дерево:",{"type":674,"tag":1004,"props":1005,"children":1009},"pre",{"className":1006,"code":1008,"language":679},[1007],"language-text","Взвешивание 1: (1,2,3)  vs  (4,5,6)\n  ├─ равно        → Взвешивание 2: 7 vs 8 → легче = фальшивая\n  ├─ левое легче  → Взвешивание 2: 1 vs 2\n  │     ├─ равно      → 3 фальшивая\n  │     └─ не равно   → легче из (1,2) фальшивая\n  └─ правое легче → Взвешивание 2: 4 vs 5\n        ├─ равно      → 6 фальшивая\n        └─ не равно   → легче из (4,5) фальшивая\n",[1010],{"type":674,"tag":698,"props":1011,"children":1013},{"__ignoreMap":1012},"",[1014],{"type":679,"value":1008},{"data":1016,"body":1017},{},{"type":671,"children":1018},[1019,1024],{"type":674,"tag":675,"props":1020,"children":1021},{},[1022],{"type":679,"value":1023},"Логика решения совпадает с «деревом решений» из разработки: каждый узел (взвешивание) даёт 3 ветви (меньше/больше/равно), а цель — чтобы у каждого листа оставался ровно 1 кандидат.",{"type":674,"tag":675,"props":1025,"children":1026},{},[1027,1029,1034],{"type":679,"value":1028},"Разбиение ",{"type":674,"tag":698,"props":1030,"children":1032},{"className":1031},[],[1033],{"type":679,"value":703},{"type":679,"value":1035}," работает потому, что первое взвешивание либо сразу сужает поиск до 2 монет (случай равновесия), либо до 3 монет (случай перекоса), а 2-е взвешивание умеет однозначно решать и задачу из 2 монет, и задачу из 3 монет.",{"data":1037,"body":1038},{},{"type":671,"children":1039},[1040,1045,1054,1059],{"type":674,"tag":675,"props":1041,"children":1042},{},[1043],{"type":679,"value":1044},"Ниже показан «алгоритм», близкий к тому, как подобное решение оформляется в задачах по программированию.",{"type":674,"tag":1004,"props":1046,"children":1049},{"className":1047,"code":1048,"language":679},[1007],"// weigh(A, B) возвращает:\n//  0  если равны\n// -1  если A легче (левая чаша легче правой)\n//  1  если B легче\nfunction findFakeCoin(coins[1..8]):\n  r1 = weigh([1,2,3], [4,5,6])\n\n  if r1 == 0:\n    // фальшивая среди 7 и 8\n    r2 = weigh([7], [8])\n    if r2 == -1: return 7\n    else: return 8\n\n  if r1 == -1:\n    // фальшивая среди 1,2,3\n    r2 = weigh([1], [2])\n    if r2 == 0: return 3\n    if r2 == -1: return 1\n    else: return 2\n\n  // r1 == 1\n  // фальшивая среди 4,5,6\n  r2 = weigh([4], [5])\n  if r2 == 0: return 6\n  if r2 == -1: return 4\n  else: return 5\n",[1050],{"type":674,"tag":698,"props":1051,"children":1052},{"__ignoreMap":1012},[1053],{"type":679,"value":1048},{"type":674,"tag":675,"props":1055,"children":1056},{},[1057],{"type":679,"value":1058},"Таблица соответствий для 2-го взвешивания в «группе из трёх»:",{"type":674,"tag":1060,"props":1061,"children":1062},"table",{},[1063,1082],{"type":674,"tag":1064,"props":1065,"children":1066},"thead",{},[1067],{"type":674,"tag":1068,"props":1069,"children":1070},"tr",{},[1071,1077],{"type":674,"tag":1072,"props":1073,"children":1074},"th",{},[1075],{"type":679,"value":1076},"Результат взвешивания X vs Y",{"type":674,"tag":1072,"props":1078,"children":1079},{},[1080],{"type":679,"value":1081},"Какая фальшивая (если фальшивая легче)",{"type":674,"tag":1083,"props":1084,"children":1085},"tbody",{},[1086,1100,1113],{"type":674,"tag":1068,"props":1087,"children":1088},{},[1089,1095],{"type":674,"tag":1090,"props":1091,"children":1092},"td",{},[1093],{"type":679,"value":1094},"равно",{"type":674,"tag":1090,"props":1096,"children":1097},{},[1098],{"type":679,"value":1099},"третья монета Z",{"type":674,"tag":1068,"props":1101,"children":1102},{},[1103,1108],{"type":674,"tag":1090,"props":1104,"children":1105},{},[1106],{"type":679,"value":1107},"X легче",{"type":674,"tag":1090,"props":1109,"children":1110},{},[1111],{"type":679,"value":1112},"X",{"type":674,"tag":1068,"props":1114,"children":1115},{},[1116,1121],{"type":674,"tag":1090,"props":1117,"children":1118},{},[1119],{"type":679,"value":1120},"Y легче",{"type":674,"tag":1090,"props":1122,"children":1123},{},[1124],{"type":679,"value":1125},"Y",{"data":1127,"body":1128},{},{"type":671,"children":1129},[1130],{"type":674,"tag":675,"props":1131,"children":1132},{},[1133,1135,1140],{"type":679,"value":1134},"В итоге: минимально требуется 2 взвешивания; стратегия ",{"type":674,"tag":698,"props":1136,"children":1138},{"className":1137},[],[1139],{"type":679,"value":703},{"type":679,"value":1141}," гарантированно находит фальшивую лёгкую монету; невозможность решения за 1 взвешивание объясняется тем, что одно взвешивание даёт лишь 3 исхода при 8 возможных кандидатах.",1775735658935]