Pull to refresh
18
0.5

Software Engineer

Send message

Очень оторванный от реальности подход. Проблем у него миллион, навскидку хотя бы такие:

– Чтобы этот подход работал, нужен coding standard, регламентирующий АБСОЛЮТНО ВСЁ. Межблочные интервалы. Выравнивание знаков равенства в блоке похожих выражений var1 = value1. Шаг в сторону и летит любое кастомное форматирование кода. Вот например несколько способов записать массив чисел, пользуясь одним и тем же кодстайлом:

( 1 2 3
  4 5 6 )

( 1 2
  3 4
  5 6 )

( 1 2 3 4 5 6 )

После roundtrip в AST и обратно будем выводить всё в 1 строку, да? Не всё кастомное форматирование является, как вы выражаетесь, "самовыражением". В некоторых случаях человек записал числа прямоугольником 2x3 потому что это способ наглядно представить данные, например там числа логически идут парами. В другом случае он вылез за разрешённую кодстайлом ширину текста 100 символов потому что иначе не влезает длинное объявление объекта. В третьем случае поставил 3 пустых строки, а не как по стандарту 1, вокруг какого-то блока, потому что там кластеры блоков кода. Исключения, исключения... Никогда и нигде в реальном проекте вы не встретите большого куска кода, способного без изменений пережить десериализацию в AST и сериализацию обратно.

– Чтобы этот подход работал, надо к каждому репозиторию с кодом иметь корректно парсящую его систему, которая может весить в разы больше скромного набора plaintext строк.

– Первый же реальный проект, в который вы притащите ваш редактор, начнётся с того, что там будет сторонний код, использующий собственный кодстайл (или не использующий вовсе), править который под "ваш" кодстайл и подключать ваш парсер никто не будет. Как взаимодействовать с таким кодом?

Так у вас в способе #2 MyHeap каждый раз выделяет блок только с бОльшим адресом?? А что если память кончится? А как возвращать ему память (free()) и переиспользовать её?

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

Яннп если честно. Чем этот набор баззвордов, определяющих эту вашу парадигму "Голубого океана", отличается от типового списка ценностей типовой компании, который точно так же про customer trust, лояльность к брэнду итд? Что такого уникального во вкусвилле? Ну сеть продуктовых магазинов верхнего ценового сегмента. Иногда там могу закупиться, иногда в пятёрочке или перекрёстке. Ужас какой, я брэнду не лоялен.

xterm-256color

Зачем? Alacritty есть в terminfo в современных дистрибутивах. TERM=alacritty / alacritty-direct. Установка TERM в xterm-256color в Alacritty чревата неработой настроек цветовой схемы Alacritty и возможно каких-то Esc-последовательностей, специфичных для Alacritty.

Numpy и в частности numpy.matmul предельно оптимизированы (вычисление numpy.matmul выполняет BLAS емнип), а все реализации matmul, используемые в данном тесте, достаточно наивны (просто проходится 3 вложенных цикла и делается умножение a_ik * b_kj, далее всё отдаётся на откуп компилятору).

На таких сравнительно небольших размерах матриц (1500x1500) эти 39 миллисекунд на python можно ускорить ещё в 2 раза, если отключить многопоточность :)

# перед импортом numpy!!!
import os
os.environ['OPENBLAS_NUM_THREADS'] = '1'
os.environ['NUMEXPR_NUM_THREADS'] = '1'
os.environ['MKL_NUM_THREADS'] = '1'
os.environ['OMP_NUM_THREADS'] = '1'

Вас не смущает, что Rust Java и Fortran в matmul обогнали C на порядок?))
Явно всё векторизовалось, как минимум в Rust: https://godbolt.org/z/6cvj9Y65r, а в C-LCC нет.

А дальше можно просто сверить ответ по числам.

Вряд ли задача вида "open question in number theory—a good Ph.D.-level problem" - это посчитать набор чисел. Практически наверняка это задача на доказательство.

Также "came up with a problem" всё же означает что задача была именно что придумана на ходу.

Over the next 10 minutes, Ono watched in stunned silence as the bot unfurled a solution in real time, showing its reasoning process along the way. The bot spent the first two minutes finding and mastering the related literature in the field. Then it wrote on the screen that it wanted to try solving a simpler “toy” version of the question first in order to learn. A few minutes later, it wrote that it was finally prepared to solve the more difficult problem. Five minutes after that, o4-mini presented a correct but sassy solution.

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

