Chat:Ru/2020-08-20

From CG community
Jump to navigation Jump to search

vrabosh: а в математики куча формул есть которые вродь как упращают чтото) нужно найти шпаргалку красивую и повешать на стену.

vrabosh: ты это знал?

a/b == n/i , a*i == b*n 

а я нет...

tutubalin: хотя бы диалог, а не монолог. это прогресс

BorisZ: это если b != 0 & i !=0, на этом куча разных фокусов - софизмов построено, когда доказывают что 2 * 2 == 5 вполне себе стройно

BorisZ: читал какие-то рассуждения чувака, что школа не учит предметам конкретным, а учит человека жить в обществе

BorisZ: любой предмет с вероятностью 90% в жизни не пригодится конкретному человеку

BorisZ: а пригодится умение жить в коллективе, дружить, ссориться, подчиняться и так далее

BorisZ: то есть могли бы алхимии с астрологией - получилось бы то же самое

BorisZ: *учить )

BorisZ: а то что понадобится - человек сам изучит когда нужда заставит

gybson_samara: vrabosh это вроде не формула, а простое уравнение =)

gybson_samara: из него же a = b*n/i :)

Uljahn: пропорция называется, не?

gybson_samara: простая алгебра, 6 класс

gybson_samara: не, похоже 8ой

gybson_samara: чет типа такого https://gdz.ru/class-8/algebra/mordkovich-uglublennyj-zadachnik/1-item-29/

tutubalin: перенос в другую часть уравнения. минус меняется на плюс, умножение на деление.

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

Uljahn: gybson_samara: 6-й класс https://school-assistant.ru/?predmet=matematika&theme=proporzii

gybson_samara: Uljahn это в шестом классе =)

mykeich: никогда не любил школу, да и вообще мне все не нравится:)

Uljahn: поворчать-то нравится:)

Uljahn: Automaton2000: что нам ещё остаётся, старичкам-то? :(

Automaton2000: да потому что ты не в теме

Default avatar.png gtj: http://chat.codingame.com/pastebin/12ab8731-13ce-4680-a626-8633fa005737

Default avatar.png gtj: прикиньте

Default avatar.png gtj: оно не печатает

Default avatar.png gtj: я и 21 попробовал и 2е попробовал

Default avatar.png gtj: я даже не знаю что еще пробовать причем в дебагере оно торчит

tutubalin: прерываниями уже мало кто пользуется. раз под винду пишешь, можешь использовать Window API.

tutubalin: я по молодости MessageBox из асма запускал. потом бросил это баловство

Default avatar.png gtj: так не интересно всю жизнь писал на прерываниях

tutubalin: вот это тебя, видимо, и доканало )

Default avatar.png gtj: кароче прикинь в памяти есть но не печатает

735487: переходи под дос. там до сих пор прерывания ))

Default avatar.png gtj: просто предлагает любую клавишу нажать

Default avatar.png gtj: я тут посмотрел во что все превратилось под виндой в вики

tutubalin: лучше давай я тебя научу как задачки твои решать

Default avatar.png gtj: это не то что было 10 лет назад

tutubalin: ну да. если человек остановился в развитии, это не значит, что и мир остановился

Default avatar.png gtj: одни пуши калы ни одной команды ассемблера как на балалайке играем прям(

Default avatar.png gtj: нет екшона

tutubalin: вот твоя задачка про фибоаччи: https://euler.jakumo.org/problems/view/25.html

tutubalin: решаем на калькуляторе

tutubalin: нам нужно число, у которого 1000 цифр. это значит, что десятичный логарифм этого числа больше или равен 1000, но меньше 1001

Default avatar.png gtj: просто ты понимаешь что такое когда в асемблере под виндой принт печатает строку?

tutubalin: 1000 <= lg x < 1001

Default avatar.png gtj: да вкурсе

tutubalin: число фибоначчи можно найти по формуле Бине

Default avatar.png gtj: прикольно мы живем доков нет у нас 86 90 годов документация боле менее внятная документация у насма

Default avatar.png gtj: обожаю

tutubalin: нам не нужна супер точность, поэтому второе слагаемое можно убрать. получаем примерную формулу F(N ) = (ϕ^N)/C

tutubalin: где ϕ - золотое сечение, а C - корень из 5

tutubalin: берём десятичный логарифм. lg(F(N)) = lg((ϕ^N)/C) = lg(ϕ)*N - lg C

tutubalin: здесь мы используем формулы, что при логарифмировании возведение в степень заменяется на умножение, а деления - на вычитание

Default avatar.png gtj: я ее давно решал уже

tutubalin: получаем неравенство: lg(ϕ)*N - lg C >= 1000

tutubalin: переносим lg C в правую часть: lg(ϕ)*N >= 1000 + lg C

Default avatar.png gtj: http://chat.codingame.com/pastebin/0fc454d9-3281-4a15-a0ca-85b39f5da35d

Default avatar.png gtj: ну какой принт вы чо смеетесь чтоль

tutubalin: переносим lg(ϕ) в правую часть: N >= (1000 + lg C) / lg(ϕ)

Default avatar.png gtj: ты не правильно сайт ейлера понял

tutubalin: теперь достаём калькулятор и считаем

Default avatar.png gtj: надо просто прогу написать

tutubalin: зачем писать прогу, если это решается на калькуляторе?

Default avatar.png gtj: пишешь прогу которая решает ту задачу которую ты открыл

Default avatar.png gtj: ну потомучто задачи по нарастающей идут

Default avatar.png gtj: щас я еще помучаюсь с выводом если ниче не найду буду в две строки вывод делать тогда на асме но хз это не канон

Default avatar.png gtj: канон когда 20 строк для 1 строки

tutubalin: ок, вот тебе прога: console.log(Math.ceil((1000+Math.log10(5)/2)/Math.log10((1+Math.sqrt(5))/2)))

tutubalin: посчитаем быстрее, чем любая твоя прога на асме

Default avatar.png gtj: акстись на асме ку редактор весит килобайты)

