Обновить
4
0.1

Пользователь

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

Можно, но
1) при этом пострадает качество текста в целом (мы, возможно, хотели бы динамически подстраивать температуру под "важность" токена, но сейчас никто вроде не пытается это делать);
2) в менее очевидных случаях нулей не будет (скажем, при ответе "да"/"нет" на нетривиальный вопрос логиты обоих опций будут существенно ненулевыми).

Не решения, право доступа к работающей системе. Судя по тому что Роскомнадзор некоторое время назад выкатывал ТЗ "сделать свой СОРМ, с маджонгом и гейшами" (там были формулировки отчётливо из времён "трёхглавого закона", выглядит так что копипастили из ТЗ какой-то существующей реализации), я восстанавливаю что они попытались пробить себе доступ к СОРМ без судебных решений и были посланы.

Разработка способов блокировки, как и способов обхода этих самых блокировок, должно быть, очень технически сложные задачи

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

Те кто хотят решать нетривиальные задачи анализа протоколов и идеологически не против государственного надзора за гражданами - идут работать над СОРМ (который, судя по доносящимся новостям, Роскомнадзоровцев послал к чёрту). Там решается более сложная задача - по совокупности трафика понять, что именно человек делал, без права вмешательства.
(На всякий случай оговорка: я не говорю что фактическая перлюстрация трафика есть морально достойное занятие, я обсуждаю именно то, насколько технически интересные задачи при этом возникают.)

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

Ещё хуже что непонятно сочетание условия что есть только команда сложения (нет условных переходов, нет присваивания константы, нет call/ret, etc) и слов про "язык программирования".

Но поехали. Пусть у нас слова по 32 бита, и все команды сложения по одному слову (т.е. регистр команд IP при каждом сложении увеличивается на 1). Регистры обозначаем латинскими буквами и считаем что их сколько угодно, результат образуется в регистре по имени a.

1) Команда зануления. a := a + a x32.

2) Команда присваивания единицы.
a := 0
b := 0
b := IP
a := IP
# повторить 32 раза
a := a+b
b := b+b

3) Очевидно, аналогично можно присвоить регистру любую константу:
a := 0
b := 1
# пишем 42 = 00101010
b := b+b #0
a := a+b #1
b := b+b
b := b+b #0
a := a+b #1
b := b+b
b := b+b #0
a := a+b #1

(Важно заметить, что эта операция может быть дополнена инструкциями b := b+b и поэтому всегда может занимать ровно 0xa6 команд)

4а) Условные переходы. Пусть TP, FP и Ri - выделенные регистры, которые не используются никак иначе, и мы можем разместить команды по следующим адресам:
# 0x00000000
IP := IP + FP
# 0x80000000
R0 := 0x7fffff59 # вычисление использует R1
TP := TP + R0
IP := IP + TP

Тогда можно сделать команду перехода на инструкцию TP если a имеет значение 0x80000000 и FP если a имеет значение 0, JMP31 a:
b := <дополнение (адреса текущей инструкции+2)>
b := b+a
IP := IP+b

4б) Команда перехода на TP если a имеет 1 в n-ном младшем бите и FP если он имеет в нём значение 0, при условии что все биты младше - нулевые, JMPn: a := a+a x(31-n), JMP31 a

4в) Команда перехода на TP если a не 0, на FP иначе, JNZ a:
b := 0
b := b + FP
FP := L1
JMP0 a
L1: FP := L2
JMP1 a
...
JMP30 a
L31:FP := 0
FP := b + FP
JMP31 a

5) Аналогично, побитовое обращение b:
a := 0
c := 1

d := 0
d := d+b
FP := L1
TP := L2
JMP0 d
L1: a := a+c

TP := L3
JMP0 c
L2: e := 0xffffffff

d := d+e
L3:c := c+c
FP := L4
TP := L5
L4: a := a+c
L5: c := c+c
...

6) Вычитание, a := b - c:
d := ~c
e := 1
d := d + e
a := b + d

Умножение и деление дальше вроде довольно очевидны.

Бледно.

Об именах переменных: не используйте что-либо вне ASCII-набора, даже если среда это позволяет (потому что нынче она, к сожалению, иногда позволяет). Отладка путаницы между int cap и int сар согреет вашу пятую точку как мало что другое.

Обращайте внимание на предупреждение "name XXX hides outer variable". C++ позволяет дублирование имён во вложенных блоках:
int a = 2;
for(int b = 0; b < a; ) {
int a = 17;
//...
--a;
}

- но это почти никогда не идёт на пользу читаемости программы.

Если вы таки-используете глобальные переменные, называйте их уникальным образом, чтобы при чтении было очень хорошо видно, что вот здесь модифицируется глобальная переменная.
Аналогичный совет относится к статическим переменным в функциях/методах и данным-членам классов.

Разделяйте имена переменных и функций (скажем, одни с маленькой буквы, другие с большой), потому что в C++ они умеют конфликтовать.

Либо не используйте макросы вообще, либо давайте им визуально отличные от всего остального имена (обычное соглашение - ИСПОЛЬЗОВАТЬ_КАПС). Имя макроса может быть распознано в совершенно любом контексте и результат способен порождать очень озадачивающие сообщения компилятора.
(Да, старайтесь не включать windows.h по крайней мере в заголовочных файлах, эта падла определяет тонну макросов, иногда с очень неудачными именами.)

Называйте переменные и функции по тому, что они представляют, а не потому, как они реализованы:
bool IsLessThanMinusTen(int number) {return number <= -10;} // плохо
bool IsLethalHP(int hp) {return hp <= -10;} // лучше

Хотя имена могут быть слишком длинными, на современных мониторах "строка не влезает в экран" - отчётливый признак того, что вы делаете что-то кошмарно не то. Найдите в настройках среды визуализацию вертикальной линеечки и выставьте её на какую-нибудь разумную ширину. Есть люди которые рекомендуют 80, на мой вкус это бывает слишком коротко, я предпочитаю 120 (это удачно совпадает со строкой, которая не переносится в интерфейсе нашего gitlab при сравнении side-by-side).

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

1) Они не всегда круглые, автор этого комментария воочию видел квадратные.

2) Они в общем случае не обязаны иметь форму колодца под ними (основание крышки всё равно делается отдельно).

3) Насколько я понимаю, в основном "так исторически сложилось" - есть налаженный процесс изготовления крышек, который сейчас или когда-то в прошлом было проще наладить для условно круглых и нет причины эту форму менять. (Я бы ожидал что сейчас их отливают, что позволяет сделать любую простую форму со сравнимой лёгкостью.)

Впервые (нет) на арене: нумерую все рациональные числа. Беру рациональное число p/q, записываю p и q в восьмеричной системе счисления, объединяю через 8. Например: 355/113 -> 0543 / 0161 -> 5438161. Всё, все рациональные числа получили по натуральному номеру и ещё прорва натуральных номеров осталась.

Нет никакого фундаментального отличия "природы" от "системы", по крайней мере на уровне онлайн-казино. Кидает шарик в рулетку живой крупье или генерируется следующий член гаммы блочного шифра - с точки зрения игрока это гипотезы с одним и тем же распределением исходов. То что абстрактное казино что-то "знает" - совершенно неважно, если миры в которых оно "знает" и "не знает" эмпирически неотличимы.

Вся «удача» — это разница в информационных правах: казино знает всё, игрок не знает ничего.

"Удача" казино в том, что а) математическое ожидание выигрыша для игрока отрицательно (именно для этого на рулетке есть сектор "зеро", к примеру); б) у казино на порядки больше капитала (cf. "задача о разорении игрока"). Разницы между генератором в который можно подглядеть и гипотетическим идеальным генератором, равно непредсказуемым для всех сторон, в смысле этих двух факторов нет.

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

Уверен, что реальные казино используют более сложные генераторы, но суть не меняется: перед нами не случайность, а алгоритм, тщательно скрывающий свой порядок.

"Боле сложный генератор" может использовать источники истинной битовой энтропии (т.е. выдавать разные выходы в программно идентичных ситуациях).

Почти наверняка его реализация использует какой-нибудь современный блочный шифр, что делает

время и денежные ресурсы для того, чтобы определить выигрышную стратегию в игре

эффективным образом бесконечными: вы пытаетесь разработать стратегию взлома AES, и, спойлер, у вас это не получится.

Но проблема ли это?

идет игра, в игре есть два игрока: казино и пользователь

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

Математически, общая информация между поведением игрока и состоянием генератора равна нулю (потому что игрок не в состоянии установить состояние генератора), но и общая информация между поведением казино и состоянием генератора равна нулю (потому что у казино нет свободы поведения).

В теории игр это означает перевод игры из категории азартных, где есть элемент случайности, в категорию стратегических, где игра идет в соответствии с определёнными закономерностями

Это... очень базовый результат теории игр - что в детерминированных играх всё ещё могут быть оптимальны смешанные стратегии (т.е. оптимальная стратегия может включать действие "кинуть (свой собственный) кубик"). Обратно, даже если исходы игры есть лотереи, в VNM-предположениях нет фундаментальной разницы между лотереей с вероятностью некоторого исхода 1 и лотереей, у которой все исходы имеют вероятности <1.

(Отдельно, меня раздражает фраза "настоящая случайность": это понятие, в отличие от "вероятности при условии данных априорных гипотез", очень тяжело определить. Скажем, я сейчас взял две монетки и предлагаю вам угадать, орлом ли выпадет вторая. При этом первую я подбросил сразу, и если на ней выпал орёл - я уже подбросил вторую, а если решка - подброшу только после того как вы ответите. Является ли угадываемое вами значение при этом "по-настоящему случайным"?..)

