spamsink: (Default)
Возьмем простое B-tree какое-нибудь. Простое - в смысле не B*-tree, т. е. никаких переливаний ключей из одного узла в другой. Лучше B+-tree, чтобы совсем просто было.

Возникает вопрос: при лимитированной высоте (глубине) дерева, каково ожидаемое количество ключей, которое в него поместится? Этот вопрос не так прост, как кажется. Пусть наше дерево - B+tree32, т. е. максимальное количество элементов в узле - 31, а указателей на узлы следующего уровня, соответственно 32. И пусть мы вставляем в дерево ключи строго в порядке возрастания.

Тогда при глубине 1 (т. е. когда есть только корневой узел) в него поместится 31 элемент. При попытке добавить следующий элемент этот узел разделится на два, по 16 элементов в каждом, которые станут на 2-м уровне, а корневой узел будет содержать ссылки на эти новые два. (Ключ в нем будет равен значению "медианного" элемента; WLOG, скажем, 17-го из имеющихся 32).

При продолжении добавления левый из двух только что образованных узлов никогда больше не будет попадать в поле зрения, поэтому в нём так навсегда и останется только 16 элементов. Правый узел разделится надвое при добавлении 48-го элемента, в левом из двух вновь образованных тоже навсегда останется 16 элементов, и т.п.

Таким образом, получаемое дерево будет иметь коэффициент ветвления, более близкий к 16, а не к 32.

Третий уровень захочет образоваться, когда в корневом узле было 31 ссылка на узлы по 16 элементов в каждом, а последняя ссылка - на узел, в котором 31 элемент. При вставлении 32-го элемента в этот последний узел он захочет разделиться, для чего понадобится вставить ссылку в корневой узел, а там уже некуда, поэтому и он потребует разделения с образованием нового уровня дерева. Итого 31*16+31 = 527, а sqrt(527) < 23.

Аналогичный подсчет для 3 и более уровней даст каждый раз все более низкое значение.

Упражнение 1. Выведите формулу или напишите программу, которая находит ожидаемое количество элементов, помещающееся в дерево глубиной k, при вставке элементов в случайном порядке.

Упражнение 2. Найдите последовательность номеров элементов, заполняющую дерево глубины k "под завязку".

Ответов я не знаю, и https://cs.stackexchange.com/ похоже, тоже не знает. Задавать настолько умные вопросы LLM-ам - только время терять.
spamsink: (Default)
Задачка-то вот она.

Внимание, ответ: минимальное количество односимвольных правок (правкой считается замена, вставка или удаление одного символа), которое нужно проделать с программой по ссылке, печатающей первые 100 цифр числа пи, чтобы она стала печатать первые 100 цифр числа е, равно пяти.
Вот эта программа:
#include <stdio.h>
int main() {
    const int N = 100;
    const int S = 10*N/3+1;
    int r[S];
    int i,k,b,d,c,cc;
    c = 10;
    for (i = 0; i < S; ++i)
        r[i] = 10;
    for (k = 0; k < N/2; ++k) {
        d = 0;
        i = S-2;
        do {
            d = d + r[i+1] * 100;
            b = i * 1 - 0;
            r[i+1] = d % b;
            d /= b;
            if (--i == 0) break;
            d = d * 1;
        } while (1);
        cc = c + d / 100;
        printf("%02d", cc);
        c = d % 100;
    }
    putchar('\n');
}

Найдите пять отличий от программы по ссылке.
spamsink: (Default)
Вот простенькая программа, которая печатает первые 100 цифр числа пи, а именно

3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067:
#include <stdio.h>
int main() {
    const int N = 100;
    const int S = 10*N/3+1;
    int r[S];
    int i,k,b,d,c,cc;
    c = 0;
    for (i = 0; i < S; ++i)
        r[i] = 20;
    for (k = 0; k < N/2; ++k) {
        d = 0;
        i = S-2;
        do {
            d = d + r[i+1] * 100;
            b = i * 2 - 1;
            r[i+1] = d % b;
            d /= b;
            if (--i == 0) break;
            d = d * i;
        } while (1);
        cc = c + d / 100;
        printf("%02d", cc);
        c = d % 100;
    }
    putchar('\n');
}


Внимание, вопрос: каково минимальное количество односимвольных правок (правкой считается замена, вставка или удаление одного символа) нужно проделать с этой программой, чтобы она стала печатать первые 100 цифр числа е, а именно

2718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427?
spamsink: (Default)
Когда какой-то ОН оказывается, так сказать, ИМИ - довольно редкий случай. С начала XIX века так было считаное число раз, а именно в 1818, 1845, 1856, 1913, 1940 и 2008. Впрочем, появление известной фразы, где упоминаются ОН и ОНИ, вряд ли связано с этим совпадением, потому что её автор католиком совсем не был.

Не стесняйтесь, напишите эту фразу.

ответ )
spamsink: (Default)
Задачка:

У Сигизмунда Полуэкта есть фитнес-трекер, который, в частности, умеет считать количество "этажей", на которые человек пешком поднялся за день, и умеет показывать статистику.

В первый день месяца Полуэкт поднялся на 10 этажей, а в последующие решил каждый день подниматься на 1 этаж больше, чем среднее за предыдущие дни с начала месяца. Т. е. 2-го - на 11 этажей, и т. д.

Если среднее показывается округленным до ближайшего целого, а полуцелое округляется до четного, то на сколько всего этажей Полуэкт поднимется за 30 дней?

По-моему, это тот случай, когда интуиция не работает совершенно. Попытайтесь угадать, скажем, с точностью до 30 (т. е. плюс-минус 15), а потом проверьте себя. Я ошибся весьма сильно.
spamsink: (Default)
В одном из дальних ящиков на кухне я внезапно нашел завалявшийся там керамический нож, купленный бог знает сколько лет назад, ещё в упаковке. Видимо, я когда-то купил два, один был давно использован, сломан и забыт, а этот просто забыт, и дожил до наших дней.

Увы, сразу после вскрытия упаковки обнаружилось, что им практически невозможно пользоваться.

Внимание, вопрос: почему так, и что мне пришлось сделать, чтобы привести его в пригодное к использованию состояние?
spamsink: (Default)
В юности, возможно, даже в "Юности", я читал одно переводное литературное произведение.

Про него пишут (автоперевод): Роман имел мгновенный коммерческий успех, несмотря на резкие отзывы. Книга была номинирована на ... премию, но была отозвана, когда судьи пригрозили уйти в отставку. ... Главный судья художественной литературы того года назвал ее «банальной книгой, которую просто нельзя квалифицировать как литературу» и предположил, что даже будучи номинированной, она «унизила бы» все остальные рассматриваемые романы.

Догадаетесь, без гугления и ИИ, о чём речь?
spamsink: (Default)
Возьмите квадратный листок бумаги (у меня под рукой был один из листков, которыми сырную нарезку прослаивают).

Приложите его правый верхний угол к середине левой стороны и разгладьте получившийся сгиб.

Раскройте лист, поверните на 90 градусов, повторите прикладывание-сгибание-раскрывание-поворот 4 раза.

Получившиеся 4 сгиба образуют квадратик в центре листка. Какую долю от площади листка составляет площадь квадратика? Попробуйте прикинуть на глаз, а потом проверьте себя.
spamsink: (Default)
Если взять полоску бумаги, или даже лучше пластика, начать её завязывать в узел, а когда торчащие из узла концы начнут сгибаться, сложить их вдвое как можно дальше внутрь узла, и продолжать затягивать узел, то в конце концов получится некое подобие коробочки. Если наметить ей грани обжатием, получится пирамидка с параллелограммом в основании.



Вычислить её объём в зависимости от ширины полоски - наша задача. Но я не представляю себе, как это делать.
spamsink: (Default)
В качестве комментария к заголовку: по легенде, Пол Эрдёш (Erdős Pál) ответил отрицательно на этот вопрос, когда его спросили в отношении гипотезы Коллатца (хотя, по идее, если немец Rabitz - Рабиц, со своей сеткой, то и немец Collatz тоже должен быть Коллац, со своей гипотезой).

Имеется логическая компьютерная игра-детектив со следующей вводной: один из 5 гостей убил хозяина дома в одной из 6 комнат в один из 9 моментов времени с точностью до часа.

BILL, MARY, JOHN, SUZY AND PAUL ARE HOUSE GUESTS.
THEIR HOST WAS MURDERED BY ONE OF THEM BETWEEN 1 PM. AND 9 PM.
YOUR JOB AS INSPECTOR CLEW-SO IS TO FIND THE KILLER, TIME, AND ROOM.
YOU WILL BE GIVEN A HOUSE DIAGRAM AND A SET OF QUESTIONS FOR THE SUSPECTS,
BUT THE GUILTY PERSON MAY TRY TO MISLEAD YOU BY LYING SOME OF THE TIME.
IF ONE OF THE SUSPECTS CLAIM THAT THE HOST WAS ALREADY DEAD OR
THAT THE HOST WAS STILL ALIVE, THEN YOU HAVE FOUND THE ROOM WHERE THE MURDER TOOK PLACE.

Помещения дома: GARAGE TROPHY DINING LIVING LOUNGE ATRIUM, расположенные топологически линейно.