vrabosh: а у меня код на питоне байты:)

Default avatar.png gtj: так тот редактор делает все что надо для прогера там тебе и хекс и зреномекс и все что надо есть

tutubalin: если ты не знаешь математику и алгоритмы, асм тебе не поможет

tutubalin: у нас на первом курсе было суеверие, что чтобы оптимизировать программу, её надо написать на асме. с опытом это проходит.

vrabosh: gtj , webasm попробуй, будешь в браузере крутые штуки рисовать. показывать нам..

vrabosh: чтоб оптимизировать программу надо знать математику)

Default avatar.png gtj: не ну вообщето она работает

Default avatar.png gtj: в дебаге в памяти есть

Default avatar.png gtj: вэбасм что?

Default avatar.png gtj: кинь исходники откуда ты взял это

tutubalin: gtj понятное дело, что в памяти строка есть, если ты через db её добавил. ты можешь вообще весь код удалить и db оставить, и строчка в памяти будет

Uljahn: webasm - он же wasm - преемник asm.js, на wasm много крутых штук уже сделано (и можно легко сделать - в wasm можно компилить из плюсов и раста), он специально заточен под производительные вычисления в браузере

Uljahn: https://github.com/iodide-project/pyodide/ - питон с либами в браузере, например

Default avatar.png gtj: не ну про васм слышал

Default avatar.png gtj: я щас читаю как разлок сделать

Default avatar.png gtj: не будет

Default avatar.png gtj: ее добавлять надо в опр регистр

Default avatar.png gtj: это же машина состояний

Default avatar.png gtj: я наверно каретку какуюнибудь забыл

Default avatar.png gtj: просто ребят на асме можно паралелить и через ++ в атом пихать

Default avatar.png gtj: атом будет паралелить

Default avatar.png gtj: а атомы в таск можно засунуть

Uljahn: gtj: тебя уже предупреждали, чтобы не флудил? приучайся писать развёрнутые сообщения, а не отрывки, ты не в чате линейки

Default avatar.png gtj: кк вот видимо но тут про иа https://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.html

mykeich: очуметь, в питоне нет констант

Uljahn: в питоне и переменных нет

Uljahn: есть объекты и имена, которые привязаны к ним в пределах области видимости, или типа того

mykeich: какой странный контраст с java где пишешь тучу кода, лиж бы не дать доступ к данным объекта, а тут бери ломай все что хочешь

Uljahn: читал такое выражение, что питон - для взрослых людей, которые понимают, что делают)

mykeich: ну не знаю... наверное у тех кто в продуктиве на питоне пишет в команде полно историй на тему поиска бага из-за того что кто то что то где то в рантаме меняет объект

mykeich: как си искать место где вышел за придела массива и пытаешься понять почему у тебя мусор в переменных:)

vrabosh: mykeich , а что ломать, тыже не самовредитель же)

BorisZ: есть условно приватные поля - начинаются с __

Default avatar.png gtj: нашел интерапты и тут все по другому не то чему меня учили:disappointed: простите что вмешался)

Default avatar.png gtj: тоесть я могу спалить по незнанке свой комп

Default avatar.png gtj: надо найти юзерспейс интерапты

Uljahn: а что плохого в изменении объекта в рантайме? есть даже такой приём - monkey patching, иногда может применяться, а то, что между членами команды не налажено взаимодействие и следование гайдлайнам - это проблема команды, а не языка

Uljahn: то же самое с eval(), exec() и compile() - сами по себе команды не плохие и не хорошие, но применение не к месту может повлечь неприятные последствия

Uljahn: а где-то могут сэкономить кучу времени

wlesavo: хехе, обошел юркова, не велика заслуга конечно в офлайне то, но все таки, с этого рана должен в 10ку долезть

Uljahn: gtj: зачем тебе прерывания? не лучше ли с кэшами разбираться? толку от твоих супербыстрых программ, если они 90% времени ждут, когда придут данные

Default avatar.png gtj: с кешем опасно тут знать надо наверняка там милион своих прерываний и к кешу и к памяти напрямую и прочее

tutubalin: Uljahn ну всё-таки полезно, когда помимо человека, который по сути просто нейронка, есть ещё беспристрастный строгий компилятор. а если его не хватает, то ещё и линтер в придачу.

tutubalin: gtj прерывание к кэшу? чтааа?

Uljahn: https://habr.com/ru/company/vdsina/blog/515660/ хорошая статья про кэши, как раз читаю

Uljahn: он наверное про такты

gybson_samara: может про кэш процессора речть

tutubalin: дооптимизировался до 3% в Optimization. 100 очков не хватает до квеста.

Default avatar.png gtj: щас я тебе скину погоди тут специальный раздел про прерывания

Default avatar.png gtj: но я подозреваю это микрокод

Default avatar.png gtj: тоесть асм но другого уровня

Default avatar.png gtj: https://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-system-programming-manual-325384.html

Default avatar.png gtj: тут почти весь спич про прерывания

Default avatar.png gtj: да прерывания к кешу есть и к дд3

tutubalin: то, что они есть, не означает, что ты обязан ими пользоваться

tutubalin: просто разберись, как работает кэш. почему важно, чтобы твой код влезал в кэш, и какой буст производительности это даёт

Default avatar.png gtj: мой вердикт(

Default avatar.png gtj: все работает кароче но будет строка в памяти потомучто я забыл чото

Default avatar.png gtj: вот отладил так же работает

Default avatar.png gtj: http://chat.codingame.com/pastebin/20e45715-d33d-48c1-936e-5ef740518d83

Default avatar.png gtj: тоесть это 16 тасм

Default avatar.png gtj: я его кинул в масм32 и отладил

Default avatar.png gtj: и что пиши ему в 32 что в 16 петрушка одинаковая

Uljahn: вопрос-то в чём? в гугле искал? на специализированных форумах спрашивал?

Uljahn: сходи на https://wasm.in/

Uljahn: там анекдоты прикольные https://wasm.in/threads/anekdot.32247/ :smiley:

tutubalin: ух-ты! он ещё существует!

tutubalin: помню, прям выкачивал телепортом статейки оттуда

tutubalin: сейчас, похоже, только форум остался?

tutubalin: помню, там была отличная дискуссия про то, как присвоить ноль в eax. типа, xor eax, eax - это слишком банально. и каких там только вариантов не было! в том числе искать в таблице системных вызовов, пока не наткнёмся на null

Default avatar.png gtj: http://chat.codingame.com/pastebin/15bb3eda-072f-4bc6-8a8a-f8f6f7b9adf0

Default avatar.png gtj: не хочу сишню в асемблере в 2020

gybson_samara: Uljahn в пазле бинарная сеть, в чем фишка может быть, что половина тестов проходит, а другая нет?

Uljahn: там в порядке обновления весов можно запутаться

mykeich: https://www.codingame.com/ide/puzzle/target-firing это точно простой пазл? На питоне скорости не хватает перебирать все варианты. А сортировкой чет не удается найти сочетание параметров

Uljahn: в комментах пишут, что скорее средний

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

tutubalin: а жадный алгоритм не годится?

wlesavo: по любому не нужен перебор, нужен простой жадный алгоритм какой-то и все

input.txt: перебор при n=50 так и так не сделать

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

wlesavo: там названия тесткейсов какбы намекают даже

input.txt: похоже на динамику по количеству ходов

tutubalin: DP - это уже не easy

gsomix: Деды с ассемблером захватили чат. :)

Default avatar.png gtj: асамблер)

tutubalin: проверил - жадным решается

Default avatar.png gtj: блин ну придется либо такой фигней заниматься с библиотеками и псевдо асемблером либо ставить виртуалку ради линукса(

tutubalin: gtj убедительная просьба уважать других участников сообщества и не использовать чат в качестве личного дневника

YurkovAS: wlesavo тоже ушел в офлайн, добавил 7 тестов

wlesavo: YurkovAS хорош, я ушел, оставил считаться по 20 минут на тест, вечером думаю уже буду менять что-то

wlesavo: а есть гайд нормальный по внешним клиентам, чет не понимаю че куда писать из faq'а

Uljahn: на форуме темы попадаются

wlesavo: ща поищу

Uljahn: https://forum.codingame.com/t/feature-update-chat-rework/1556/20?u=uljahn

Uljahn: wlesavo

Uljahn: там ещё дальше по теме есть скрины

wlesavo: да, увидел уже в вопросике тож

Uljahn: я смог 4 клиента настроить: psi+, pidgin, gajim и miranda

Uljahn: возможна проблема с загрузкой списка каналов - подгружает тысячи сгенерированных каналов для клэшей, её лучше не запускать, а заходить сразу на конкретный канал

wlesavo: а с мобильными клиентами можешь посоветовать что-то?

Uljahn: мэд и ещё кто-то вроде с мобильного клиента (типа pidgin) сидели какое-то время, но я ничего не нашёл на андроид

Uljahn: там ещё трафик улетает гигами, нужен анлим

wlesavo: горячая битва за топ 10 сейчас начнется в sg, раз уж юрков ушел в офлайн видимо придется илледана выбивать или даже кови :slight_smile:

YurkovAS: ну немного поулучшаю - оффлайн версию. точнее там 2 в одном, через переключалки пока сделано. алгоритм тот же МС, только таймауты и параметры разные.

tutubalin: я какой-то мобильный клиент ставил, но так и не понял, как залогиниться и плюнул

wlesavo: ну я поставил штук 5-6, ни в одном не смог залогиниться и плюнул

tutubalin: придётся свой писать!

wlesavo: YurkovAS ну я сильно упарываться не хочу тоже, но попробую немного рандомных отключений добавить, и чего-т в этом духе. может попробую воспроизвести то что вестиклс делал +-

wlesavo: вот его pm 8ми летней давности

wlesavo: http://chat.codingame.com/pastebin/14e6d306-4cb6-4fb1-ae1d-2cd4284c6814

wlesavo: но там есть сложноватые места, думаю таки чето попроще оставить

Default avatar.png gtj: https://play.google.com/store/apps/details?id=org.yaxim.androidclient&hl=ru

Default avatar.png gtj: https://play.google.com/store/search?q=xmpp%20jabber&c=apps&hl=ru

Uljahn: у тебя работает? какие настройки ставить?

Dmitry_Mandzyuk: всем привет

Dmitry_Mandzyuk: jiki: привет, ты здесь?

mykeich: У меня на телефоне xabber работает. минус только жрет инет активно

mykeich: Из https://www.codingame.com/faq логин взять может быть не очивидно

Uljahn: mykeich: сервер chat.codingame.com?

Uljahn: порт 5222?

mykeich: да

Default avatar.png gtj: Dmitry_Mandzyuk +

Uljahn: econnrefused, через другой вайфай попробую попозже

Default avatar.png gtj: пишу бфс на асемблере)

