Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/86: Рейтинг темы: голосов - 86, средняя оценка - 4.52
-52 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
1

Исправить алгоритм расчета ЕИ и максимально оптимизировать с целью повышения быстродействия

02.11.2019, 15:45. Показов 15582. Ответов 58

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток. Помогите выполнить тестовое задание. Условия:

Запрос от Министерства энергетики Нской области:

Добрый день!

Нужно срочно решить проблему с пересчетом показателей!

Делали все по инструкции:
Заполнили обе таблицы перевода единиц измерения (см. вложения "Таблица конвертации ЕИ", "Таблица мультипликации ЕИ").
В таблицу значений внесли данные по совокупному конечному энергопотреблению природного газа с 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
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2019, 15:45
Ответы с готовыми решениями:

Способы повышения быстродействия ключа
Какие есть способы повышения быстродействия?

Настройка ПК с целью повышения FPS
Я являюсь полу про-геймером. Процессор Intel® Core™ i5 CPU 650 @ 3.20GHz Видеокарта Saphire AMD...

Апгрейд компьютера, с целью повышения производительности в играх
Всем привет!) Подскажите, что улучшить в моем компьютере, чтоб шли игры, которые имеют системные...

Методы кодирования информации с целью повышения надежности передаваемой информации
Необходимо разработать приложение, с помощью которого можно закодировать информацию. Среда...

58
6 / 9 / 0
Регистрация: 19.10.2019
Сообщений: 194
02.11.2019, 16:06 2
Ну ты свой код загрузи тоже чтобы другие могли твои ошибки увидеть.. а то без кода выглядит так, как ты хочешь на халяву получить решение.

P.S. мой уровень 2+2 = 4
0
-52 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
02.11.2019, 20:33  [ТС] 3
StalinStr, хорошо. Для начала нужно создать базы данных, например MySQL, затем подключиться к ней, залить столбцы в переменные. Приступим. Где-то у меня все это было.

Добавлено через 2 часа 59 минут
Тему можно закрывать, вопрос решен )
0
2677 / 1995 / 496
Регистрация: 17.02.2014
Сообщений: 9,357
04.11.2019, 13:23 4

Не по теме:

Цитата Сообщение от StalinStr Посмотреть сообщение
выглядит так, как ты хочешь на халяву получить решение.
а у тебя по другому выглядит?!

1
6 / 9 / 0
Регистрация: 19.10.2019
Сообщений: 194
04.11.2019, 14:46 5
Цитата Сообщение от Aviz__ Посмотреть сообщение

Не по теме:


а у тебя по другому выглядит?!

хахахахахах Ну братан, у него задание капец какое сложное. Мои задания - это начальные допотопные операторы и т.д., где их по смыслу использовать надо и т.к. я месяц пропустил, то нагоняю тут все, в общем все с вами учу, что намного лучше чем одному.
0
-52 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
04.11.2019, 16:06  [ТС] 6
StalinStr, На самом деле задание не сложное. Особенно если учитывать, что требуется энтерпрайзный разработчик. В принципе я разобрался что к чему, установил плагин для работы с бд MySQL в intellij ide community и приступил к разработке. Обещали 80 000 без испытательного срока, по факту переписки же мне отписали, что испытательный срок 3 месяца и зп никак не 80 к, а в зависимости от компитенций соискателя. Поэтому решил открыть тему и записать сюда решение, чтобы при свидетелях было видно, что задание выполнено и что по мнению форумчан оно правильное/неправильное. Пока вот вижу, что оно сложное, но такие требования у всех компаний в нашем регионе, даже у тех кто просто пилит сайты на пыхе.
0
2677 / 1995 / 496
Регистрация: 17.02.2014
Сообщений: 9,357
04.11.2019, 19:27 7
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
при свидетелях
ты серьезно?! какими же правами ты, на данный момент обладаешь, чтобы их защищать таким странным образом?
0
-52 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
04.11.2019, 21:55  [ТС] 8
Aviz__, Собственно, можно прикопаться к словам, а можно помочь. Обычно, на призыв к разумному поведению меня тролят, так что я не буду обращать внимания на такое девиантное поведение.

Добавлено через 4 минуты
Сначала я определил, что входные данные есть в таблице ДанныеTFC, следовательно с ними я и буду работать. Теперь нужно создать базу данных через JDBC, думаю вполне подойдет для такой задачи.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
04.11.2019, 22:32 9
Чо ты хочешь то? Какие-то базы, данные, охренеть совсем
2
-52 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
04.11.2019, 22:54  [ТС] 10
xoraxax, Моя цель демонстративно выполнить данное тестовое задание. Здесь я выложу полное описание того, как я его выполнил. Начиная от установки всех приблуд, затем написание кода программы и затем тестирование программы )