Это франшиза (франчайз, кто как произносит), вполне стандартная штука. Её лучше видно для ресторанов (Rostic's / Il Patio это активно делали): сам считаешь аренду/найм/продукты/etc, ты получаешь известную вывеску в обмен на правила использования этой вывески. Для WB пространство собственных решений поуже, кажется в основном это про прикинуть отношение стоимости аренды к потоку через точку.

Так можно пронумеровать некоторые иррациональные числа (например: 2, √2, ³√2, ⁴√2, ...). Но у вас не получится составить последовательность, которая включила бы в себя все иррациональные числа (обычно доказывается через т.н. "диагональный аргумент" Кантора).

У меня довольно плохо с чувством "красиво" для таких рукомахательных объяснений, если что. Может получиться перегружено. Но, например:

Возьмём теперь точку (x₀, y₀) и проведём через неё прямую, её уравнение есть k(x-x₀) + (y-y₀) = 0 (исключим из рассмотрения вертикальные прямые).
Если x₀ и y₀ рациональны, то при любом иррациональном k это уравнение не имеет иных рациональных решений (рациональное решение (x₁, y₁) позволило бы записать k = -(y₁-y₀)/(x₁-x₀)) - прямая с таким наклоном не пересекает вообще никаких иных рациональных точек.
Если же x₀ (y₀) иррационально, то мы всегда можем провести вертикальную (соответственно горизонтальную) прямую через эту точку: x=x₀ (y=y₀), которая, очевидно, не имеет рациональных точек.
Если хочется провести именно "наклонную" прямую, то можно поступить хитрее: взять a=x₀+y₀, b=2x₀+y₀. Поскольку x₀ = b-a, y₀= 2a-b, то по крайней мере одно из a, b иррационально. Пусть, для примера, это будет a. Возьмём k = 1 (соответственно 2 для иррационального b). Имеем kx+y = a, во всех рациональных точках левая часть рациональна, тогда как правая иррациональна.

а значение c такое, что x и y одновременно не принимают рациональных значений в одной точке.

Неконструктивное описание. Получается: "если взять такие параметры, что прямая не проходит ни через одну рациональную точку, то она не проходит ни через одну рациональную точку". Что, э... верно, но не очень интересно (в частности, из такого определения не очевидно что c вообще существует).

Если в любой сколь угодно малой области будет бесконечное количество точек, плотность нельзя назвать бесконечной. Это недостаточное условие?

а) если это так, то у нас нет "точки в свободной области", потому что всякая область не является свободной от выбранных точек.
б) из условия " бесконечным количеством не совпадающих по своему положению точек однородно таким образом, чтобы у каждой точки координаты были рациональными " не следует что во всякой области будет бесконечно много точек, я привёл контрпример.

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

Ого. Сами додумались, или подсказал кто?

А по существу - люди взяли план урока от GPT и проверили его по своим методичкам, а не по живым детям. С учётом того, что к методичкам... есть вопросы (скажем, в них иногда фигурирует постулат что разделение детей на группы по способностям - Плохое Решение Которое Никогда Не Может Работать), ценность исследования условна.

Другими словами, на бесконечной числовой прямой все рациональные числа займут всего одну единицу длины.

Не больше единицы (отрезки могут перекрываться).

Заполним бесконечную плоскость бесконечным количеством не совпадающих по своему положению точек однородно таким образом, чтобы у каждой точки координаты были рациональными. Например, (1; 2), (1/3; 3/8) и т.д. Плоскость будет заполнена точками с бесконечной плотностью.

Нет, в общем случае не будет. Контрпример: набор точек вида (n, m). Он бесконечный, точки не совпадают, их координаты рациональны. "Плотность точек", однако, при любом разумном определении будет конечной.
Что значит "однородно" - не совсем понятно: обычно под однородностью имеется в виду что-то вроде "группа симметрий множества включает в себя все параллельные переносы", но для счётного множества точек на плоскости это недостижимо.

Поставим точку в свободной области и проведем через нее прямую вида y = kx + c, где k – иррациональное число. Данная прямая не коснется ни одну из заданных точек

Кто такая свободная область? Если множество точек таки всюду плотно, то свободных областей у меня нет.
Поставил точку с координатами (√2, √2+2). Провёл через неё прямую y = √2x + √2. Прямая прошла через точку ( -1, 0). Что я сделал не так?

Ну так задача о разборчивой невесте - это maximizer, а не satisficer: мы проигрываем и если берём кандидата номер 2, и если кандидата номер 2000.

А в модели "нас устроит любой кандидат из top-10%, и чем дольше мы ищем, тем больше упущенная прибыль", на глаз (точно не считал) влияет соотношение дисперсии и цены каждого дня поиска, даже при бесконечной очереди.

Потому что абсолютного времени нет.
Для землянина, время на корабле течёт медленнее.
Для капитана корабля, время на Земле течёт медленнее.
Если один из них - для простоты корабль, - развернётся и вернётся к начальной точке, симметрия нарушится: один из них ускорялся, а другой нет. Поэтому тогда "на самом деле" время текло медленнее для капитана корабля, и он будет моложе своего брата-близнеца (домоседа).

Всякая чушь типо "ты, крутой веб разработчик" от бесполезного до вредного.

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

Но самое полезное в промпте - передача информации о своих навыках, чтобы LLM не разжёвывала что такое CRTP или какие бывают численные методы решения дифуров.

Самое смешное, что можно попросить доработать персональный дополнительный промпт саму LLM.

1
23 ...

Информация

В рейтинге
4 025-й
Зарегистрирован
Активность