Гости в час дня находятся в случайных местах, и каждый час перемещаются в другое случайное место.

Хозяин, живой или мертвый, всё время находится в одном и том же месте.
Задавать можно следующие вопросы:

- <подозреваемый/ая>, во сколько вы были в <помещении>?

В ответ говорится список целых часов или ответ I WAS NOT IN THAT ROOM). Все, кроме убийцы, говорят правду. Убийца с вероятностью 50% "лжёт", отвечая I WAS NOT IN THAT ROOM" независимо от комнаты, о которой спрашивают; в другом варианте игры ложь заключается в ответе одним случайным числом от 1 до 9.

- <подозреваемый>, где вы были в <час>?

В ответ говорится название комнаты. Также упоминаются люди, которые были в тот момент в той же комнате, и сообщается, кто из гостей в это время был в соседних комнатах.

Невиновные говорят правду о своем местоположении и о других гостях, и если речь идет о комнате, где произошло убийство, с 50%-й вероятностью упоминают, был хозяин ещё жив или уже мертв; в другом варианте игры - только если уже мертв.

Ложь убийцы (с 50%-й вероятностью) заключается в ответе, что он был в случайной комнате, и в ответе, 50%/50%, что в этой комнате хозяин был ещё жив (уникальной фразой, позволяющей при некотором опыте игры понять, что отвечает виновник) или что он был уже мёртв.

(Замечу, что реальные игроки в игру не были осведомлены, как устроен механизм ответа про хозяина, в чем заключается ложь убийцы, и каковы вероятности вероятностных ответов.)

Выигрыш заключается в соответствующем действительности игры заявлении, что такой-то совершил убийство во столько-то часов в таком-то помещении. Для математического удобства будем считать, что если это заявление было неверным, то фиксируется проигрыш.

Собственно, математические вопросы: каково матожидание и дисперсия количества вопросов, необходимых для гарантированного выигрыша при "оптимальной" стратегии в каждом из вариантов игры (кроме упомянутых двух, можно и ещё варьировать)? И в чём, собственно, заключается эта "оптимальная" стратегия? И готова ли математика к таким задачам?

Безотносительно к математике, с психологической точки зрения можно обсудить, какого (двоичного) порядка должно быть равно это матожидание, чтобы в игру было не утомительно, но и не тривиально, играть.

Собственно говоря, вариантов первого хода уже видится несколько:
1. Спросить, где человек был в 1 дня (полезно только в варианте, где честные люди сообщают, что хозяин был ещё жив).
2. Спросить, где человек был в 9 вечера (максимизирует вероятность сообщения, что хозяин уже мёртв).
3. Спросить, во сколько человек был в случайном помещении.
4. Спросить, во сколько человек был в одном из крайних помещений (гараж или атриум), чтобы было однозначно понятно, что есть "соседние комнаты", если про гостей в них будет сказано.

В целях анализа, поверхностно игра напоминает "быки и коровы" (Mastermind), если бы если все утверждения были детерминированные, и убийца никогда не лгал, но вероятность лжи убийцы, и вероятность того, что честные люди иногда говорят не всю правду, всё сильно усложняют.

Самому мне пробовать не с руки, но представляется, что объяснить ЧатуГПТ правила игры и уговорить играть в неё будет непросто. А, собственно, в быки и коровы с ним кто-нибудь пытался играть? Увы, в силу английского названия игры, поиск к успеху не приводит.
spamsink: (Default)
Какое минимальное количество точек нужно нанести на кубик, чтобы им можно было пользоваться как игральной костью (т.е. переводить наблюдённый результат падения кубика в число от 1 до 6)?

(Ну и сами порешайте, не одним же детям мучиться.)
spamsink: (Default)
Вот вы думаете, что в унарной (единичной) системе счисления можно только целые числа представлять, например,
2 - 11, 3 - 111, 5 - 11111, и т. п., и всё? А вот как вам такое (не я придумал, но не могу не поделиться):

Дроби с числителем 1, соответственно: 1/2 - 00, 1/3 - 000, 1/5 - 00000 и т.п.

Любые рациональные числа представляются конечными строками нулей и единиц, например:

3/2 - 1011, 2/3 - 0100, 5/3 - 1011011. 4/7 - 0100100100.

Иррациональные числа представляются бесконечными последовательностями, например:
sqrt(2) - 1010110101101...
φ       - 10110101101101...
e       - 1101110111011...


Разгадка проста. Допишу её в апдейте через пару дней, если никто раньше не догадается.
spamsink: (Default)
Вот неполный список стран, в алфавитном порядке, о которых можно считать, что они входят в некий эксклюзивный клуб:

