dzz: Dizzy の冬 (Default)
[personal profile] dzz
Лёгким движением руки ускорил чужой код на питоне примерно в 60 раз ;)))

Было:

rows = [] cols = [] for key in values.keys(): row, col = key if not col in cols: cols.append(col) if not row in rows: rows.append(row) n_rows = max(rows) n_cols = max(cols)
Стало:
n_rows = 0 n_cols = 0 for key in values.keys(): row, col = key if row > n_rows: n_rows = row if col > n_cols: n_cols = col


В общем, типическое "Кто так пишет..." :)))

Date: 2007-06-21 11:07 am (UTC)
From: [identity profile] scheddi.livejournal.com
Гм... до первого варианта еще додуматься надо :) я тоже такую траву хочу!

Date: 2007-06-21 02:58 pm (UTC)
From: [identity profile] dzz.livejournal.com
Ну, это всё равно не дотягивает до алгоритма определения чётности, попавшегося мне на глаза в далёком детстве:

for (i=0, j=1; i<value; i++) j *= -1;
if (j>0) printf("Чётное"); else printf("Нечётное");

:)))

Date: 2007-06-21 03:35 pm (UTC)
From: [identity profile] scheddi.livejournal.com
ну... это еще осознать надо :)
пару раз я видела - и даже пыталась модифицировать программы, в которых код такой, что поневоле начинаешь задумываться о смысле жизни :)

Date: 2007-06-22 06:01 am (UTC)
From: [identity profile] dzz.livejournal.com
Ну, тут основная идея - цикл от 0 до проверяемого числа.
Для достаточно больших чисел - весьма долго.

Хотя, в действительности, достаточно проверить остаток от деления на 2, он же - младший бит :)))

Date: 2007-06-22 08:41 am (UTC)
From: [identity profile] scheddi.livejournal.com
Да про цикл я поняла... непонятно другое - как это вообще может в голову прийти :) И в предыдущем примерчике - аналогично.

Date: 2007-06-22 10:50 am (UTC)
From: [identity profile] dzz.livejournal.com
Природа извращений - штука загадочная :)

Date: 2007-06-23 10:51 am (UTC)
From: (Anonymous)
Мне рассказали про то, как у кого-то увидели алгоритм определения названия месяца. На каком языке, я не спросил, поэтому приведу паскалевский аналог того, что мне описали:

  if value = 1 then result := 'январь'
  else if value = 2 then result := 'февраль'

И так далее до 12. Автор про массивы, похоже, не слышал.

Date: 2007-06-23 10:41 am (UTC)
From: (Anonymous)
А если value равно, например, 3,234634634E+45 или 7,43524395847523489E+20?
Может, сразу, ввести определение, что все числа, после некого, чётные?
Иначе пользователь алгоримта удавится ждать результата.

Date: 2007-06-23 01:01 pm (UTC)
From: [identity profile] dzz.livejournal.com
> Иначе пользователь алгоритма удавится ждать результата.

Дык, в этом-то и вся прелесть :)

Date: 2007-06-23 01:13 pm (UTC)
From: [identity profile] dzz.livejournal.com
Разумеется, числа вида 3,234634634E+45 будут по определению чётными, т.к. разрядность мантиссы МЕНЬШЕ 45 знаков, т.е. в конце имеется энное количество нулей.

Речь, всё же, идёт о числах меньше maxint :)

Profile

dzz: Dizzy の冬 (Default)
dzz

August 2018

S M T W T F S
   1234
567891011
1213 1415161718
1920 2122232425
262728293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 22nd, 2025 09:32 pm
Powered by Dreamwidth Studios