Программисты на питоне

ol4a21

Задача: найти сколько общих символов в начале двух строк
Решение программиста на питоне



minlen = min(len1,len2)
for same in range(minlen+1):
if (str1[:same] != str2[:same]):
break
same = same-1



Йоу, все гоу учить питон

cvetochek

Можно функцию самому сделать, хоть на С++, хоть на Pascal'e, хоть в Basic'е. Тогда основная программа такой-же короткой будет.

ol4a21

Ты не понял, где смеяца
Посмотри внимательно, и скажи, КАК этот код работает
А потом обобщи гениальность его автора на его собратьев

ol4a21

На си будет одна строчка, речь не об этом

The_fly

А чё такого?
Нормальный код - через жопу

cvetochek

Что-то я не догоняю, в коде что-то не то, но я питоон вообще в глаза не видел, и не представляю, какой там формат команд (функций и проч, и проч)

Chupa

Как это работает я понял, хоть питона и не знаю.
Вопрос в другом: является ли этот кусок кода типичным для данного языка и насколько крут автор этого чуда, а то вот так вот сразу обобщать на всех питон-программеров некорректно.
ЗЫ Некоторые и на сях могут написать _ТАКОЕ_, что это даже рядом не валялось...

ol4a21

Да это все понятно, но уж больно мне понравилось
Кусок из некоей буржуйской научной программулины
Питона я тоже не знаю

gopnik1994

если я правильно понял, то зачем там цикл до minlen+1, а потом декремент?

ol4a21

Нет
Попробуй еще

gopnik1994

что означает конструкция "for same in range(minlen+1)"
и с какого индекса начинаются символы в строках?
или я опять не про то?

yuda

кажется
for same := 1 to minlen+1do

cvetochek

Насколько я понял, там цикл не по той переменной сделан. Или я не прав?.

voronetskaya

Видимо в питоне индекс массива не с нуля начинается...

Beshlan

Ты ещё не видел телефонной книги на питоне из семи строк.

Chupa

маза у него время работы - O(minlen^2)

ol4a21

Не надо в детали вникать
Что там запрограммировано:

поехали_по_i
{
для каждого i сравнить подстроки str1[0-i str2[0-i)
если не равны, то ответ - это (i-1)
}
вот что значит высокий уровень абстракции

ppplva

deleted

yuda

ну так бы сразу и сказал
а то я и не понял, что ж тебе так понравилось

The_fly

На ночь у всех тормоза начались

gopnik1994

если б еще знать, что в питоне конструкция str[:n] означает подстроку....

voronetskaya

То что str1[:same] означает подстроку неочевидно, отсюда и непонятность твоего юмора.

cvetochek

Тот алгоритм, который ты дал, выдаст ответ minlen, независимо от того, сколько сиволов одинаковы.

ol4a21

Это почему?

ol4a21

Опытному глазу очевидно
Так я своим-то сначала и не поверил
Полез в инет маны к питону искать

cvetochek

А ты внимательнее прочитай, что ты написал.
Программа то правильно работать будет, только алгоритм чуть-чуть другой.

ol4a21

Маза ты что-то все время тормозишь
Правильный - другой
А я расшифровал то, что в первом посте написано

bobking

Ну не поставил он там break, ну и что? Это не программа на C, в конце концов, а псевдокод.

gopnik1994

т.о. ты обвинил всех в неопытности
я лично с тобой не согласен

cvetochek

Ну я все-таки всего навсего химик, последний раз 3 года назад программил.
Да и настроение сегодня какое-то... ттоооррррмоооззззннноее.

ol4a21

ответ - это (i-1) ~ return i-1
а я-то не понял, о чем он

cvetochek

Ну, хоть где-то я не стормозил, и то приятно.

Dasar

[To ] А ты уверен, что str1[:same] возращает подстроку? А не просто символ в позиции same?
ps
Если str1[:same] возвращает символ, то это будет нормальный код.

ol4a21

str[same] - символ
str[beg:end] - подстрока, beg и end могут быть опущены - в этом случае с начала и до конца соответственно
Я сам не поверил, специально по питону доки поискал

bobking

> Ну, хоть где-то я не стормозил, и то приятно.
Всё равно ты химик.
Оставить комментарий
Имя или ник:
Комментарий: