Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 0
Регистрация: 20.10.2015
Сообщений: 28
1

Оптимизация кода

30.10.2015, 00:03. Показов 2600. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача G. Условие в .pdf файле. Если нужны тесты, напишите.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
with open('test\\01', 'r') as inp:
    n, k = [int(i) for i in inp.readline().split()]
    listl = [int(i) for i in inp.readline().split()]
    listl.sort()
if listl[0] < 0 and listl[n-1] > 0:
    for i in range(n):
        if listl[i] > 0:
            if len(listl) - i < k:
                k = len(listl) - i
            if i - 1 >= k:
                i = k
            break
    print (listl)
    listmin = [-i for i in listl[0:i]]
    listplu = [-i for i in listl[len(listl) - k:]]
    a = max(abs(sum(listmin) + sum(listl[i:])), abs(sum(listplu) + sum(listl[:len(listl) - k])))
    print (a)
else:
    a = abs(sum(listl))
with open('robotu.txt', 'w') as inp:
    inp.write(str(a))
Можно ли как-нибудь ещё сократить код или ускорить программу? Может я пропустил какие-нибудь интересные методы или функции?
 Комментарий модератора 
Мало кто захочет смотреть вложения. Хочешь помощи — потрудись набрать условие текстом
Вложения
Тип файла: pdf problems.pdf (127.3 Кб, 12 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2015, 00:03
Ответы с готовыми решениями:

Оптимизация кода
Как сделать count для каждого значения? Ниже приведен код, но я хотел бы сделать count каждого...

Оптимизация кода
kol=0 N=int(input()) teach_list= for i in range(N): teach_list.append(input()) teach_list1...

Оптимизация кода
Добрый день! Решаю задачу по учебе и вроде код по условию верный, но при тестах выдает ошибку...

Оптимизация кода простого калькулятора
Доброго времени. Начал изучать вчера python. Сегодня решил написать простой калькулятор. Написал....

3
1 / 1 / 0
Регистрация: 20.10.2015
Сообщений: 28
30.10.2015, 22:27  [ТС] 2
Условие задачи G
Условие

Компания «Филипп индастриз» отправила на Марс новый робот-марсоход. Целью робота явля-
ется исследование поверхности Марса. Для исследования Марса робот будет перемещаться по поверхности планеты на север и на юг вдоль прямой. Программа робота состоит из n команд, каждая из которых описывается целым числом ai Каждое число ai задаёт количество шагов, которое необходимо сделать роботу. Если
ai > 0, то робот совершает |ai| шагов на север, если ai < 0, то |ai| шагов на юг. Робот исполняет
команды последовательно, начиная с первой.
Однако по пути на Марс робот подвергся космическому излучению и его программа могла повре-
диться. Запустив процедуру тестирования памяти, ученые выяснили, что в программу было внесено
от 0 до k ошибок следующего вида: число ai оказалось заменено на −ai. Тем не менее, приземлив-
шись на Марс, робот выполнил свою, возможно поврежденную, программу.
Теперь для организации спасения робота ученые хотят выяснить, насколько далеко от точки,
в которой он начал выполнение программы, робот мог оказаться в результате. Помогите им это
выяснить.


Формат входных данных
В первой строке входного файла находятся два числа n, k (1 ≤ k ≤ n ≤ 10^5) — количество чисел
в программе робота и максимальное количество ошибок.
Во второй строке входного файла находятся n чисел ai(−10^4≤ ai ≤ 10^4, ai != 0) — программа
робота.

Формат выходных данных
В единственной строке выходного файла выведите максимальное расстояние в шагах, на которое
мог удалиться робот, выполнив все команды и совершив не более k ошибок.
Примеры
input.txt
4 1
1 2 -1 -3
output.txt
5

input.txt
7 2
5 -3 7 9 -2 -8 -1
output.txt
29

Пояснение к примеру
В первом примере робот мог, например, выполнить программу 1, 2, −1, 3 и в результате удалиться
на 5 шагов на север.
0
Эксперт NIX
2795 / 2038 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
30.10.2015, 23:19 3
Лучший ответ Сообщение было отмечено Cheshires как решение

Решение

Давайте разберем что считать:
1. Расстояние от точки старта это сумма всех шагов.
2. Влияние ошибок тем существенней чем они больше по модулю (наибольшее количество шагов) которые поменяют знак, так чтоб сдвинуть робота еще дальше от старта, чем он находился бы без ошибок. Т.е. если итог >0 (север) надо найти k наибольших шагов на юг (с минусом) и поменять им знак.
3. Таким образом программа сводится к определению знака суммы шагов без ошибок, выделении k наибольших шагов в противоположном направлении и добавлении их удвоенной суммы к результату(сумме без ошибок):
Python
5
6
7
8
true_dist = sum(list1)
err_pos = true_dist - 2 * sum(i for i in list1[:k] if i<0)
err_neg = 2 * sum(i for i in list1[-k:] if i>0) - true_dist
print(max(err_pos, err_neg))
1
1 / 1 / 0
Регистрация: 20.10.2015
Сообщений: 28
08.11.2015, 00:59  [ТС] 4
Ха! Очень красиво выходит. Спасибо большое!
0
08.11.2015, 00:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2015, 00:59
Помогаю со студенческими работами здесь

Фрактальное Броуновское движения ( оптимизация кода)
В общем у меня функция генерации фрактального броуновского движения. Делается все очень просто....

Отфильтровать из array только значения, входящие в одну из groups. Оптимизация кода
#!/usr/bin/env python list_in = groups = def check_range(list_in, groups): result = for...

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

Оптимизация кода
Имею 2 вопроса: 1) что можно улучшить в коде(в плане написания, читаемости и т.д.) 2) self.data,...

Оптимизация кода
Оптимизируйте пожалуйста эти коды: s = input() res = set() for i in range(len(s)): for j in...

Оптимизация кода
Коллеги, здравствуйте! Как можно оптимизировать код, долго что-то выполняется import math...


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

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