mykeich: MCTS напиши:)

Default avatar.png gtj: когда разберусь возьмусь

Default avatar.png gtj: до мктс не дошел еще

wlesavo: https://imgur.com/dACQ2cX

wlesavo: видимо в новых версиях уже нету, разве только на 4pda взять старую

Uljahn: mykeich: скинь версию клиента, плз

Uljahn: такое ощущение, что всех согнали в вайбер, ватсап и телегу, выпилив альтернативы

Uljahn: а, дискорд ещё есть

mykeich: 2.6.6.645

mykeich: Это наверное под iOS выпилили

Uljahn: даже в аську привязку к номеру телефона внедрили

wlesavo: в сторе 3.02 уже версия

wlesavo: мож я не то качал

mykeich: так и есть, там beta приписка, старая версия не доступна чтоль

Uljahn: на 4pda есть, качаю

mykeich: поставьте им минус и скачайте другой клиент:)

Uljahn: и что нажимать в самом начале? "вход" или "регистрация"?

mykeich: Во времена irc никто не ныл что протокол плохой, а тут более современный xmpp оказывается проблемный. странно

Uljahn: у меня 10-й андроид, может из-за этого не коннектит

mykeich: добавить учетную запись наверное

mykeich: у меня тоже 10 арнольд:)

Uljahn: ввожу в новую учётку имя: номер_из_faq@chat.codingame.com и пароль от акка с CG...

mykeich: и что пишет или показывет?

Uljahn: Ошибка подключения и портянка на весь экран

tutubalin: может быть у кого-то ещё на CG пароль 12345678?

Uljahn: the following adress failed: 'chat.codingame.com:5222' ... unable to resolve host

mykeich: я на днях потратил под дня чтоб гугл перестал ругаться на плохие пароли и для всего сгенерил случайные пароли и зашел на каждый сервер из списка. некоторые сайты оказалось давно умерли

Uljahn: может порты на рабочем вайфае заблочены, дома попробую ещё...

mykeich: chat.codingame.com [52.203.27.118] он не пингуется но DNS возвращает ip

Default avatar.png gtj: 3928632@chat.codingame.com

Default avatar.png gtj: Your CodinGame password MUC Server conference.codingame.com

Default avatar.png gtj: Login 3928632@chat.codingame.com

mykeich: Uljahn да, скорей всего сервер другой, после настройки я его не вижу, но вроде я тоже на этом попадался conference.codingame.com

Default avatar.png gtj: http://chat.codingame.com/pastebin/bd98262d-7a6b-417d-bdd8-4d6f48dbf274

mykeich: gtj пароль еще нам скинь, мы будем проверять

Default avatar.png gtj: там свой пароль подставить надо

Default avatar.png gtj: вот написано же что писать

mykeich: gtj реально не могу решить https://www.codingame.com/ide/puzzle/target-firing Поможешь?:)

Uljahn: 75% набрал, надо думать, как сортировать

Uljahn: с интегральными суммами что-то мутить

Default avatar.png gtj: я ее не видел ниразу

mykeich: она уровня easy ничего сложного

Default avatar.png gtj: у меня тут ламповые посиделки

mykeich: вот tutubalin решил, наверное пока обедал в телефоне накидал решение:)

Default avatar.png gtj: https://youtu.be/KplTjtDQx90?list=PLtz4hzJDq7ZzJYNJVX6NghM5bIKFBs-ud

Default avatar.png gtj: прос++ уже забыл

Default avatar.png gtj: щас не смогу переключится)

tutubalin: gtj кстати правильно подметил - вместо chat.codingame.com надо conference.blablabla

735487: Uljahn: the following adress failed: 'chat.codingame.com:5222' ... unable to resolve host, возможно порт не надо. можетон его как часть адреса пробует резолвить

tutubalin: Uljahn mykeich я там выше идею озвучивал. опасность корабля равна damage/ttk, где ttk - сколько ходов надо, чтобы его убить

Uljahn: а, я пропустил это

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

tutubalin: задача о рюкзаке по сути

735487: как в ММО одни танкуют другие дамажат ))

mykeich: tutubalin так работает, не люблю пазлы где надо что то подбирать

Uljahn: видимо, у меня баг в расчёте ttk :/

mykeich: округлять пробовал?

Uljahn: ceil заюзал

mykeich: Тогда баг

wlesavo: хех, изи топ10 :smiley:

mykeich: wlesavo в чем?

wlesavo: всего-то 4 часа стояло считало

wlesavo: в sg

wlesavo: samegame

wlesavo: чтобы тысячу очков апнуть 4 часа счета, так себе прогресс конечно, надо ща поковыряться нормально уже

735487: что то мне не нравится тенденция ухода в оффлайн уже в который раз

tutubalin: зато от языка меньше зависимости

735487: от языка меньше а от количества арендованных датацентров больше :)))

Uljahn: в NS можно руками было набить норм)

tutubalin: ну тогда это хобби по затратности сравнится с гольфом (настоящим)

tutubalin: Uljahn не руками, а используя нейронные сети на основе углерода!

tutubalin: Uljahn вместо ceil попробуй целочисленное деление

Uljahn: пробовал, то же самое получается - 5 и 7 тесты фейлит

mykeich: у меня они тоже самые проблемные

Uljahn: целочисленное даёт доп. ход, когда hp кратно урону

Uljahn: или даёт 0, когда урон больше hp, хз как корректировать, всякие единички прибавлял, 0.5 вычитал из hp, max(1, ...) юзал :upside_down:

input.txt: (hp + damage - 1) / damage

input.txt: целочисленное деление конечно

Uljahn: хм, то же самое, 5 и 7 не проходит... может, бага в другом месте...

wlesavo: amurushkin мне наоборот нравится что можо разойтись и попробовать разное в оффлайне, NS этим запил прямо

735487: Uljahn: а делить нацело + 1 если остаток есть?

735487: wlesavo: я может не прав но мне кажется это приведет к тому что в лидерборде в топе будут те кто первей сможет найти лучшее решение за счет больших мощностей

735487: и никто уже не сможет обогнать. как в гольфе

tutubalin: Uljahn если соотношение урона к живучести равное, то надо сперва валить того, кто менее живуч

tutubalin: а, хотя не... одинаково получается

735487: а вы считаете сколько вам дамага наносят? надо же еще наверное учитывать и сколько ты наносишь

735487: надо наверное тоже пазл этот что ли попробовать

tutubalin: свой дамаг учитывается в ttk

Uljahn: wlesavo: обе версии xabber'а через домашний вайфай подключились

Uljahn: только в новой версии нельзя конференцию добавить, а в старой можно :/

Uljahn: логи подгружаются, а сообщения не отправляются, ужс

Uljahn: test

Uljahn: а, надо было ник ввести правильный

Uljahn: mykeich: как победил 5 и 7?

Pyhesty: что такое CLASH OF CODE?

Uljahn: 15-минутные задачки

Uljahn: в трёх разных режимах

Pyhesty: а откуда они берутся? кто их пишет? или из какого-то пула?

Uljahn: да, из пула. пишут пользователи

Pyhesty: спасибо

Pyhesty: а есть задачи на русском языке? или все на одном языке?

Pyhesty: у меня ребенок хочет тут покодить, но ему 12 лет... желания много, а с инглишем он не очень

Uljahn: stepik не пробовали смотреть?

Uljahn: https://welcome.stepik.org/ru

tutubalin: Pyhesty заодно и инглиш подтянет!

Pyhesty: он доэтого на acmp.ru кодил, но там скучно и не так ярко...

Pyhesty: спасибо за ссылку на обучение =) может заинтересуется) всегда полезно)

Uljahn: там и задачки есть, правда на питоне

tutubalin: Pyhesty или можно автоперевод в браузере включить

Uljahn: лучше уж сразу инглиш учить

735487: в любом случае если кодить то инглиш будет нужен

wlesavo: amurushkin в NP проблемах всетаки просто больших мощностей недостаточно, и до оптимального решения так просто не доберешься, на js-games люди с этим тестсетом годами бились, и даже там почти нет одинаковых скоров у людей

wlesavo: Uljahn ну у меня тоже подключались, просто не мог конференцию добавить потому что их открутили в новой версии

Uljahn: я качал с 4pda версию, которую mykeich указал

Uljahn: кое-как запинал пазл :sweat_smile:

Uljahn: а его, смотрю, в медиум уже перенесли

gsomix: Что за паззл?

Uljahn: да этот, с PEWPEW

Uljahn: https://www.codingame.com/training/medium/target-firing

Pyhesty: в некоторых контестах есть ограничение по времени, а разве все языки одинаковые по производитьности? или накидываю коэффициент?

Uljahn: ограничения одинаковые для всех языков

Uljahn: если хочешь в топы и в ботах, и в клэшах - придётся учить разные языки

Uljahn: во многих bot programming мультиплеерах важна производительность, т.е. очевиден выбор компилируемых языков типа c\c++\rust\D, в клэшах часто попадаются режимы кратчайшего кода (codegolf) - тут выбор в пользу ruby, bash, python, perl

Uljahn: в среднем можно неплохо выступать на одном питоне

Pyhesty: да ну... кратчайший код... дичь жеж...

Pyhesty: еспд тихо плачет в сторонке...

Uljahn: главное - не принимать близко к сердцу, тут сайт развлекательно-образовательный

Pyhesty: =)))

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

Uljahn: когда там лучший результат раз в 10 короче твоего решения, возникает вопрос "Как?" А потом уже трудно остановиться :)

wlesavo: такс, пойду ваши кораблики посмотрю пока считается

wlesavo: чет изи сортировкой по damage/time

wlesavo: как обычно у всех решения одинаковые

gsomix: А вы публикуете свои решения паззлов? Или забиваете? :)

Uljahn: у меня там 5 и 7 тесты фейлились, потому что имена перепутал, надо осторожнее с областями видимости

Uljahn: gsomix: когда не очень похоже на остальные, то публикую

BorisZ: я публикую всегда, пусть смеются

BorisZ: хотя по уму надо бы тратить немного времени чтобы причесать

BorisZ: опять таки если код станет понятнее - еще больше народу его прочитает и будет смеяться )

gsomix: На популярные задачи там столько решений (даже на непопулярных языках), что вряд ли кто-то будет их все смотреть. :)

BorisZ: согласен, не самый принципиальный вопрос

wlesavo: я иногда заглядываю чтобы убедиться что все примерно одинаково нарешали

BorisZ: если задача простая то у всех примерно одно и то же, если сложная - замучаешься разбираться, тем более сам уже решил только что

tutubalin: там часто самые заплюсованные решения - какие-нибудь недогольфы

tutubalin: когда читабельности уже нет, а до максимальной краткости ещё пилить и пилить

tutubalin: но почему-то люди тащаться от однострочников

Default avatar.png ZloyLosyash: а куда тыкать, чтобы открыть список всех решенных тобой пазлов?

Default avatar.png gtj: выйди в раздел сайта где идут перечисления сложностей изи, медиум хард(PRACTICE кнопка=раздел сайта), под каждой группой есть серое слово VIEW ALL

Default avatar.png gtj: чтобы посмотреть галочки на решенных задачах потом надо промотать в самый низ

Dmitry_Mandzyuk: ребята, подскажите, алгоритм, есть осциллограф, он читает массив данных, потом программа отрисовывает это, проблема в том, что пока прога рисует, осц простаивает, соответственно синусоида сети кусками рисуется

Uljahn: тебе надо читать и рисовать? ring buffer, может, заюзать?

Dmitry_Mandzyuk: что за ринг буфер?

Dmitry_Mandzyuk: то есть типа кольцевой, но как это понимать?

Dmitry_Mandzyuk: у меня эт массив

Dmitry_Mandzyuk: из 4096 элементов

Uljahn: массив заполнился и отрисовка начинается? кусок синусоиды выводится и снова к чтению переходит?

Uljahn: а если два массива использовать по очереди или на два потока разбить?

Dmitry_Mandzyuk: да

Dmitry_Mandzyuk: графический движок у меня не дружит с потоками

Dmitry_Mandzyuk: а что за идея с двумя массивами?

Uljahn: в один пишем, из другого рисуем, потом меняемся

Default avatar.png gtj: очищай просто буфер

Default avatar.png gtj: как сессия в браузере

Default avatar.png gtj: там тоже 5096

Default avatar.png gtj: тоже 4096

Dmitry_Mandzyuk: ну так он очищается

Dmitry_Mandzyuk: просто рисование не в отдельном потоке

Default avatar.png gtj: а ты каким пользуешься?

Dmitry_Mandzyuk: каким чем?

Default avatar.png gtj: strinstream?

Default avatar.png gtj: пошли сюда #Work

Dmitry_Mandzyuk: буфер обычный динамический двумерный массив

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

Dmitry_Mandzyuk: а если программа не успевает за осциллографом?

Dmitry_Mandzyuk: у меня просто не обычный, а юсб, а отрисовка на экране компа

Pyhesty: если программа не успела за осциллографом - то пропускает точки, старые данные никому не нужны

Pyhesty: посмотри как реальный осцилл работает

Default avatar.png gtj: тогда надо установить временные рамки сессии замера забуферизировать

Default avatar.png gtj: не выводить пока буферизует

Default avatar.png gtj: и когда забуферизовал выводить

Default avatar.png gtj: снимок временной

Default avatar.png gtj: например 5 милисикунд задержка

Default avatar.png gtj: вывел

Pyhesty: у тебя есть входной поток стрим, ты знаешь частоту дискретизации, разворачиваешь по ОХ, выводишь точки из стрима - стрим может быть хоть юсб, хоть уарт, хоть езернет... как будут появляться данные выводишь их по ОХ

Dmitry_Mandzyuk: то что она пропускает точки я знаю, мне надо этого пропускания избежать

Dmitry_Mandzyuk: ну хорошо, появляются вывожу, но пока он читает, я все вижу, пока вывожу он не читает и как раз тогда пропускает

Default avatar.png gtj: ага

Default avatar.png gtj: тогда файлик

Pyhesty: если у тебя частота дискретизации 100кГц, ты получаешь 100 000 точек в секунду из стрима, если данные где-то потеряются, хотя бы один отсчет, этот осциллограф никому не нужен и в утиль... либо у тебя в потоке данных отсчет и временная метка

Default avatar.png gtj: пишешь в файл блок например 10 секунд когда блок считался выводишь и удаляешь с начала файла

Dmitry_Mandzyuk: максимальная частота дискретизации 250МГц на четыре канала

Default avatar.png gtj: конвеер надо

Dmitry_Mandzyuk: что за конвеер?

Default avatar.png gtj: который пока ты выводишь символ который ты вывел удаляет

Pyhesty: одним потоком принимай по USB и переклыдывай в стрим, другим потоком читай из этого стрима

Pyhesty: и приоритет у потока который ожидает по USB максимум

Default avatar.png gtj: считал символ вывел удалил из файла этот символ

Default avatar.png gtj: в файле будет конвеер символов

Dmitry_Mandzyuk: а стрим это ж ведь поток

Pyhesty: stream да поток, и thread то же как быпоток

Default avatar.png gtj: командная строка не успеет в конечном итоге за осцилографом

Pyhesty: а процесс, блин оговорился, одним процессом читай и перекладывай в поток, вторым процессом вычитывай

Pyhesty: а вообще 500МБайт в секунду перелопатить процессором довольно запаристо... думай как использовать что-то типа DMA

Dmitry_Mandzyuk: так, это значит надо замутить что-то типа непрерывного чтения, а отдельно это все рисовать

Default avatar.png gtj: http://chat.codingame.com/pastebin/abcdfeed-f5da-434e-a419-0ee69d7e8a06

Pyhesty: и что за проц?

Default avatar.png gtj: да надо либо посимвольно либо задержку делать чтобы у тебя не было большой нагрузки

Default avatar.png gtj: ты просто ответ будет получать не моментально

Dmitry_Mandzyuk: в моем случае i7-4700HQ

Pyhesty: по моему опыту 500МБайт протащить через ядро побайтно - это гемор, нужно искать другой способ DMA или укрупнять до 64-128 бит

Default avatar.png gtj: так мобжно не побайтно а блоком по строке и удалять строку

Default avatar.png gtj: просто толкать строки

Pyhesty: читай описание API или драйвера под твоё USB устройство, что бы оно сразу клало в память минуя проц

Dmitry_Mandzyuk: хм, инструкция которая есть только функции описывает и то очень скупо

Pyhesty: а USB чип какой fx3?

Pyhesty: на осцилле?

Default avatar.png gtj: 250 мегагерц на проц ой не знаю на юсб тем более)

Pyhesty: 250Мбайт - это USB3.0 валит видимо... если 16бит на отсчет то как бы 500Мбайт...

Default avatar.png gtj: в конечном счете консоль не позволит таких скоростей и будет баг

Default avatar.png gtj: она просто не успеет

Default avatar.png gtj: консоль ограничивает поток

Default avatar.png gtj: я сканирую весь жесткий диск на 1 скорости с консолью 10 20 секунд

Default avatar.png gtj: без консоли 3 секунды

Pyhesty: если по гамбургскому счету, то USB шляпа для таких задач, если в потоке нет синхронизирующих импульсов, то потеря пакета приведёт к сбою... можно схитрить и сказать, что у тебя выборка не более 1Мсемпла и тогда выделяешь буфера по 1Мбайту, захватываешь из USB и отдельно анализируешь этот буфер на остальные забиваешь...

Dmitry_Mandzyuk: что за гамбургский счет?

Default avatar.png gtj: да можно проще если ты в бесконечности хочешь смотреть результат в консоле

Dmitry_Mandzyuk: например?

Default avatar.png gtj: сам факт присутсвия консоли в вывод это ограничение

Default avatar.png gtj: это факт

Dmitry_Mandzyuk: ну вообще оно без консоли

Default avatar.png gtj: вывод в консоль ограничивает потоки

Dmitry_Mandzyuk: уже в dll оно в вектор загоняет

Pyhesty: что за гамбургский счет? ну типа по чесноку, короче тебе нужно посмотреть как работают реальные осциллогарфы, они не анализируют весь поток а работают окном

Default avatar.png gtj: ядро ограничивает консолью поток

Default avatar.png gtj: тебе надо писать в файл считывать строку и удалять строку которую считал тогда ты в бесконечности получишь не растущий файл

Dmitry_Mandzyuk: ну я видел реальные осциллографы, но внутрь не залазил и то что они не запоминают это я в курсе

Default avatar.png gtj: потомучто вывод на екран осцилографа еще сильнее сделает задержку

Default avatar.png gtj: а

Default avatar.png gtj: в память

Default avatar.png gtj: а винда наоборот делает

Pyhesty: он записывает в быстрый кэш который может захватыавть хоть на 10Ггерцах, но кэш обычно маленький (у крутых даже 4096 семпла текрониксах), так же и ты главное что бы захваченное окно было непрерывным и обрабатывай его а потом выводи, остальные пропускай

Default avatar.png gtj: теперь я знаю как горят конденсаторы)

Pyhesty: при необходимости проводить обработку данных типа пикдетектора, фильтрации, fft и тп...но всю обработку только по небольшому (до мегасемпла) окне

Dmitry_Mandzyuk: мегасемпл это сколько элементов массива?

Default avatar.png gtj: тоесть ты хочешь без буферизации сделать

Pyhesty: что делать с низкачастотными сигналами (герцами) я хз, тк на аппаратном уровне должно быть суммирование семплов или прореживание по идее

Default avatar.png gtj: так хорошо звучит а консоль то

Default avatar.png gtj: ядро порежет консоль

Pyhesty: да нет консоли, есть только отображение на виртуальном осциллографе

Default avatar.png gtj: а если порежет вывод в консоль поток порежется изза скорости вывода в консоль

Default avatar.png gtj: он смотреть в консоле хочет ответ в реальном времени

Dmitry_Mandzyuk: да не в консоли я хочу смотреть

Pyhesty: ответ чего? это же не игра... это прикладная я так понял задача

Default avatar.png gtj: а где?

Dmitry_Mandzyuk: отрисовывать хочу

Default avatar.png gtj: ааа

Default avatar.png gtj: я тупанул

Default avatar.png gtj: :sweat_smile:

Dmitry_Mandzyuk: просто сейчас такая ерунда, что пока рисую, осциллограф ждет

Pyhesty: короче кури usb драйвер, если это cypress fx3 - то там решаемо через кольцо буферов

Dmitry_Mandzyuk: а я вряд-ли смогу что-то с драйвером сделать, у осца sdk свое

Default avatar.png gtj: могу сказать решение но меня сразу моментально забанят)

Default avatar.png gtj: предположительное решение)

Pyhesty: тогда отдельным процессом захыватываей данные из sdk, не должно быть пропусков, а рисуй другим процессом

Dmitry_Mandzyuk: это типа матом? осц в форточку?)))

Default avatar.png gtj: рисовать тогда асемблером не? сразу из регистра?

Default avatar.png gtj: есть масм там есть директ 9(и 8)

Default avatar.png gtj: 9 и 8

Pyhesty: да не ассемблер прошлый век, я осциллограф для нашего завода делал в 2003 это был борлад С++ с асм вставками - жесть ... сейчас уже 2020 на дворе

Dmitry_Mandzyuk: масм?))) это повеситься можно

Default avatar.png gtj: ну окай асамблер прошлый век хорошо) но вот я смотрю на его возможности и балдею)

Default avatar.png gtj: да нет там все вроде логично

Dmitry_Mandzyuk: ох, ладно у меня три часа ночи, спасибо за подсказки, я наверное спать пойду

Dmitry_Mandzyuk: про потоки понял, надо подумать

Pyhesty: добрых, добейся стабильного приёма в одном процессе и будет счастье

Default avatar.png gtj: ты все таки юзал асемблер)

Default avatar.png gtj: но пишешь что он прошлый век)

Dmitry_Mandzyuk: ну стабильно это я так понимаю непрерывный цикл

Pyhesty: https://youtu.be/Nlw-08O7XwE

Dmitry_Mandzyuk: а оно будет успевать в файл писать кстати?

Pyhesty: в мае на карантине на асме наваял под 8080

Default avatar.png gtj: я про 32 бита и 64

Default avatar.png gtj: щас гляну твое

Pyhesty: в файл не будет, только если файл не виртуальный в памяти, не пиши такие потоки в файл, только для отладки и только на SSD

Default avatar.png gtj: 8080?

Default avatar.png gtj: это же закрытый режим

Pyhesty: это проц 8080

Default avatar.png gtj: ааа

Dmitry_Mandzyuk: вот это ты написал))) ужас просто, я про видео на ютубе

Default avatar.png gtj: классно

Dmitry_Mandzyuk: а если не в файл, то куда?

Pyhesty: да, апогей - 300к операций в секунду ещё тот калькулятор...

Pyhesty: если для отладки записать - пиши в память несколько секунд

tutubalin: классный видос

Default avatar.png gtj: у меня ай7-7700 я сейчас изучаю 32 битный режим полет нормальный, по возможностям докладываю возможности теже

tutubalin: скинь в #world тоже, пусть народ порадуется

Pyhesty: а и то как работает реальный осцилл =) вот видео https://youtu.be/yxNRV7LD8dQ =) на ту же тему =)

tutubalin: очень круто!

Default avatar.png gtj: класс) дело мастера боится)

Default avatar.png gtj: http://chat.codingame.com/pastebin/0794cbcd-88d1-4e8b-a7a3-5f4e6ab66fcb