Обновить
39
0
Владимир Медведев @WinPooh73

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

Отправить сообщение

Вы не хотите добавить к своему боту самый простейший поиск по дереву? В книге он описан достаточно подробно. Сразу же отпадут вопросы с запрещёнными ходами и корректным окончанием партии. По статье сложилось впечатление, что ваш бот играет исключительно на оценке позиции. Впрочем, опыт DeepMind показывает, что таким путём программа вполне может достичь силы 1-го профессионального дана. Удачи!

Полезных ископаемых нет. Воды нет. Растительности нет. Населена роботами.

Программист из компании Гугл

Был упитан и в целом округл.

Раз на акции он

Приобрёл опцион,

И вдобавок стал весел и смугл.

Программист из компании Эппл

В снах кошмарных исходники грепал.

Находил же везде

Код из Фри-Бэ-Эс-Де,

И чесал озадаченно репу...

«Нам угрожает начинённый атомными бомбами инопланетный космический корабль. У нас есть транспортир» — Нил Стивенсон, «Анафем»
Возможность прямого доступа в память и выполнения ассемблерных вставок вряд ли побивается любой самой развитой рефлексией.
А как можно было бы развернуться на C++ с использованием template metaprogramming!
> Какая ежедневно используемая ИТ-система удалена от нас дальше всех? Марсоход Perseverance. Пожалуй, дальше пока что некуда.

Если не вспоминать «Вояджеры» и «Пионеры», несущие на себе ИТ-системы 70-х годов, и уже вышедшие за пределы Солнечной системы, то из более новых есть «Юнона», обращающаяся по орбите вокруг Юпитера. Аппарат запущен 10 лет назад, в июле планируются очередные орбитальные манёвры.
Космическая обсерватория Спектр-РГ, запущена в 2019 году.
Находится в области точки Лагранжа L2 системы Земля-Солнце, в 1.5 млн. км от Земли, что несколько дальше геостационарной орбиты.
Также необходимо устранить последовательность символов разделителей в начале и в конце строки, для корректной работы функции разбиения.

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

«Did you really name your son Robert'); DROP TABLE Students;-- ?»
Сразу вспомнилась функция Аккермана. Её, кстати, тоже используют в тестах на производительность.
std::stringstream ss;
ss << anything_you_want;
std::string s = ss.str();
Наука просит жертв. Эксперимент:
кот брошен с высоты торшерной лампы.
Придав хвосту вращательный момент,
он падает на все четыре лапы.

Волнение не в силах побороть,
спешит к буфету труженик науки,
роняет недокусанный ломоть
и портит маслом импортные брюки.

Но, позабыв, что завтрак был таков,
ученый горд: век не напрасно прожит!
Открыт Закон Падения Котов!
Теперь один вопрос его тревожит:

как полетит лабораторный кот,
когда к спине привязан бутерброд?
В доинтернетные времена был такой английский джентльмен, который устроил себе аналогичную задержку «новостной ленты» — ежедневно читал газету то ли 20-летней, то ли 50-летней давности.
Вариант от Яндекса показывает, во всяком случае, некоторое знакомство с классическим русским переводом.

Это был бриллиг и скользкие Тувы.
Неужели Гир и гимбл в вабе:
Отрубить ему голову!,
Как мюмзики в мове.

— Берегись Бармаглота, сын мой!
Челюсти, которые кусают, когти, которые ловят!
Остерегайтесь птицы Джубджуб и избегайте
В frumious Брандашмыг!”

Он взял свой ворпальский меч в руку.;
Долгое время manxome врага он искал—
Так отдыхал он у дерева Тумтум
И постоял немного в раздумье.

И, как уффиш думал, он встал.,
Бармаглот с горящими глазами,
Пришел whiffling через Бармаглот древесины,
И бормотал, когда он пришел!

Раз, два! Раз, два! И насквозь, насквозь.
Клинок ворпала хихикнул-закуска!
Он оставил его мертвым и с головой.
Он пошел галопом обратно.

“И ты убил Бармаглота?
Приди в мои объятия, мой мальчик Бимиш!
Сегодня волшебный день! Каллу! Callay!”
Он захихикал от радости.

Это был бриллиг и скользкие Тувы.
Неужели Гир и гимбл в вабе:
Отрубить ему голову!,
Как мюмзики в мове.

Вот только кто бы объяснил, откуда у ИИ такое желание отрубить голову в первой же строфе, когда в оригинале об этом нет и речи:

’Twas brillig, and the slithy toves
Did gyre and gimble in the wabe:
All mimsy were the borogoves,
And the mome raths outgrabe.
«Тварь бриллигская, и щелевые печи
Появился в вейбе:
Все мимсы были бороговыми,
И крысики-момомомы перестают существовать.

»Остерегайся Бармаглота, сын мой!
Челюсти, которые кусаются, когти, которые ловят!
Остерегайся птицы Jubjub, и избегай
Жестокий Бандерснатч!"

Он взял в руки вихревой меч;
Давным-давно мужественный враг, которого он напугал…
Так отдохнул он у дерева Тамтум.
И задумался.

И, как в уффишской мысли, он стоял,
Бармаглот с огненными глазами,
Пришёл вздрогнуть в тюльгийском лесу,
И сгорел, как только пришел!

Раз, два! Раз, два! И через и через
Лезвие ворпала пошло на хихиканье!
Он оставил его мертвым, и с его головой
Он поехал галумфать обратно.

«И ты убил Джаббервока?
Иди ко мне на руки, мой бревенчатый мальчик!
Слабый день! Каллу! Каллей!»
Он замерз в своей радости.

«Бриллиг, и щелевые печи
Появился в вейбе:
Все мимсы были бороговыми,
И крысики-момомомы перестают существовать.

Переведено с помощью www.DeepL.com/Translator (бесплатная версия)

Стивен Хокинг считал, что ни одного бита информации нельзя извлечь из чёрной дыры. Впоследствии от признал ошибку и изменил своё мнение. Но Стивен Хокинг не знал про Сбербанк!

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

int CountBits(U64 b)
{
	if (b == 0)
		return 0;

	static const U64 mask_1 = LL(0x5555555555555555);   // 0101 0101 0101 0101 ...
	static const U64 mask_2 = LL(0x3333333333333333);   // 0011 0011 0011 0011 ...
	static const U64 mask_4 = LL(0x0f0f0f0f0f0f0f0f);   // 0000 1111 0000 1111 ...
	static const U64 mask_8 = LL(0x00ff00ff00ff00ff);   // 0000 0000 1111 1111 ...

	U64 x = (b & mask_1) + ((b >> 1) & mask_1);
	x = (x & mask_2) + ((x >> 2) & mask_2);
	x = (x & mask_4) + ((x >> 4) & mask_4);
	x = (x & mask_8) + ((x >> 8) & mask_8);

	U32 y = U32(x) + U32(x >> 32);
	return (y + (y >> 16)) & 0x3f;
}
Не стоит забывать, что основная ценность законов роботехники Азимова, с которых списаны первые заповеди — невозможность их строгого формального соблюдения. На чём и строится фабула большинства рассказов из цикла о роботах. То есть эти законы спроектированы для пользы писательского ремесла и конкретного автора, а не для блага общества ;)

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность