На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение





Сообщение: 50
ссылка на сообщение  Отправлено: 27.03.21 06:45. Заголовок: ege15 №191


Здравствуйте, Константин Юрьевич.
Хотелось получить алгоритм решения в питоне, через множества, но получилось только через массивы:
 
# ege15 №191
Q = [i for i in range(8,31)]
P = [i for i in range(10,19)]
A = set()
k=0
for N in range(0,23):
for R in range(0,9):
if (P[R]%2 != 0)and(Q[N]%2 != 0 and P[R] == Q[N]):
A.add(P[R])
k+=1
break
print('A = ',A,'k = ',k)

Подскажите, пожалуйста, алгоритм с помощью множеств
Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 6 [только новые]


Администратор




Сообщение: 2628
ссылка на сообщение  Отправлено: 27.03.21 13:51. Заголовок: s11kai пишет: Подска..


s11kai пишет:
 цитата:
Подскажите, пожалуйста, алгоритм с помощью множеств

Например, так можно:
 P = set( range(10, 18+1) ) 
Q = set( range(8, 30+1) )
PandQodd = [x for x in P & Q if x % 2 == 1]
print( PandQodd )
Но тут предварительно нужно получить формулу: Amin = P*Q.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 51
ссылка на сообщение  Отправлено: 28.03.21 01:55. Заголовок: Спасибо, Константин ..


Спасибо, Константин Юрьевич.
Красивый алгоритм, жаль только, что с помощью него не проверить, правильность формулы, полученной в ручном режиме.
Видимо это тот случай, когда компьютер не является помощником - только ручки.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 2638
ссылка на сообщение  Отправлено: 28.03.21 18:53. Заголовок: s11kai пишет: Видимо..


s11kai пишет:
 цитата:
Видимо это тот случай, когда компьютер не является помощником - только ручки.

Можно так:
 P = set( range(10, 18+1) ) 
Q = set( range(8, 30+1) )
U = set( range(1000) )
A = set( x for x in U
if ((x in P) <= (x in (U-Q))) == False )
print( len( [x for x in A if x % 2 == 1] ) )
Или вот так, если уж совсем "в лоб":
 P = set( range(10, 18+1) ) 
Q = set( range(8, 30+1) )
U = set( range(1000) )
A = set()
for x in U:
if ((not x in A) <=((x in P) <= (x in (U-Q)))) == False:
A.add(x)
print( A )
print( len( [x for x in A if x % 2 == 1] ) )


___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 52
ссылка на сообщение  Отправлено: 28.03.21 03:39. Заголовок: Константин Юрьевич, ..


Константин Юрьевич, прошу прощения что отвлекаю вас, разрешите последний вопрос.

Поигрался с кодом и не смог понять, если в формуле будет отрицание, а код почему-то не воспринимает not:
PandQodd = [x for x in P & not Q if x % 2 == 1]

Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 2637
ссылка на сообщение  Отправлено: 28.03.21 18:27. Заголовок: s11kai пишет: Поигра..


s11kai пишет:
 цитата:
Поигрался с кодом и не смог понять, если в формуле будет отрицание, а код почему-то не воспринимает not:
PandQodd = [x for x in P & not Q if x % 2 == 1]

А что такое NOT для множества? Это разница между универсальным множеством и данным множеством.
Тогда нужно ввести универсальное множество. Но оно бесконечно, так как это множество всех целых чисел.
Можно использовать частичное универсальное множество, которого достаточно для решения конкретной задачи. Например, так:
 P = set( range(10, 18+1) ) 
Q = set( range(8, 30+1) )
U = set( range(1000) )
PandQodd = [x for x in (P & (U-Q)) if x % 2 == 1]
print( PandQodd )


___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 53
ссылка на сообщение  Отправлено: 29.03.21 05:46. Заголовок: Спасибо, Константин ..


Спасибо, Константин Юрьевич, за подробное погружение в теорию.
Вот теперь уже можно будет и экспериментировать с этими "жуткими" множествами.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 266
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет