|
2 / 2 / 1
Регистрация: 02.11.2017
Сообщений: 60
|
||||||
Неблокирующая функция15.05.2020, 09:54. Показов 28307. Ответов 94
Метки нет (Все метки)
у меня задача: написать функцию func test(f func(int) int, in1 <-chan int, in2 <- chan int, out chan<- int, n int) в package main.
она n раз сделать следующее 1. прочитать по одному числу из каждого из двух каналов in1 и in2, назовем их x1 и x2. 2. вычислить f(x1) + f(x2) 3. записать полученное значение в out Функция test должна быть неблокирующей, сразу возвращая управление. Функция f может работать долгое время, ожидая чего-либо или производя вычисления. Формат ввода Количество итераций передается через аргумент n. Целые числа подаются через аргументы-каналы in1 и in2. Функция для обработки чисел перед сложением передается через аргумент f. Код на go - вопрос как сделать функцию неблокирующей? в чем у меня ошибка? еще при сборке ругается cannot be extracted via extract ()
0
|
||||||
| 15.05.2020, 09:54 | |
|
Ответы с готовыми решениями:
94
Неблокирующая запись в файл Неблокирующая запись файла
|
|
0 / 0 / 0
Регистрация: 16.04.2017
Сообщений: 2
|
||||||
| 27.05.2020, 20:33 | ||||||
|
Каким образом тривиальное решение типа такого:
В условии ничего не сказано о том в каком порядке должны считываться числа с каналов. Я вижу 3 варианта: содержимое входных каналов для примера: in1: <-1<-2<-3<-4 in2: <-5<-6<-7<-8 1) Считывание без контроля парности: Т.е результатом в out может быть любое паросочетание из in1 и in2: f(1)+f(6) или f(4) + f(7) итд как следствие, в out, результат каждый раз будет случайным и проверить сами значения в тесте невозможно, можно проверить только их количество и время работы. 2) считывание c контролем парности, но без контроля порядка: в out будут записаны: f(2)+f(6) , f(1) + f(5), f(3) + f(7), f(4) + f(8) или те же пары, в любом другом порядке. Значения в out можно протестировать отсортировав их. 3) считывание c контролем парности и контролем порядка в out будут f(1) + f(5), f(2)+f(6), f(3) + f(7), f(4) + f(8) Для первого и второго варианта выдает RE с той самой паникой Третий: WA 0.6сек и 50Мб
0
|
||||||
|
0 / 0 / 0
Регистрация: 27.05.2020
Сообщений: 4
|
|
| 28.05.2020, 09:57 | |
|
Если в out попадает что-то не то или не в свое время выскакивает RE и в stderr видно, что не так.
Я еще попробовал вычисление и вывод засунуть в горутину и заметил, что порядок вывода сбился, значит задержки всетаки есть.
0
|
|
|
0 / 0 / 0
Регистрация: 28.05.2020
Сообщений: 1
|
|
| 28.05.2020, 17:33 | |
|
Пишет аккаунт Школы озона по Го, напоминаю, что списывать запрещено.
0
|
|
|
0 / 0 / 0
Регистрация: 25.05.2020
Сообщений: 12
|
||
| 28.05.2020, 18:19 | ||
|
Пишет человек который по почте вам рассказал про то что задачу обсуждают на форумах, потому что у неё некорректное описание Я это делал в надежде на более конструктивный подход, нежели... это
0
|
||
|
1 / 1 / 0
Регистрация: 25.05.2020
Сообщений: 12
|
|
| 28.05.2020, 19:03 | |
|
1
|
|
|
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 12
|
||
| 01.06.2020, 00:07 | ||
|
Ну что, яндекс.контест озона закончился, кто верно решил задачку - напишите хоть как правильно работающая функция то должна выглядеть
![]()
0
|
||
|
1 / 1 / 0
Регистрация: 25.05.2020
Сообщений: 12
|
||
| 01.06.2020, 00:42 | ||
|
(Если сначала заполнить весь хэш, не хватает времени (по крайней мере, при лимите 1 секунда). Если сначала прочитать в массив, не хватает памяти. Это всё на С++, на других языках было ещё хуже, но после "OK" на С++ на других уже не пробовал.)
0
|
||
|
0 / 0 / 0
Регистрация: 27.05.2020
Сообщений: 4
|
|||||||
| 01.06.2020, 08:35 | |||||||
0
|
|||||||
|
0 / 0 / 0
Регистрация: 25.05.2020
Сообщений: 6
|
|
| 01.06.2020, 16:58 | |
|
А что насчёт задачи E ? Кто-нибудь добился результата ОК?
0
|
|
|
1 / 1 / 0
Регистрация: 25.05.2020
Сообщений: 12
|
|||||||
| 01.06.2020, 17:40 | |||||||
|
(1) WTF?! Участники могут править свои результаты? (2) Один из моих запусков завершился ошибкой
WTF^2?! Участники могут править и чужие результаты и файлы? (Не знаю, к кому это вопросы: к Озону или Яндексу ¯\_(ツ)_/¯)
0
|
|||||||
|
0 / 0 / 0
Регистрация: 27.05.2020
Сообщений: 4
|
|
| 01.06.2020, 19:05 | |
|
Я тоже Е не осилил.
Когда что-то не то пишеш в выходной канал, выскакивает RE и видно что не так, когда делаешь меньше или больше записей, чем положено, тоже выдает понятную ошибку. Но когда, казалось бы, все верно - пишет WA без описания, входные числа простые, промежуточные данные выводил, все в сходится. Выложите потом сюда решение этой задачи. Ведь авторы теста наверняка чем-то проверяли свои тесты, что-то рабочее должно быть...
0
|
|
|
0 / 0 / 0
Регистрация: 25.05.2020
Сообщений: 6
|
||
| 01.06.2020, 20:30 | ||
|
Ибо также, судя по промежуточным выводам, логика понятна. кто-нибудь использовал runtime.Gosched() ? У меня от этого результат никак не поменялся в плане оценки времени и памяти. Возможно в тесте кривой подсчёт времени, т.к. с задержкой выдаёт всё те же 0.6 сек, если только совсем уж большую поставить - секунд 10, то появляется ошибка IL. По крайней мере у меня так получалось.
0
|
||
|
0 / 0 / 0
Регистрация: 02.06.2020
Сообщений: 2
|
||||||||||||||||
| 03.06.2020, 00:07 | ||||||||||||||||
|
простейшая функция покрытая мьютексом дает IL
Получается что сумма должна выводиться в out в том же порядке в котором поступают данные в in.и И нельзя запускать одновременно две Merge2Channels , потому-что они вызывают мешанину в out. Написал:
Добавлено через 1 час 31 минуту wg.Add(1) перед
0
|
||||||||||||||||
|
1 / 1 / 0
Регистрация: 25.05.2020
Сообщений: 12
|
||
| 03.06.2020, 11:34 | ||
|
например, первый сигнал в первом канале и последний сигнал во втором канале читаются по полторы секунды, а остальные -- очень быстро. Тогда результат превысит три секунды.
0
|
||
|
0 / 0 / 0
Регистрация: 02.06.2020
Сообщений: 2
|
|
| 03.06.2020, 11:56 | |
|
скорее около двух секунд, так как остальные горутины ,при условии что f func(int) int не работает слишком долго, отработают быстро. И чтение первого и последнего сигнала не будет разнесено во времени
Добавлено через 5 минут Хотя да , будет больше 3 секунд)
0
|
|
| 03.06.2020, 11:56 | |
|
Функция поиска в массиве и указатели + функция сортировки и поиск найденного элемента
Функция sqrt: существует более одного экземпляра. Функция перегруженная Перегрузка операций: friend-функция или функция-член класса Какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get()? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|