Добавлено через 4 минуты
В ходе выполнения мне понадобится помощь. И так, в intellij ide есть плагин для работы с MySQL, в настройках заходим в плагины и устанавливаем плагин Database Navigator, затем скачиваем и устанавливаем MySQL с офсайта https://dev.mysql.com/downloads/installer/ Создаем базу данных и прописываем подключение с помощью JDBC.
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
05.11.2019, 00:44 11
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
Моя цель демонстративно выполнить данное тестовое задание. Здесь я выложу полное описание того, как я его выполнил.
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
Тему можно закрывать, вопрос решен )
Как-то противоречтво, не находите?
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
Нужно срочно решить проблему с пересчетом показателей!
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
оно у них не меняется на протяжении 3 лет
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
Прошу срочно исправить алгоритм расчета
Оценка срочности понятие субъективное, да?
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
это тестовое задание при приеме на работу в компанию X, оно у них не меняется на протяжении 3 лет и подходит для любой вакансии практически.
Разве? Мне кажется что оно никуда не подходит потому что задание "исправить алгоритм расчета", "максимально оптимизировать алгоритм расчета с целью повышения быстродействия." это по сути математика а не разработка, (ковырятся в ядре вам никто не даст).
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
На самом деле задание не сложное. Особенно если учитывать, что требуется энтерпрайзный разработчик.
Значит и решите его как энтерпрайз разработчик, то есть с использованием технологий, знание которых, логично, и должно быть перечисленно в вакансии.
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
Сразу скажу, что подобное задание я уже выполнял
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
На самом деле задание не сложное.
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
В принципе я разобрался что к чему,
Можно стэк используемых технологий?
1
-52 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
05.11.2019, 01:04  [ТС] 12
ViktorFX, критерий срочности здесь реально относительный, так как хз как выполнять тз - просто на юмл прописать решение или же написать код программы со всеми вытекающими? Соответственно, и время на выполнение может быть как растянуто, так и сокращено до минимума. В задаче также подразумевается исправление кода программы. Но код программы они не дают, вместо этого описание своими словами. Так где тут критерий истинности?

Добавлено через 2 минуты
Прикололся, да тут полно противоречий, за что тебе лайк )
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
05.11.2019, 01:12 13
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
Так где тут критерий истинности?
"Практика критерий истины" (с) Давайте свое решение (вы же уже решили?!). Это к вопросу "всей важности" ваших задач.
Если же вам нужна реальная помощь а не хвалебные оды, стоило бы спросить. Тем не менее вот вам ответ авансом : разработчик использует технологии, и его задача не заключается в создании велосипедов. Учите технологии.
0
-52 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
05.11.2019, 01:19  [ТС] 14
ViktorFX, К чему сие сказано? Эту херню можно написать очень большим числом способов, на большим количестве языков. Критерий эффективности? Не уверен, что при просмотре решения данной задачи он будет заметен. Самое подходящее для такой задачки - написать программу на 1С, или ему подобном. Но тут должен быть Java, php, python, C#, C++, что угодно. Так скажите мне на милость - причем тут технологии?

Добавлено через 1 минуту
Забыл, можно тупо sql запросами обойтись, еще макросами на exel )))
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
05.11.2019, 01:20 15
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
да тут полно противоречий, за что тебе лайк
Что-то не все сообщение отправилось. В остатке я прашивал у вас стэк используемых вами технологий. Если вы претендуете на вакансию разработчика то хотя бы частично должны знать техгологии перечисленные в вакансии. А пока что задание на математику
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
.. исправить алгоритм расчета ... максимально оптимизировать алгоритм расчета с целью повышения быстродействия.
это не разработка.
1
-52 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
05.11.2019, 01:26  [ТС] 16
Просто я к тому, что знать технологий можно много, вопрос в применимости к этой задаче...

Добавлено через 2 минуты
Цитата Сообщение от ViktorFX Посмотреть сообщение
Что-то не все сообщение отправилось. В остатке я прашивал у вас стэк используемых вами технологий. Если вы претендуете на вакансию разработчика то хотя бы частично должны знать техгологии перечисленные в вакансии. А пока что задание на математику
Требования:

опыт объектно-ориентированного программирования;
опыт программирования Java 7, 8, Java EE, Java Core, Java SE, JavaScript, SQL, jQuery, Ajax, JSON;
опыт работы с БД MS SQL, Oracle, PostgreSQL.

Ну, не скажу что в совершенстве, но опыт работы с этим добром есть )

Добавлено через 2 минуты
ViktorFX, Если вкратце, то порядки можно просто порешать делением/умножением, но я так понимаю этого будет не достаточно, просто указать где это сделать и как это подправить.
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
05.11.2019, 01:29 17
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
Особенно если учитывать, что требуется энтерпрайзный разработчик
Тут требуется табличку в экселе заполнить и формулы прописать. Любой эникейщик справится.
1
-52 / 1 / 0
Регистрация: 23.01.2018
Сообщений: 148
05.11.2019, 01:30  [ТС] 18
Цитата Сообщение от ViktorFX Посмотреть сообщение
это не разработка.
Понятно... Может тупо отправить такую же писанину с решением?

Добавлено через 1 минуту
Цитата Сообщение от korvin_ Посмотреть сообщение
Тут требуется табличку в экселе заполнить и формулы прописать. Любой эникейщик справится.
Тогда при чем тут Java? Понятно, что можно и так решить, только объясните пожалуйста, причем тут Java?
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
05.11.2019, 01:31 19
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
Самое подходящее для такой задачки - написать программу на 1С, или ему подобном. Но тут должен быть Java, php, python, C#, C++, что угодно. Так скажите мне на милость - причем тут технологии?
Ну я конечно ваши условия задачи лучше вас никак не могу знать, так что извиняюсь за свои допущения.
Руководствувался логикой : задачу ставит заказчик, способы ее решения - ваш работодатель, он же, работодатель, описывает в вакансии подходящего кандидата (что он должен знать).
Еще раз извиняюсь, чем мог - тем помог.
1
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
05.11.2019, 01:32 20
Цитата Сообщение от Veseliy Hakker Посмотреть сообщение
Тогда при чем тут Java? Понятно, что можно и так решить, только объясните пожалуйста, причем тут Java?
Не при чём, я не знаю, зачем ты это сюда принёс.
0
05.11.2019, 01:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2019, 01:32
Помогаю со студенческими работами здесь

1 ГБайт ОЗУ + Win7 x32 - оптимизировать систему для увеличения быстродействия
Добрый вечер, уважаемые форумчане! У меня мало ОЗУ - 1 ГБ. Я провёл тонкую подстройку Mozilla...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru