Битовая бомба: тайный код на чистом С | 06 ноября 2023 года, 10:47

У Лизы в институте курс программирования на чистом С, по сути первый семестр. На третьем месяце обучения им приходится делать вот такие домашки:

нужно написать функцию int isLess(int a, int b) исключительно на операторах ! ~ & ^ | + <> и константах 0-255 включительно без использования больших констант типа 0xffffffff, без использования условных конструкций и циклов (if, do, while, for, switch, и т.д.), без макросов, без вызовов любых функций, никаких &&, ||, -, ? никаких других типов данных кроме int.

Есть очевидный ответ y + (~x + 1) >> 31) & 1, то есть вычитается y из x и дальше смотрим на знак. но для пары чисел -2147483648 [0x80000000] и 2147483647[0x7fffffff] алгоритм сбоит – он возвращает ноль, а тесты ожидают единицу. Это потому, что идет выход за 32 бита int при вычислении разницы.

Разумеется, я спросил и у ChatGPT, и у Google Bard. От них помощи ноль. Они не понимают проблемы из предыдущего параграфа. А если и понимают, предлагают тупое решение, которое видно невооруженным глазом, что не работает.

Мы в итоге после часа ковыряния нашли правильное решение в четыре руки. Лиза молодец, практически весь путь сама прошла, плюс гугл поиск. Решение вышло очень сложное, но работает. Там около 15 bitwise операций в итоге. После свертки функций и превращения в одно выражение со скобками — а так требуется по условию задачи — понять что там вообще происходит невозможно. Интересно в архитектурных университетах программирование проходят.

ответ: ((~(((a ^ b) >> 31) ^ 1) ^ 1) & ((a + (~b + 1)) >> 31) & 1) | (((a ^ b) >> 31) & 1) & ((a >> 31) & 1);

Самое интересное, что wolframalpha при запросе simplify и выражение, упрощает его так, что оно начинает не проходить тесты. То есть, wolframalpha конечно тоже не знает про ограничение в 32 бита.

Revolutionizing Reality: The Dawn of 3D Virtual Worlds | 05 ноября 2023 года, 11:08

Однажды будет возможно технологически извлекать 3D сцены из любого видео на Ютьюбе, где объект показывается с разных сторон и тогда начнётся бум трёхмерных виртуальных миров. Все, что не попало на камеру, будет дорисовываться AI, обученном по сути на таких же видео. Технологически мы уже близко – гуглите 3D Gaussian Splatting for Real-Time Radiance Field Rendering

Maša and Egor Shine at Denis Ten Memorial Challenge in Astana! | 04 ноября 2023 года, 20:43

Вчерашнее выступление Маши и Егора на Denis Ten Memorial Challenge в Астане.

მარია ალიევა / ეჰორ ბარშაკი – თავისუფალი ცეკვა 2023 დენის ტენის თასზე 💙
მე-2 ადგილი და წყვილის პირველი მედალი საერთაშორისო ჩემპიონატზე! გილოცავთ 🇬🇪

Maria Alieva / Yehor Barshak – Free Dance at Denis Ten Memorial 2023 💙 2nd Place.
This is the couple’s first medal at an international event! Congratulations 🇬🇪https://www.instagram.com/reel/CzOQ8d0IYL1/?igshid=YjJvbnBwOG0wdGdw

Дуим: история длины | 04 ноября 2023 года, 11:31

у меня стоит французский UI, и GIMP на французском. Смотрю, дюймы тут – pouces. Оказывается на французском дюйм – это pouce, что переводится как thumb, фаланга большого пальца. В испанском — pulgada. Утверждается, что из латыни, корень тот же, что и для французского.

Я решил посмотреть, а что ж такое дюйм в русском языке. Оказывается, тоже thumb, только от нидерландского, собственно, thumb тоже оттуда же пошел.

Обычно считается, что дюйм изначально был определён как длина фаланги большого пальца. Согласно другим легендам, дюйм был определён как 1⁄36 часть ярда, который, в свою очередь, был установлен как расстояние между кончиком носа и большим пальцем вытянутой вперёд руки у короля Англии Генриха I (есть версия и о том, что длиной в ярд был его меч).

Самое забавное, что в США, где эти дюймы больше всего в ходу в мире, используется вообще другое слово, inch, которое пошло от uncia, 1/12 часть, в данном случае — ноги. При этом французское слово pouce похоже на греческое слово pous, которое означает “стопа”, но этимология француского связывает pouce однозначно с латинским pollicis, означающим связанное с большим пальцем.

Так это не все. Ноги-то у всех разные. Ну понятно, что сейчас в ходу только один, но вообще был венский дюйм (26,340278мм), испанский дюйм считается равным 23.2166мм и еще целая куча. Испанские делились на континентальную Испанию (23,2166) и Мексику (23,278мм). В Германии в почти каждой земле был свой дюйм. Например, в Бадене – 3 см, а в Саксонии 2,36см. В канадском Квебеке использовался французский дюйм, но с 1985 года (недавно!) значение изменено — 2,707005 см. В США с 1958 года американский дюйм приравнивается к 2,54см.

Английский дюйм, который стабилизировался с 1958 и стал основой для международно признанного, менялся пять раз. Ноги что-ли росли. Например, в 1819 он был 1000000/393694см ≈ 2,5400438 см, а потом чуть уменьшенный корректировался еще четыре раза в шестой цифре после запятой.

Да, еще интересно, что для французского дюйма, который pouce, есть формула – 75000/27706 мм, что дает приблизительно 2,706995.

Еще интересно, что если вы видите по ГОСТ трубы 1/2″, то в миллиметрах это будет 21,3мм, а труба 5″ — 140мм. При попытке вычислить пересчетный коэффициент обнаруживается, что “трубные дюймы” различны для разных диаметров труб и при этом больше стандартного значения дюйма в 25,4мм.

То есть, на родине дюймов дюйм определяется как часть ноги, а вне родины дюймов — как часть руки 🙂

Серебряный успех: Маша и Егор выиграли Denis Ten Memorial Challenge 2023! | 04 ноября 2023 года, 08:53

Наша Маша и ее партнёр Егор привозят серебро с Denis Ten Memorial Challenge 2023, из Астаны, Казахстан — несмотря на разные неожиданные неприятности и неприятные неожиданности буквально до дня выступления включительно, которые нормального человека точно выбьют из колеи – но справились! Молодцы! В этом году это третий международный старт (летом была Турция и Будапешт, тоже с хорошими результатами). В начале 2024 будет чемпионат мира в Тайбей (Тайвань), и до этого ещё два старта в Европе. Для тех, кто донатил Маше и для тех, кто может ещё думает — собранные 6000 долларов ушли как раз на билеты ребятам в Турцию и Будапешт, а также на костюмы. Не знаю, как мы это все ещё тянем, но Маша и Егор «отрабатывают» на ура 😉 будем тянуть пока тянется. Надеюсь, копилка на GoFundMe нам ещё поможет (Если вдруг не против донатнуть, гуглите Alieva GoFundMe или ищите ссылку в комментариях). Подробности и фоточки – в посте у НАди

Behind the Scenes: Why Banks Like Chase Restrict Password Lengths to Just 32 Characters | 03 ноября 2023 года, 14:54

Интересно, зачем банкам, типа Chase, ограничивать длину пароля 32 знаками. Некоторые ограничивают и 12-ю. У меня лучшее предположение, что они используют сторонний софт для банкинга со ограничениями, которые тянутся еще со времен мейнфреймов. Это так? Кто знает?