Уведомления

Группа в Telegram: @pythonsu

#1 Июль 24, 2008 12:12:25

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

crchemist
можна швидше.
Замість
fin = StringIO(sys.stdin.read())
rinput = fin.readline
і багатьох викликів rinput()

можна:

lines = sys.stdin.readlines()

for line in lines:
……..
да, я кстати думал об этом, но ты думаешь это быстрее работать будет чем, через StringIO?



Офлайн

#2 Июль 24, 2008 12:16:49

crchemist
От:
Зарегистрирован: 2008-07-09
Сообщения: 379
Репутация: +  0  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

я дивився на цю задачку
http://www.spoj.pl/ranks/TEST/lang=PYTH
Zhang Yunqiao accepted 0.00 3.7M PYTH



Офлайн

#3 Июль 24, 2008 12:20:21

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

не вышло с такой же скоростью?
там много удивительного есть)
кстати, время на одном и том же коде постоянно меняется



Офлайн

#4 Июль 24, 2008 12:48:22

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

crchemist
я дивився на цю задачку
http://www.spoj.pl/ranks/TEST/lang=PYTH
Zhang Yunqiao accepted 0.00 3.7M PYTH
вот этот код выдал 0.2
import sys

while True:
x = sys.stdin.readline()
if x[:2] == '42': break
sys.stdout.write(x)
и такой:
import sys

while True:
x = sys.stdin.readline()
if x[:2] == '42': break
print x



Отредактировано (Июль 24, 2008 12:49:06)

Офлайн

#5 Июль 24, 2008 12:51:07

crchemist
От:
Зарегистрирован: 2008-07-09
Сообщения: 379
Репутация: +  0  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

0.1

import sys
def main():
data = sys.stdin.read()
pos = data.rfind('42\n')
sys.stdout.write(data[:pos if pos != -1 else len(data)])
main()



Офлайн

#6 Июль 24, 2008 12:59:20

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

интересно
а у меня такой код выдает 0.3

import sys
data = sys.stdin.read()
sys.stdout.write(data[:data.rfind('42\n')])



Офлайн

#7 Июль 24, 2008 13:52:20

crchemist
От:
Зарегистрирован: 2008-07-09
Сообщения: 379
Репутация: +  0  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

izekia
да, я кстати думал об этом, но ты думаешь это быстрее работать будет чем, через StringIO?
та, але є проблема. треба зберігати в окремій змінній індекс в списку

lines = stdin.readlines()
line_index = 0

ncases = lines

line_index += 1 !!! - це повільно виконується
….

import psyco;
import sys
from cStringIO import StringIO
import os

fin = sys.stdin.readlines()
fout = StringIO()
routput = fout.write

def main():
cache = dict()
for x in range(100):
cache[str(x)] = x

q = 2
for i in range(int(fin[0])):
prev_line = [cache[fin[q].rstrip()]]
last_line = []
for j in range(1, int(fin[q - 1])):
q += 1
last_line = [cache[x] for x in fin[q].split()]
last_line[0] += prev_line[0]
for z in xrange(1, len(prev_line)):
plx = prev_line[z]
last_line[z] += prev_line[z - 1] <= plx and plx or prev_line[z - 1]

last_line[-1] += prev_line[len(prev_line) - 1]
prev_line = last_line

routput('%i\n'%_max(last_line) or prev_line[0])
q += 2
fout.seek(0)
os.write(1, fout.read())
psyco.bind(main)
def _max(l):
m = l[0]
for c in l:
m = c if m < c else m
return m

psyco.bind(_max)

main()
0.92



Офлайн

#8 Июль 24, 2008 13:54:47

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

а ты по-русски вообще не умеешь?
просто я тебя плохо понимаю



Офлайн

#9 Июль 24, 2008 14:48:06

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

OFF: переходите оба на английский ;)



Офлайн

#10 Июль 24, 2008 14:51:10

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

shiza
тогда остальные ничего не поймут - тоже нехорошо ;)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version