|
0 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
|
|
Исправить алгоритм расчета ЕИ и максимально оптимизировать с целью повышения быстродействия02.11.2019, 15:45. Показов 17841. Ответов 58
Всем доброго времени суток. Помогите выполнить тестовое задание. Условия:
Запрос от Министерства энергетики Нской области: Добрый день! Нужно срочно решить проблему с пересчетом показателей! Делали все по инструкции: Заполнили обе таблицы перевода единиц измерения (см. вложения "Таблица конвертации ЕИ", "Таблица мультипликации ЕИ"). В таблицу значений внесли данные по совокупному конечному энергопотреблению природного газа с 2017 по 2021 годы в единице измерения Mtoe. Запустили расчет. Данные рассчитались некорректно – значения в Twh отличаются от Gwh на 2 порядка (см. вложение "Данные TFC"), а не на 3, как должно быть. При этом в таблице перевода цифры правильные – степень Gwh -9, степень Twh -12, разница -3. В таблице "Данные TFC" для наглядности оставил только исходные значения в Mtoe и значения в Gwh и Twh, рассчитанные некорректно. В значениях, рассчитанных в остальных единицах измерения, ошибок не нашел, поэтому убрал их из таблицы "Данные TFC". Прошу срочно исправить алгоритм расчета (см. вложение "Алгоритм расчета ЕИ"). Также прошу максимально оптимизировать алгоритм расчета с целью повышения быстродействия. -- В.В. Васильев Ведущий специалист отдела перспективного развития Министерства энергетики Нской области (000) 00-00-00 Дополнительные материалы: Алгоритм расчета ЕИ 1 Начало расчета: 2 Получить P_indicators – параметр запуска расчета, массив записей таблицы T_indicators; 3 Получить P_resources – параметр запуска расчета, массив записей таблицы T_resources; 4 Получить P_years – параметра запуска расчета, массив записей таблицы T_years; 5 Для очередного показателя I из P_indicators: 5.1. Для очередного ресурса R из P_resources: 5.1.1. Для очередного года Y из P_years: 5.1.1.1. Получить M_values – массив записей T_values, каждая из которых удовлетворяет условию [[Значение поля «Показатель» = I] и [Значение поля «Ресурс» = R] и [Значение поля «Год» = Y]]; 5.1.1.2. Получить M_calculated – массив записей T_multiplication, каждая из которых удовлетворяет условию [[Значение поля «Базовая ЕИ» содержится в поле «Единица измерения» какой-либо записи M_values] и [Значение поля «Расчетная ЕИ» не содержится в поле «Единица измерения» записей M_values]]; 5.1.1.3. Получить M_based – массив записей T_multiplication, каждая из которых удовлетворяет условию [[Значение поля «Расчетная ЕИ» содержится в поле «Единица измерения» какой-либо записи M_values] и [Значение поля «Базовая ЕИ» не содержится в поле «Единица измерения» записей M_values]]; 5.1.1.4. Получить M_result – массив записей T_convertation, каждая из которых удовлетворяет условию [[Значение поля «Исходная ЕИ» содержится в поле «Единица измерения» какой-либо записи M_values] и [Значение поля «Результирующая ЕИ» не содержится в поле «Единица измерения» записей M_values]]; 5.1.1.5. Если [[M_calculated пусто] и [M_based пусто] и [M_result пусто]], то перейти в 5.1.2, иначе перейти в 5.1.1.5.1: 5.1.1.5.1. Если [M_calculated пусто], то перейти в 5.1.1.5.2, иначе перейти в 5.1.1.5.1.1: 5.1.1.5.1.1. Для каждой записи M_values, у которой значение поля «Единица измерения» содержится в поле «Базовая ЕИ» записей M_calculated, рассчитать значения в единицах измерения, которые содержатся в поле «Расчетная ЕИ» соответствующих записей M_calculated по формуле: [Значение в расчетной ЕИ = Значение в базовой ЕИ * 10 E]; 5.1.1.5.1.2. Записать в T_values для I, R, Y все значения, рассчитанные в расчетных единицах измерения, перейти в 5.1.1.5.2; 5.1.1.5.2. Если [M_based пусто], то перейти в 5.1.1.5.3, иначе перейти в 5.1.1.5.2.1: 5.1.1.5.2.1. Для каждой записи M_values, у которой значение поля «Единица измерения» содержится в поле «Расчетная ЕИ» записей M_based, рассчитать значения в единицах измерения, которые содержатся в поле «Базовая ЕИ» соответствующих записей M_based по формуле: [Значение в базовой ЕИ = Значение в расчетной ЕИ * 10 –E]; 5.1.1.5.2.2. Записать в T_values для I, R, Y все значения, рассчитанные в базовых единицах измерения, перейти в 5.1.1.5.3; 5.1.1.5.3. Если [M_result пусто], то перейти в 5.1.1.1, иначе перейти в 5.1.1.5.3.1: 5.1.1.5.3.1. Для каждой записи M_values, у которой значение поля «Единица измерения» содержится в поле «Исходная ЕИ» записей M_result, рассчитать значения в единицах измерения, которые содержатся в поле «Результирующая ЕИ» соответствующих записей M_result результирующей ЕИ = Значение в исходной ЕИ * K]; 5.1.1.5.3.2. Записать в T_values для I, R, Y все значения, рассчитанные в результирующих единицах измерения, перейти в 5.1.1.1; 5.1.2. Если по всем Y из P_years расчет завершен, то перейти в 5.2, иначе перейти в 5.1.1; 5.2. Если по всем R из P_resources расчет завершен, то перейти в 6, иначе перейти в 5.1; 6 Если по всем I из P_indicators расчет завершен, то перейти в 7, иначе перейти в 5; T_indicators – таблица показателей, содержит поле «Наименование». T_resources – таблица ресурсов, содержит поле «Наименование». T_years – таблица календарных лет, содержит поле «Наименование». T_values – таблица значений, содержит поля: «Показатель», «Ресурс», «Год», «Единица измерения», T_multiplication – таблица мультипликации единиц измерения, содержит поля: «Наименование», «Базовая ЕИ», «Расчетная ЕИ», «Степень». T_convertation – таблица конвертации единиц измерения, содержит поля: «Наименование», «Исходная ЕИ», «Результирующая ЕИ», «Коэффициент». E – степень мультипликации, поле «Степень» в T_multiplication. K – коэффициент конвертации, поле «Коэффициент» в T_convertation. Данные TFC Энергетический ресурс Единица измерения Совокупное конечное энергопотребление (Total final consumption) 2017 2018 2019 2020 2021 Природный газ (Natural gas) Mtoe 148,67 149,33 150,00 150,67 151,33 Gwh 172 903,22 173 670,80 174 450,01 175 229,22 175 996,80 Twh 1 729,03 1 736,71 1 744,50 1 752,29 1 759,97 Таблица конвертации ЕИ Наименование Исходная ЕИ Коэффициент Результирующая ЕИ Mtce --> Mm3ng Mtce 751,4768963 Mm3ng Gft3ng --> Twh Gft3ng 0,301277062 Twh MMbtu --> Mj MMbtu 1055,060005 Mj Bboe --> Qbtu Bboe 0,58000001 Qbtu Gtoe --> Gtce Gtoe 1,4285714 Gtce Gj --> Gwh Gj 0,000277778 Gwh Ktoe --> Kboe Ktoe 6,8419054 Kboe Gm3ng --> Gft3ng Gm3ng 35,958043 Gft3ng Таблица мультипликации ЕИ Наименование Расчетная ЕИ Степень Базовая ЕИ Gft3ng <--> ft3ng Gft3ng -9 ft3ng Gtce <--> tce Gtce -9 tce Gtoe <--> toe Gtoe -9 toe MMbtu <--> btu MMbtu -6 btu Mj <--> j Mj -6 j Kboe <--> boe Kboe -3 boe Mtoe <--> toe Mtoe -6 toe Twh <--> wh Twh -12 wh Ktoe <--> toe Ktoe -3 toe Gj <--> j Gj -9 j Mboe <--> boe Mboe -6 boe Mtce <--> tce Mtce -6 tce Gm3ng <--> m3ng Gm3ng -9 m3ng Bboe <--> boe Bboe -9 boe Qbtu <--> btu Qbtu -15 btu Mm3ng <--> m3ng Mm3ng -6 m3ng Mft3ng <--> ft3ng Mft3ng -6 ft3ng Gwh <--> wh Gwh -9 wh Собственно, это тестовое задание при приеме на работу в компанию X, оно у них не меняется на протяжении 3 лет и подходит для любой вакансии практически. Поэтому решил выставить на всеобщее обозрение. Сразу скажу, что подобное задание я уже выполнял и, как ни странно, принят на работу не был. Поэтому решил узнать - в чем тут собственно подвох? Помогите пожалуйста решить данное задание.
0
|
|
| 02.11.2019, 15:45 | |
|
Ответы с готовыми решениями:
58
Настройка ПК с целью повышения FPS Апгрейд компьютера, с целью повышения производительности в играх |
|
0 / 1 / 0
Регистрация: 16.11.2019
Сообщений: 2
|
|
| 16.11.2019, 17:02 | |
|
Veseliy Hakker, если Вы разобрались, помогите и мне. Где здесь ошибка в расчете? И как можно оптимизировать алгоритм? Мне не нужен код, просто в словах. Я не на должность программиста в эту компанию хочу))
0
|
|
|
0 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
|
|
| 17.11.2019, 00:55 [ТС] | |
|
Aleks-stack, Не помню...
Добавлено через 40 минут Если тупо, то читаем условие. Там написана разница, которая должна быть. Находим рассчет этого значения в коде. Но! Перед тем как считать эти значения, нужно обратить внимание на простую деталь - здесь вложенность циклов, влияет ли она на результат работы программы? Добавлено через 3 минуты 5.1.1.5.2.1. Для каждой записи M_values, у которой значение поля «Единица измерения» содержится в поле «Расчетная ЕИ» записей M_based, рассчитать значения в единицах измерения, которые содержатся в поле «Базовая ЕИ» соответствующих записей M_based по формуле: [Значение в базовой ЕИ = Значение в расчетной ЕИ * 10 –E]; Казалось бы, здесь просто нужно умножать на 100, а не на 10. Но нужно посмотреть на условие и данные. Смотрим. Добавлено через 20 минут Замечаем такую деталь. Тут везде умножение на 10. А зачем? Допустим, нужно вычислять точные значения и некий коэф нужно учитывать. Тогда зачем в коде дополнительно прописывать еще разрядный множитель? Который и влияет на результаты? Хз правда умножать или делить, так как я уже все удалил и по форуму смотрю. Нужно бы уточнить. По поводу оптимизации кода. Можно ускорить загрузку/выгрузку данных до/после математических методов. Поюсом, во избежание каши, вынести расчеты данных задачи в отдельный блок кода. Матан ускорить вроде никак не получается. Добавлено через 1 минуту Короче такие мысли были ) Добавлено через 4 минуты Aleks-stack, А вообще, глупо так поступать. Зарегаться с целью мне написать? Зачем? Сори за такой ответ, просто как-то странно для новичка на форуме, тем более профильном ) Добавлено через 1 час 58 минут Написал ответ, обновляю страницу в ожидании, ответа нет. Но время на сообщение есть. Ну я им ссылку на форум скинул, если что. Сейчас угорать будут всей компанией ))) Я сразу в ЧС попаду наверно, с пометкой "Сказочный идиот". На этом форуме меня зачморят тролли по полной программе, а профи перекрестятся пяткой, со словами "в наше время такой х...и никто бы не сморозил". И потом я не смогу устроиться даже дворником на работу ...... Да простит меня модератор, но чет я ощущаю себя мудаком. Хм...
0
|
|
|
0 / 1 / 0
Регистрация: 16.11.2019
Сообщений: 2
|
|
| 17.11.2019, 15:29 | |
|
Какое умножение на 10? Действительно сказочный вы! Это умножение на 10 в степени -Е (Е - столбец Степень таблицы T_multiplikation). В одном вы правы - зря я зарегился тут, чтоб вам написать, идите лучше в дворники...
1
|
|
| 17.11.2019, 15:45 | |
|
0
|
|
|
0 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
|
|
| 17.11.2019, 18:27 [ТС] | |
|
Aleks-stack, Вот и раскололся наш орешек ) Как тебе такая аналитика ))) Тоже мне лошка нашел - катись отсюда )))
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Добавлено через 1 минуту Aviz__, Это точно подмечено ) Добавлено через 5 минут Нокаутирующим ударом КРИТ вылетает с ринга. Проект уходит другой компании на более выгодных условиях ))) Как же я люблю интернет ))) Добавлено через 6 минут Более всего на свете я не люблю когда меня выставляют идиотом, кроме тех случаев, когда я выставляюсь им сам )))
0
|
|
|
2762 / 2069 / 510
Регистрация: 17.02.2014
Сообщений: 9,507
|
|
| 17.11.2019, 18:33 | |
|
а ты то, чего хочешь?! тебя чел искренне спросил, а ты развел лабуду...
1
|
|
|
0 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
|
|
| 17.11.2019, 18:39 [ТС] | |
|
Aviz__, Он искренне решил меня обмануть. Искренне зарегистрировался, искренне решил поиздеваться, искренне решил что сможет это сделать - а фиг вам ))) Отправил письмом им в офис ссылку на форум и скрин его ответа - пусть полюбутюся. А теперь я искренне займусь чем-нибудь полезным. Дел полно, нужно допиливать Джарвиса, а я тут фигней страдаю )))
Я им с уважением отправил презентацию проекта. Но, без уважения получил стандартный ответ. В итоге, они сами наступили на свои грабли и получили черенокм по щам, что меня вполне удовлетворяет )
0
|
|
|
1 / 1 / 0
Регистрация: 09.01.2020
Сообщений: 2
|
|
| 09.01.2020, 10:30 | |
|
Veseliy Hakker, приветствую! только вкатился из консультантов SAP в программирование. заинтересовал ваш пост. можете пояснить, в кратце, в чем проблема в алгоритме в итоге? заранее спасибо.
Добавлено через 33 минуты Veseliy Hakker, у меня только опыт на ABAP (и то скудный, работа с отладчиком), с НГ начал осваивать Python. готового ответа не прошу, нужна пища для размышлений с:
0
|
|
|
2762 / 2069 / 510
Регистрация: 17.02.2014
Сообщений: 9,507
|
||
| 09.01.2020, 10:50 | ||
|
если ты умеешь читать, то наверное, из 2-х страниц выше, смог понять, что Veseliy Hakker, просто понтился, не более((.
0
|
||
|
1 / 1 / 0
Регистрация: 09.01.2020
Сообщений: 2
|
|
| 09.01.2020, 11:33 | |
|
отработав несколько лет консультантом, меня интересуют занятные алгоритмы, я в курсе, что форум немного другой) но обратил внимание именно на алгоритм
![]() мой товарищ - опытный программист уже посоветовал мне краш-курс для решения этого задания, вечером засяду
1
|
|
|
2762 / 2069 / 510
Регистрация: 17.02.2014
Сообщений: 9,507
|
|
| 09.01.2020, 11:37 | |
|
Rem6677, привет товарищу!
да, если решишь и на java, мы будем рады посмотреть. удачи, дружище))
0
|
|
|
0 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
|
|
| 11.01.2020, 01:09 [ТС] | |
|
Rem6677, спасибо за помощь ) Там нужно для начала поднять базу данных на JDBC. Вот ссылка на мануал https://www.youtube.com/watch?... TLyUHkTqi2 Потом нужно все посчитать. Точно не помню, но расхождение на порядок получается. На java я решение не писал, так как бросил эту затею ) Но для интереса можно и написать на пару, тем более от гнева я уже отошел )
Добавлено через 1 минуту Можно просто создать коллекции и в ниж все данные прописать и так работать кстати, не думаю что обязательно работать прямо с БД.
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 3
|
|
| 11.01.2020, 15:20 | |
|
Veseliy Hakker, день добрый! В четверг получил такое же задание. Могли бы что ни будь подсказать, я честно понимаю только то что они хотят какие то расчеты что бы я поправил. Вообще что к чему тут? У вас получилось попасть к ним?
1
|
|
|
|
|||
| 11.01.2020, 18:45 | |||
|
Не вводите людей в заблуждение.
Как соединиться с базой данных и как считывать из неё данные. Смотрите официальную документацию по JDBC https://www.oracle.com/technet... index.html Это намного лучше, чем искать видео на ютубе.
1
|
|||
|
0 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
|
|
| 11.01.2020, 22:15 [ТС] | |
|
vvm28, ну логично, но управление все равно через JDBС, ок. Так же как и в пыхе есть PDO и в питоне есть SQLitie
Спасибо ) Добавлено через 2 минуты yurius1, Я отправлял им просто расчеты, не писал программу, но такое выполнение их не устроило. Им нужно написать программу на том языке, на который вы претендуете. Я так понял.
0
|
|
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 11.01.2020, 22:18 | |
|
Veseliy Hakker, если ты имеешь ввиду sqlite - это былинный отказ же
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2020
Сообщений: 3
|
|
| 11.01.2020, 22:40 | |
|
Veseliy Hakker, вопрос у меня как раз по расчетам.. Мне это не понятно и сам алгоритм там значение в формулу подставить нужно? Есть может пример одного расчета, буду признателен?
0
|
|
|
0 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
|
|
| 13.01.2020, 11:35 [ТС] | |
|
yurius1, появится время - поищу или по-новой сделаю )
0
|
|
|
0 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
|
|
| 20.01.2020, 18:11 [ТС] | |
|
yurius1, потерял. Видимо удалил с дуру... Придется по-новой переписывать
0
|
|
| 20.01.2020, 18:11 | |
|
Методы кодирования информации с целью повышения надежности передаваемой информации 1 ГБайт ОЗУ + Win7 x32 - оптимизировать систему для увеличения быстродействия Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|