All streams
Search
Write a publication
Pull to refresh
39
0.1
Владимир Медведев @WinPooh73

Разработчик, C/C++

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

А можно ещё раз то же самое, но по-русски?
Не уверен, что по всему спектру применений C++ этот способ оптимальный (без «самый»). Вполне могу предположить себе платформу, на которой реализация map может быть не деревом, а как раз хэш-таблицей.
Не думаю также, что мейнстримность чего-либо должна быть основанием стричь всё остальное под ту же гребёнку, в данном случае — менять терминологию из стандарта языка.
Вопреки расхожему мнению, основной источник силы программ — не дебютные и эндшпильные базы данных, а чрезвычайно оптимизированный расчёт вариантов + хорошо настроенная оценочная функция. Дебюты и эндшпили в сумме дадут порядка 50-100 пунктов Эло. Может даже и меньше. У супергроссмейстеров вроде Накамуры программы выигрывают вообще безо всякого дебюта, давая из начальной позиции фору в два хода.
> C++: map (а на самом деле это двоичное дерево. С++11 добавляет unordered_map, который является хэш-таблицей)

Вроде бы, стандарт C++ не обязывает реализовывать map именно двоичным деревом, а unordered_map — хэш-таблицей.
Десять лет назад на шахматном форуме было достаточно содержательное обсуждение программирования шашек. Вдруг пригодится…

Ассемблерная версия Стокфиша весит порядка 100-150 КИЛОбайт. Это без интерфейса, понятное дело. Но вся логика шахмат туда помещается, и играет на 3200 Эло.

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

Если вы ставите в качестве сверхзадачи полный просчёт шашечной игры, логично двигаться с конца — от позиций с минимальным числом шашек на доске вверх по дереву. Создатели эндшпильных баз так дошли сейчас, кажется, до 8-9 фигурных позиций. Осталось всего ничего: добавить ещё 15-16 шашек, причём добавление каждой следующей увеличивает сложность по экспоненте :)
Да, и глагол "выиграть" в значении "победить" требует предлога "у". Победил программу, но выиграл У программы.
А так статья захватывающая! Удачи!

Впервые прочитал про эту задачу в 80-х в журнале «Scientific American» (русский вариант выходил под названием «В мире науки»). Кому любопытно взглянуть — статья в рубрике «Занимательный компьютер», посвящённая «охоте на бобра-работягу» в номере 1984-10, читательские отклики в номере 1985-05.
Партия с Чо Хеян на Го-Конгрессе в Санкт-Петербурге игралась на двух камнях форы. Фору получала программа.
https://www.youtube.com/watch?v=0zjRBVVRdDM
Да, это все знают. А для поиска игры go — ключевое слово baduk. Маленькие хитрости, неочевидные при первом знакомстве с предметом. Язык C в этом отношении избежал неоднозначности, при всей краткости названия удалось избежать совпадения с часто используемым словом. Впрочем, когда его так назвали, до поисковых машин было ещё пара десятков лет…
Полное ощущение, что название языка выбиралось специально, чтобы превзойти go в «удобстве» поиска в интернете по ключевому слову.
Английское слово «list» переводится на русский язык как «список». Сортированный список, двусвязный список и т.д. Слово «лист» в данном случае — ложный друг переводчика. Оно означает по-русски совсем другое.
В иных архитектурах при доступе к невыровненным данным вообще аппаратное исключение выбрасывается.
Ещё программист, которого разбудили заказчики посреди ночи, и которому срочно (ещё вчера) нужен костыль на продакшен, где каждая минута простоя стоит какие-нибудь мегабабки. Впрочем, это укладывается во вторую категорию, глубоко несчастных :)
Исправление увидел, спасибо. Данный вопрос снят.
Извините, но если это — образец олимпиадного кода, то я был об олимпиадниках лучшего мнения…
Ещё раз. В реальном рабочем коде вы будете копировать на стек строку размером 300 мегабайт? Если да, то какие проверки спасут вас от stack overflow? Если нет, то каковы дальнейшие действия вашего алгоритма?
Не говоря о том, что копировать данные для решения такой простой задачи — вообще, мягко говоря, не самый экономный подход…
Да и вообще, вызов вами функции memcpy не соответствует её сигнатуре. В третьем параметре должен быть размер копируемой области, а не указатель на её конец.
memcpy(&value, str, str+strlen(str)+1)); //копируем в нее данные

https://ru.wikipedia.org/wiki/Memcpy

void *memcpy(void *dst, const void *src, size_t n);

где
dst — адрес буфера назначения
srс — адрес источника
n — количество байт для копирования

Так что то, что у вас «все всегда на своих местах» — это результат какого-то невероятного везения :))
Undefined behaviour же классический.

Information

Rating
3,701-st
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity