Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Python и участие в олимпиадах по программированию 
:(
    Опции темы
dvska
Дата 13.9.2006, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 30.1.2006

Репутация: 6
Всего: 9



Цитата(Void @ 13.9.2006,  00:57)
Я сам Jython не использовал, так что было бы интересно, если бы кто-то просветил по поводу его быстродействия относительно CPython и Java.

Пробовали, тестировали. Тормоз он. К тому же мёртвенький практически...  smile  А жаль.
--------------------
PM MAIL   Вверх
albertn
Дата 14.9.2006, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Цитата(Artemios @  13.9.2006,  13:31 Найти цитируемый пост)
Не понял, сам смысл сортировки же это расположение некоторого множества элементов в соответствии с некоторым порядком, определенным на элементах. А порядок - это функция, определенная для пар элементов, возвращающая логическое значение.
С другой стороны, если все завязано на положительности и целых чисел, как элементов упорядочиваемого множества, так все равно, можно попытаться завязать на проверке равенства нулю в ходе ряда действий, что также есть логическая операция...
Эх, старею что-то smile

Основной упор в задаче идет на то, чтобы отсортировать 2 числа без использования логики. Дам легкую подсказку, что сортировка несет за собой математическую основу.
Мне один тип предложил такую идею, что надо сделать нулевой массив большой размерности, и забить каждое значение как индекс массива, а затем просто вывести все по порядку. Но все-же решение не рациональное, и не правильное.
PM WWW ICQ   Вверх
Void
Дата 14.9.2006, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 10
Всего: 173



Цитата(albertn @  14.9.2006,  15:32 Найти цитируемый пост)
Основной упор в задаче идет на то, чтобы отсортировать 2 числа без использования логики.

Код
def sort_two_numbers(a, b):
    lesser = (a + b - abs(a - b)) / 2
    bigger = a + b - lesser
    return lesser, bigger

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

Это сообщение отредактировал(а) Void - 14.9.2006, 20:46


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Artemios
Дата 15.9.2006, 05:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 18
Всего: 50



Я вроде тоже сначала примерно также подумал:
Код

# даны a,b
c = (a+b)/2
d = abs(a-b)/2
a1 = c-d
b1 = c+d

Только ведь в abs используется операция сравнения smile


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
Artemios
Дата 15.9.2006, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 18
Всего: 50



Цитата(Artemios @  15.9.2006,  05:54 Найти цитируемый пост)
Только ведь в abs используется операция сравнения

Сорри, слишком математически смотрел на задачу smile В машинной арифметике же достаточно сбрасывать в 0 знаковый бит не в зависимости от того, какой он был изначально. Только вот как знаки, и соответственно abs, реализованы в длинной арифметике питона - пока не интересовался smile 


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
albertn
Дата 15.9.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Void, ну теперь то уже все готово осталось только написать полный код программы, что не составит труда. Задачка то в принципел легкая, только приходится хорошо подумать головой.
PS Void, +1
PM WWW ICQ   Вверх
Cr@$h
Дата 15.9.2006, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Цитата(Artemios @  15.9.2006,  06:54 Найти цитируемый пост)
Только ведь в abs используется операция сравнения 

Используется в ней.. и то возможно. Если не разрешено пользоваться логическими операциями, то не значит, что нельзя использовать другие функции. Так, если посмотреть, логические операции будут использоваться в большинстве функций. smile 
Void, руляет.

Это сообщение отредактировал(а) Cr@$h - 18.9.2006, 12:21
PM MAIL ICQ   Вверх
albertn
Дата 18.9.2006, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Цитата(Cr@$h @  15.9.2006,  18:22 Найти цитируемый пост)
Используется в ней.. и то возможно. Если не разрешено пользоваться логическими операциями, то не значит, что можно использовать другие функции. Так, если посмотреть, логические операции будут использоваться в большинстве функций.

Ну я бы так не сказал. Если углубиться в этот вопрос, то на асме логической операцией считается та, которая следит за сменой флагов. Все арифметические операции, как и взятие модуля хоть и изменяют эти флаги, но не следят за их изменением.
PM WWW ICQ   Вверх
Artemios
Дата 18.9.2006, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 18
Всего: 50



Цитата(albertn @  18.9.2006,  09:48 Найти цитируемый пост)
Ну я бы так не сказал. Если углубиться в этот вопрос, то на асме логической операцией считается та, которая следит за сменой флагов. Все арифметические операции, как и взятие модуля хоть и изменяют эти флаги, но не следят за их изменением. 

Ну а если опять посмотреть математически, то любое машинное действие - есть операция над битами, то бишь реализация булевой алгебры, синоним коей алгебра логики smile 



--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
albertn
Дата 18.9.2006, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Цитата(Artemios @ 18.9.2006,  10:39)
Ну а если опять посмотреть математически, то любое машинное действие - есть операция над битами, то бишь реализация булевой алгебры, синоним коей алгебра логики smile

Ну если так посмотреть, то все что у нас просисходит - это просто совокупность элементарых частиц, подчиняющихся одним и тем-же законам smile
А если серьезно, то как-раз арифметические операции считывают только состояние регистров и памяти, а логические операции к тому-же считывают флаги состояний.
Вообще операции ANDORNOT ... по-сути чисто математические. А уже < > <= >= == != .. чисто логические.
В принципе получается что ANDORNOT ... можно было-бы применять, но их прменение влечет за собой применение логических операций или функций, что в задаче не разрешено.

Ну так что, никто не хочет предоставить полный вариант программы? Ладно, уж напишу. Не ругайте сильно за пузырька smile
Код

a = [2,43,5,6,4,3,4,6,78,9,7,5,34,56,7,78,6,43,3,6,7,43,23,8,7,5,3,2,4,5,65,78,89,897,65,54,34,4,5,56,65,7,4,7,89]
for i in range(len(a)):
    for j in range(len(a)-1):
        m = (a[j] + a[j+1])/2.0
        l = abs(a[j]-m)
        a[j] = int(m-l)
        a[j+1] = int(m+l)
print a

PM WWW ICQ   Вверх
Artemios
Дата 18.9.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 18
Всего: 50



Цитата(albertn @  18.9.2006,  11:31 Найти цитируемый пост)
Ну если так посмотреть, то все что у нас просисходит - это просто совокупность элементарых частиц, подчиняющихся одним и тем-же законам

А что, процесс мышления уже формализовали? smile


Это сообщение отредактировал(а) Artemios - 18.9.2006, 12:01


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
albertn
Дата 18.9.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Цитата(Artemios @  18.9.2006,  11:53 Найти цитируемый пост)
А что, процесс мышления уже формализовали?

Пару миллионов строчек кода осталось на питоне smile 

А про циклы ты это имел ввиду?
Цитата(albertn @  13.9.2006,  12:55 Найти цитируемый пост)
в той программе могут быть всего 2 цикла

PM WWW ICQ   Вверх
Artemios
Дата 18.9.2006, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 18
Всего: 50



Сорри, невнимательно смотрел твой код, свою глупость удалилsmile

Добавлено @ 12:07 
Цитата(albertn @  18.9.2006,  11:31 Найти цитируемый пост)
 for j in range(len(a)-1):

for j in range(len(a)-i-1)


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
Cr@$h
Дата 18.9.2006, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Цитата(albertn @  18.9.2006,  10:48 Найти цитируемый пост)
Ну я бы так не сказал. Если углубиться в этот вопрос, то на асме логической операцией считается та, которая следит за сменой флагов. Все арифметические операции, как и взятие модуля хоть и изменяют эти флаги, но не следят за их изменением. 

Да неправильно написал я smile Хотел сказать: Если не разрешено пользоваться логическими операциями, то не значит, что нельзя использовать другие функции.

Цитата(Artemios @  18.9.2006,  11:39 Найти цитируемый пост)
Ну а если опять посмотреть математически, то любое машинное действие - есть операция над битами, то бишь реализация булевой алгебры, синоним коей алгебра логики 

А уж если посмотреть на логические схемы, то там одни логиеские операции и есть практически smile
Цитата(albertn @  18.9.2006,  12:31 Найти цитируемый пост)
Вообще операции AND, OR, NOT ... по-сути чисто математические. А уже < > <= >= == != .. чисто логические.

Думаю, имелось в виду, что нельзя использовать логические операции в привычном смысле слова.
Цитата(Artemios @  18.9.2006,  12:53 Найти цитируемый пост)
А что, процесс мышления уже формализовали? 

О, куда может привести разговор оп олимпиадах на Python smile 

Ещё раз извините, что выше неправильно выразился (можно/нельзя).
PM MAIL ICQ   Вверх
Artemios
Дата 13.10.2006, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 18
Всего: 50



Итак, завершилась олимпиада в Саратове, в которой принимала участие команда 
albertn. Ставропольские ребята заняли 10-е место и теперь в числе 10-ки пебедителей поедут на полуфинал в Питер.

Не могу не похвастаться:
1,2,3 места заняли команды Саратовского гос. университета.smile




--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1034 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.