Гундарин Роман aka NamorNiradnug
Пусть p — какой-нибудь невалидный указатель (например, past-to-end на какой-нибудь массив). Тогда в C++ &*p — UB (см. https://eel.is/c++draft/expr.unary#op-1). Теперь фокус: constexpr int* Null() { return &*(int *)0; } constexpr int *x = Null(); На…
clang trunk стал ругаться на разыменование nullptr в compile time!
а 21-ый не ругается
починили, получается
UPD: нашел старый issue в списке фиксов к clang 22: https://github.com/llvm/llvm-project/issues/48665
а 21-ый не ругается
починили, получается
UPD: нашел старый issue в списке фиксов к clang 22: https://github.com/llvm/llvm-project/issues/48665
GitHub
forming reference to nullptr is not rejected in constexpr · Issue #48665 · llvm/llvm-project
Bugzilla Link 49321 Version trunk OS All CC @randomnetcat,@zygoloid Extended Denoscription I think this UB should be rejected. constexpr bool foo(int* i) { int& j = *i; return true; } static_asse...
❤3
Только что оглушил себя на несколько секунд тем, что слишком агрессивно куснул редиску
🤣7❤2😱1😈1
Я всё понял
Черный квадрат – это вид сверху на черную табуретку
Черный квадрат – это вид сверху на черную табуретку
❤6
Гундарин Роман aka NamorNiradnug
https://github.com/msbelaid/PlugBrain
Поставил
Настроил максимальный уровень сложности
Открываю ТГ
Меня просят перемножить два четырехзначных числа
Я на ходу
Думаю, "скучно и нерешаемо"
Удалил
А ведь идея была хорошая...
Настроил максимальный уровень сложности
Открываю ТГ
Меня просят перемножить два четырехзначных числа
Я на ходу
Думаю, "скучно и нерешаемо"
Удалил
А ведь идея была хорошая...
❤3
https://www.openssh.com/pq.html
To encourage migration to these stronger algorithms, OpenSSH 10.1 will warn the user when a non post-quantum key agreement scheme is selected, with the following message:Весело...** WARNING: connection is not using a post-quantum key exchange algorithm.
** This session may be vulnerable to "store now, decrypt later" attacks.
** The server may need to be upgraded. See https://openssh.com/pq.html
www.openssh.org
OpenSSH: Post-Quantum Cryptography
OpenSSH post quantum cryptography
❤2
Я придумал (с точностью до полинома бесполезную) штуку. Если кто-то такое где-то видел и у этого или чего-то похожего есть общепринятое название, то, пожалуйста, поделитесь.
Пусть есть семейство схем Cₙ, разрешающих какой-то язык L. Cₙ — это схема, которая определяет принадлежность L слов длины n. Т.е. на каждую длину у нас отдельная схема. Вроде логично. Но иногда можно, в некотором смысле, лучше.
Скажем, есть проверка на равенство. В некотором смысле схема, которая умеет проверять две строки на равенство, умеет это делать для всех схем меньшего размера. Формальнее, можно сделать семейство схем Eₘ(n, x, y) размера O(m), принимающая длину входа n ≤ m и две строки длины n на сравнение, дополныных до длины m чем угодно (скажем, 0). Такая схема в некотором смысле комбинирует вычислительную мощность всех Сₙ при n ≤ m, и при этом асиммтотически имеет размер порядка O(|Cₘ|). При этом, если просто скомбинировать схемы Cₙ (+ какой-то dispatch по размеру, но это линейно от длины входа), то будет размер ∑|Cₙ| по n ≤ m. При |Cₙ| = O(n) (у нас случай проверки на равенство) это будет O(m²).
Теперь в общем случае, пусть есть язык L. Будет говорить, что семейство схем Tₙ с 2n (или log₂ n + n, не имеет значения) входами сильно распознает язык L, если x ∈ L ⟺ ∀ n ≥ |x|: Tₙ(|x|, x0...0) = 1, и Tₙ(|x|, x0...0) согласованы для всех n ≥ |x|. (UPD)
Если семейство схем сильно располнает язык, то можно семейтсво схем сколь угодно сильно "проредить", т.е. оставить только подпоследовательность схем, а для определения того, лежит ли x в L, брать любую из оставленных схем размера ≥ x. Скажем, имеет смысл делать экспоненциальное прореживание, оставляя только схемы Tₙ с n = 2ᵐ. Тогда для каждого x в оставленной подпоследовательности будет схема индекса O(|x|). Если Tₙ были полиномиального размера, то размер этой минимальной оставленной схемы, умеющей распознавать x, тоже будет полиномом от |x|, причем той же степени.
Как было замечено выше, если имеется семейство схем Cₙ, распознающая язык в обычном смысле, то, комбинируя эти схемы в одну, можно получить семейство Tₙ, распознающее L в сильном смысле, причем |Tₘ| = ∑ Cₙ + O(n) (на линию от n можно забить). Если Сₙ имеют полиномиальных размер O(nᵏ), то таким образом построенная Tₘ будет иметь размер O(nᵏ⁺¹). При этом очевидно, что если Cₙ были схемами минимального размера, то любое семейство, распознающее язык в сильном смысле, будет иметь размер не меньше, чем |Cₙ|.
В этот момент в целом можно закончить и сказать, что концепция бесполезная, потому что для схем полиномиального размера сильное распознавание с точностью до линейного множителя совпадает с обычным. Но в целом можно пытаться бороться за улучшение. В некотором смысле зазор между тривиальным (комбинация префикса обычных схем) и минимальным решением должен показывать, насколько задача неравномерна.
Дальше у меня мысли такие:
- Кажется, что для полиномиально разрешимых задач зазор должен быть небольшой (какой-нибудь логарифм; для задач типа проверки на равенство/выполнения арифметических операций зазор O(1)), но я пока не понимаю, как это в общем случае объяснять.
- Можно вспомнить, что полиномиальные схемы эквивалентны полиномиальным алгоритмам со строкой-подсказкой (см. P/poly). Возможность проредить последовательность схем, сильно распознающих язык, видимо должна быть связана с возможностью сжатия последовательности строк-подсказок.
Пусть есть семейство схем Cₙ, разрешающих какой-то язык L. Cₙ — это схема, которая определяет принадлежность L слов длины n. Т.е. на каждую длину у нас отдельная схема. Вроде логично. Но иногда можно, в некотором смысле, лучше.
Скажем, есть проверка на равенство. В некотором смысле схема, которая умеет проверять две строки на равенство, умеет это делать для всех схем меньшего размера. Формальнее, можно сделать семейство схем Eₘ(n, x, y) размера O(m), принимающая длину входа n ≤ m и две строки длины n на сравнение, дополныных до длины m чем угодно (скажем, 0). Такая схема в некотором смысле комбинирует вычислительную мощность всех Сₙ при n ≤ m, и при этом асиммтотически имеет размер порядка O(|Cₘ|). При этом, если просто скомбинировать схемы Cₙ (+ какой-то dispatch по размеру, но это линейно от длины входа), то будет размер ∑|Cₙ| по n ≤ m. При |Cₙ| = O(n) (у нас случай проверки на равенство) это будет O(m²).
Теперь в общем случае, пусть есть язык L. Будет говорить, что семейство схем Tₙ с 2n (или log₂ n + n, не имеет значения) входами сильно распознает язык L, если x ∈ L ⟺ ∀ n ≥ |x|: Tₙ(|x|, x0...0) = 1, и Tₙ(|x|, x0...0) согласованы для всех n ≥ |x|. (UPD)
Если семейство схем сильно располнает язык, то можно семейтсво схем сколь угодно сильно "проредить", т.е. оставить только подпоследовательность схем, а для определения того, лежит ли x в L, брать любую из оставленных схем размера ≥ x. Скажем, имеет смысл делать экспоненциальное прореживание, оставляя только схемы Tₙ с n = 2ᵐ. Тогда для каждого x в оставленной подпоследовательности будет схема индекса O(|x|). Если Tₙ были полиномиального размера, то размер этой минимальной оставленной схемы, умеющей распознавать x, тоже будет полиномом от |x|, причем той же степени.
Как было замечено выше, если имеется семейство схем Cₙ, распознающая язык в обычном смысле, то, комбинируя эти схемы в одну, можно получить семейство Tₙ, распознающее L в сильном смысле, причем |Tₘ| = ∑ Cₙ + O(n) (на линию от n можно забить). Если Сₙ имеют полиномиальных размер O(nᵏ), то таким образом построенная Tₘ будет иметь размер O(nᵏ⁺¹). При этом очевидно, что если Cₙ были схемами минимального размера, то любое семейство, распознающее язык в сильном смысле, будет иметь размер не меньше, чем |Cₙ|.
В этот момент в целом можно закончить и сказать, что концепция бесполезная, потому что для схем полиномиального размера сильное распознавание с точностью до линейного множителя совпадает с обычным. Но в целом можно пытаться бороться за улучшение. В некотором смысле зазор между тривиальным (комбинация префикса обычных схем) и минимальным решением должен показывать, насколько задача неравномерна.
Дальше у меня мысли такие:
- Кажется, что для полиномиально разрешимых задач зазор должен быть небольшой (какой-нибудь логарифм; для задач типа проверки на равенство/выполнения арифметических операций зазор O(1)), но я пока не понимаю, как это в общем случае объяснять.
- Можно вспомнить, что полиномиальные схемы эквивалентны полиномиальным алгоритмам со строкой-подсказкой (см. P/poly). Возможность проредить последовательность схем, сильно распознающих язык, видимо должна быть связана с возможностью сжатия последовательности строк-подсказок.
🤓7
Как же приятно заполнить СОП и поставить "1" в вопросах типа "позелность курса" на психологии, вы б знали...
🔥11
Cloudflare — это большой распределенный (не)отказоустойчивый багованный интерпретатор Common Lisp, написанный на Lua.
The Cloudflare Blog
Cloudflare outage on December 5, 2025
Cloudflare experienced a significant traffic outage on December 5, 2025, starting approximately at 8:47 UTC. The incident lasted approximately 25 minutes before resolution. We are sorry for the impact that it caused to our customers and the Internet. The…
😁1
Радио:
До нового года осталось... 22 дня! Спонсор обратного отсчёта – ПАО <...>банк.
❤6
Поезд в метро, посвященный РУДН
Ясно, понятно...
Студент сегодня, выпускник завтра.
Ясно, понятно...
❤🔥3
Я почему-то стал чаще ставить точки в конце предпожений. Это очень странно, я не понимаю, почему я это делаю.
❤3