Австрия
Германия
Дания
Италия
Польша
Россия
США
Финляндия
Франция
Швейцария
Швеция

Двух стран не хватает. Обе не в Европе. Назовите их (желательно, с пояснением, по какому принципу, как вы считаете, составлен список).
spamsink: (Default)

  • Andorra
  • Barbados
  • Guinea-Bissau
  • Liberia
  • Liechtenstein
  • Micronesia
  • Monaco
  • San Marino
  • Tuvalu
  • United States
  • Vatican City


Нет, это не нелюбовь к метрической системе, несмотря на наличие в списке США и Либерии. :)

ответ )
spamsink: (Default)
Рассмотрим следующую последовательность уникальных целых положительных чисел: первое число - 1; далее каждое следующее число - минимальное из тех ещё не встречавшихся, которое даёт среднее арифметическое с предыдущим такое, что ни одна цифра в среднем арифметическом (включая и 5 после запятой, если деление было не нацело) не совпадает ни с одной из цифр в слагаемых.

Таким образом, после единицы не может идти 2, потому что (1+2)/2 = 1.5, а 3 - годится.
После тройки ни 2, ни 4 не годятся, потому что (3+2)/2 = 2.5, (3+4)/2 = 3.5, а 5 - годится.

Первые 20 элементов последовательности таковы (в OEIS её, понятное дело, на данный момент нет):
1  3  5  7  2  4  6  8  10  34  9  20  42  18  30  14  31  13  35  17


Понятно, что некоторых чисел в последовательности встретиться гарантированно не может - например, 1023456789.
А какое самое маленькое число, не встречающееся в ней (я не знаю)? И вообще, она конечная или бесконечная?
На первый взгляд похоже, что бесконечная, но очевидного доказательства я не вижу.


(via a private list)
spamsink: (Default)
В предыдущем посте я задал загадку


Если верить сайту nomadist.com, у Медельина, дельфина, Картахены и косатки есть нечто общее.

Что именно?


Вместо того, чтобы думать над собственно вопросом, народ начал придираться к неуточнённости местонахождения Картахены или написанию слова "косатка", и за двое суток так никто ни одного разумного предположения, ни правильного, ни неправильного, не сделал, а ответ прост:

на всякий случай под катом, чтобы дать шанс ещё раз подумать )
spamsink: (Default)


Если верить сайту nomadist.com, у Медельина, дельфина, Картахены и косатки есть нечто общее.

Что именно?
spamsink: (Default)
Имеется 4 больших мешка с разноцветными стеклянными шариками. На мешках написано "красные", "зелёные", "синие", "смесь". Известно, что шарики в мешках действительно только красные, зелёные или синие, и смесь только в одном из мешков, но ни на одном мешке надпись не соответствует действительности.

Разрешается вслепую взять по одному шарику из каких-нибудь двух мешков; при этом можно выбирать, откуда взять второй шарик, в зависимости от цвета шарика, взятого из первого мешка.

Как гарантированно выбрать два мешка, в которых не смесь?

(Взято с fivethirtyeight.com)
spamsink: (Default)
До меня дошли слухи, что существует хотя бы одно число 0 < x < 1, представление которого в двоичной и в троичной системе в точности совпадает, начиная с некоторого знака.

Понятно, что это должно быть какое-то иррациональное число, но как его получить хотя бы приблизительно численными методами, я не представляю себе.

Математики, ау!
spamsink: (Default)
Как только я вчера перед сном понял, что в словах "ЛЕГИОН" (в кириллическом счёте означавшем, в частности, 105) и "ТЬМА" (как широко известно, это 104) в общей сложности 10 различных букв, я лёг спать с намерением написать небольшую программу. Проснувшись поутру, я исполнил намеренное, и в результате оказалось, что

LEGION / ТЬМА = TEN - 3 решения (какая досада)

ЛЕГИОН / ТЬМА = МИГ - 2 решения

LEGION / ТЬМА = LOL - 4 решения


и т. п.

А, скажем, с частным вида EGG, OIL или TOT решение получается единственное.

Всего же комбинациий, чтобы число из каких-то 6 различных цифр, деленное на число из оставшихся 4 цифр (разумеется, ни в одном из двух чисел ноль не должен быть старшей цифрой), давало в результате целое число, оказывается 1382, от 107352 / 8946 = 12 до 973854 / 1062 = 917.

Profile

spamsink: (Default)
spamsink

June 2025

S M T W T F S
1 2 34567
89 1011 121314
15161718192021
22232425262728
2930     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 15th, 2025 02:30 pm
Powered by Dreamwidth Studios