Что они там за 10 минут умудрились осознать и провалидировать я понятия не имею, но очень сомневаюсь, что то, чем они занимались эти 10 минут, являлось анализом решения по существу.

Upd: виноват поторопился - бывают наборы векторов равной длины, дающие сумму 0 и не образующие правильный многоугольник. Причём наботы как с чётным, так и с нечётным кол-вом элементов.

С чётным кол-вом: вектора из центра прямоугольника в его углы
С нечётным кол-вом: все положения часовых стрелок кроме 3,4,8,9,12. (равносторонний треугольник 2 6 10 + крест 1 5 7 11).

Суровые у вас девятиклассники... Имхо достаточно просто доказать лемму, что если сумма векторов равной длины, равна нулю, то концы этих векторов, исходящих из 1 точки, образуют правильный многоугольник. Далее противоречие с простотой p.

А аниме-то так и не зашарили. Или нынче образ Debian netinst идёт прямо с подборкой?

Выражение (rand() + rand() + rand()) / 3 всегда целочисленное (в C). Переменная RANDOM не указано какого типа, возможно что и float/double, в этом плане в ответе LLM нет ошибки. В случае RANDOM типа float/double произойдёт деление нацело (rand() + rand() + rand()) / 3 (не точное деление на 3 с плавающей точкой), результат будет преобразован во float/double и полученный float/double будет использован для инициализации RANDOM.

Я ошибся с изначальным комментом. С объяснением псевдослучайности/ нормального распределения всё ок. Небольшой недостаток ответа - не указано, что результат является целым числом, и не средним арифметическим, а результатом от деления нацело суммы 3 интов на 3. Например для "случайных" чисел 0, 0, 1 выражение вернёт 0 а не 1/3.

На rust я не вижу принципиального отличия от конструкции на go

Принципиальное отличие кода выше на Rust в том, что Rust гарантирует валидное значение переменной number в любом месте скоупа (при условии отсутствия unsafe блоков). Вызовом unwrap() разработчик явно подписывается, что при провале конвертации должна вызваться panic() и поток исполнения дальше не пойдёт.

Go же разрешит написать это ваше num, err := strconv.Atoi(str) и затем вместо условной обработки ошибки просто прибавить что-то к num без проверки err. Этот код свалится только во время выполнения.

PS: зачем две конвертации подряд, сначала i32 потом i64?? Этот код не эквивалентен коду на Go.

У команды Rust есть специальный документ под названием Edition guide, где они описывают что именно сломано между мажорными версиями :) Есть там и ваша фича, называется disjoint capture in closures:

https://doc.rust-lang.org/edition-guide/rust-2021/disjoint-capture-in-closures.html

А clippy не выдал предупреждение, что где-то инкрементируется total_items, но затем никто его не читает?

Пофиксите логику авторизации :) слой с модальным окном, требующим авторизации на Github, убирается в пару кликов в ublock / browser devtools / ..., а под ним находится полностью доступный редактор доски.

Зачем вам эта авторизация вообще нужна??? я бы мб и пользовался вашей доской, например для быстрого зашаривания, но отсутствие анонимного доступа этому препятствует. У некоторых и github аккаунта нет.

Как вы отличаете tap dance от 2 быстро нажатых подряд обычных клавиш, когда юзер нажимает 2ю клавишу не успев отпустить 1ю? Именно если он подразумевает быстрый ввод 2 символов, а не активацию tap dance.

Это программное обеспечение, совместимое лишь с персональными компьютерами с операционными системами Windows и macOS.

На Linux есть неофициальный порт: Vinegar (порт Roblox Studio) и Sober (порт клиентского приложения Roblox Player). Ставил, всё работает, не без доп. действий конечно.

Как создать игру в Роблоксе на телефоне

Сурово. Даже если бы существовало такое ПО под смартфоны, я бы посмотрел на процесс разработки роблокс плагина на смартфоне...

Слева это роутер или мини пк или сонька? Зачем вам держать это устройство постоянно под рукой??? Не говоря уже о том, что лёгким движением руки его случайно можно отправить в полёт с левого края стола.

1
23 ...

Information

Rating
3,032-nd
Location
Россия
Registered
Activity