Size: a a a

Конкурсы Telegram

2020 February 17

Ⓙⓔⓚⓐ in Конкурсы Telegram
Überdoge
Функция взята отсюда, но я не заметил, чтобы Webogram взаимодействовал как-то с С++.
Я как раз с этим сталкивался в контесте. В лонге в апи было переполнение.
источник

Ü

Überdoge in Конкурсы Telegram
Guess Who
Конкретно там функция используется для обратной цели: преобразовать число со знаком в число без знака, чтобы затем записать в байты (наверное, потому что отрицательные числа не принимаются) и отправить по каналу. На там конце, видать, сервер спарсит эти байты как int.
...так как остальное отсечётся и останется только основное число.
источник

Ü

Überdoge in Конкурсы Telegram
Guess Who
Конкретно там функция используется для обратной цели: преобразовать число со знаком в число без знака, чтобы затем записать в байты (наверное, потому что отрицательные числа не принимаются) и отправить по каналу. На там конце, видать, сервер спарсит эти байты как int.
То есть отправляется специально число + максимальное значение uint, на сервере с помощью переполнения получается число без знака, а почему бы сразу не сделать перевод знака на стороне JS?
источник

Ⓙⓔⓚⓐ in Конкурсы Telegram
Там рэндомы, пофиг на знаки, речь о совместимости прост.
источник

GW

Guess Who in Конкурсы Telegram
Überdoge
То есть отправляется специально число + максимальное значение uint, на сервере с помощью переполнения получается число без знака, а почему бы сразу не сделать перевод знака на стороне JS?
Я думаю, что там нет переполнения, потому что число на входе отрицательное и меньше по модулю того специального числа. Я думаю, что число меньше по модулю, потому что в названии функции написано int. Я не знаю, почему сделано именно так, надо разбираться.
источник

Ü

Überdoge in Конкурсы Telegram
Ⓙⓔⓚⓐ
Я как раз с этим сталкивался в контесте. В лонге в апи было переполнение.
То есть если Вы отправляли число выше максимального или ниже минимального значения типа?
источник

GW

Guess Who in Конкурсы Telegram
@shemeldin Это число кладётся в Uint32Array, поэтому оно должно быть положительным: https://github.com/zhukov/webogram/blob/c5fc5107cad2a476a03d7ce8427f1def41c20568/app/js/lib/tl_utils.js#L355
Далее это не число, а набор байт. Этот набор байт можно проинтерпретировать как int (исходное число), а можно как uint (результат функции). Как сервер спарсит этот набор байт — его дело.
источник

Ⓙⓔⓚⓐ in Конкурсы Telegram
Überdoge
То есть если Вы отправляли число выше максимального или ниже минимального значения типа?
Выше, да. Там магия была в 50% случаев, кайфово было дебажить, math.random() же как раз в интервале, добавить к нему что то и все, рискуешь вылезти.
источник

Ⓙⓔⓚⓐ in Конкурсы Telegram
('1'+math.random()).split('.').join() - лонг
источник

Ⓙⓔⓚⓐ in Конкурсы Telegram
('5'+math.random()).split('.').join() - уже не лонг
источник

Ü

Überdoge in Конкурсы Telegram
@surgie, замечено, что переполнение работает нормально, а вот функция intToUint некорректно работает.
источник

Ü

Überdoge in Конкурсы Telegram
В последнем случае должно быть 1, 3, верно?
источник

GW

Guess Who in Конкурсы Telegram
Überdoge
В последнем случае должно быть 1, 3, верно?
Нет. Должно быть тоже самое, что при выполнении new Uint32Array([1, -3]);
источник

GW

Guess Who in Конкурсы Telegram
Там нет переполнения, всё в пределах диапазонов int/uint. Точнее есть переполнение с снизу, но не сверху.
источник

Ü

Überdoge in Конкурсы Telegram
Guess Who
Нет. Должно быть тоже самое, что при выполнении new Uint32Array([1, -3]);
И смысл тогда от этой функции?
источник

GW

Guess Who in Конкурсы Telegram
Uilt32Array автоматически преобразует int в uint, функция intToUint делает это вручную (правда я не понимаю, зачем).
источник

GW

Guess Who in Конкурсы Telegram
Überdoge
И смысл тогда от этой функции?
Возможно, это legacy
источник

Ü

Überdoge in Конкурсы Telegram
Guess Who
Uilt32Array автоматически преобразует int в uint, функция intToUint делает это вручную (правда я не понимаю, зачем).
Ага.
источник

e

engine-.- in Конкурсы Telegram
интересно, работы зальют сегодня на contest.com по JS второму этапу? в первом этапе было 115 сабмитов и залили на некст день, вчера он прошел, но списать можно на вск, выходной, к тому же 30 работ проще и быстрее залить)
источник

Д

Давид in Конкурсы Telegram
32
источник