Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

СЪЖДЕНИЯ. ОПЕРАЦИИ СЪС СЪЖДЕНИЯ. СЪЖДИТЕЛЕН ИЗРАЗ

СЪЖДЕНИЯ. ОПЕРАЦИИ СЪС СЪЖДЕНИЯ. СЪЖДИТЕЛЕН ИЗРАЗ

Мнениеот adilepomakova » 16 Яну 2022, 11:32

Задача 1. Атанасов, Борисов, Велев и Ганев са от състава на един и същи оркестър, но свирят на различни инструменти: пиано, цигулка, виолончело и кларнет и живеят в различни общини: Средец, Витоша, Люлин, Триадица. Известно е, че:
1) Кларнетистът е от Триадица;
2) Атанасов и Борисов не свирят нито на цигулка, нито на виолончело и не живеят в Средец, а Атанасов не свири и на пиано;
3)Жителят на Люлин свири на виолончело;
4) Велев не свири на цигулка и не е от Витоша.
Задача 2. На един лагер в едно бунгало били настанени Алексей, Борис, Валери и Григор. При запознанството се оказало, че те са в различни класове – пети, шести, седми и осми и всеки от тях има едно от хобитата: шах, нумизматика, ски, фотография. Знае се, че:
1) Алексей и фотографът са от едно училище;
2) Борис и фотографът са дошли в лагера след другите;
3) Нумизматикът и петокласникът живеят в един град;
4) Валери и осмокласникът са ходили сутринта на поход;
5) Вечерта Борис и седмокласникът играли карти с Валери и скиора;
6) Григор е по-млад от фотографа;
7) Алексей е по-стар от Валери, а шахматистът е по-стар от Алексей;
8) В неделя Алексей и скиорът участвали в състезание, на което осмокласникът бил рефер, а фотографът бил болен.
Да се определи кой в кой клас е и какво е неговото хоби.
adilepomakova
Нов
 
Мнения: 16
Регистриран на: 22 Ное 2021, 20:54
Рейтинг: 2

Re: СЪЖДЕНИЯ. ОПЕРАЦИИ СЪС СЪЖДЕНИЯ. СЪЖДИТЕЛЕН ИЗРАЗ

Мнениеот peyo » 16 Яну 2022, 16:59

adilepomakova написа:Задача 1. Атанасов, Борисов, Велев и Ганев са от състава на един и същи оркестър, но свирят на различни инструменти: пиано, цигулка, виолончело и кларнет и живеят в различни общини: Средец, Витоша, Люлин, Триадица. Известно е, че:
1) Кларнетистът е от Триадица;
2) Атанасов и Борисов не свирят нито на цигулка, нито на виолончело и не живеят в Средец, а Атанасов не свири и на пиано;
3)Жителят на Люлин свири на виолончело;
4) Велев не свири на цигулка и не е от Витоша.


Да се опитаме да накараме компютъра да реши тази задача с операции върху множества. Нашия подход ще е от всички възможности да махаме случите които са невъзможни и да видим какво ще остане:

Код: Избери целия код
from itertools import product

имена =  "Атанасов,Борисов,Велев,Ганев".split(",")
инструменти = "пиано,цигулка,виолончело,кларнет".split(",")
общини = "Средец,Витоша,Люлин,Триадица".split(",")

S = set( x for x in product(имена,инструменти,общини))

#1) Кларнетистът е от Триадица;

S -= set( x for x in S if ("кларнет" in x and not "Триадица" in x) or  ("кларнет" not in x and "Триадица" in x))

#2) Атанасов и Борисов не свирят нито на цигулка, нито на виолончело и не живеят в Средец,

S -= set( x for x in S if ("Атанасов" in x or  "Борисов" in x)
      and  ("цигулка" in x or "виолончело" in x or "Средец" in x))

#а Атанасов не свири и на пиано;

S -= set( x for x in S if ("Атанасов" in x and "пиано" in x) )

#3)Жителят на Люлин свири на виолончело;

S -= set( x for x in S if ("Люлин" in x and "виолончело" not in x) or ("Люлин" not in x and "виолончело" in x))

#4) Велев не свири на цигулка и не е от Витоша.

S -= set( x for x in S if ("Велев" in x and ("цигулка" in x or "Витоша" in x)))

S


Резултата е:

{('Атанасов', 'кларнет', 'Триадица'),
('Борисов', 'кларнет', 'Триадица'),
('Борисов', 'пиано', 'Витоша'),
('Велев', 'виолончело', 'Люлин'),
('Велев', 'кларнет', 'Триадица'),
('Велев', 'пиано', 'Средец'),
('Ганев', 'виолончело', 'Люлин'),
('Ганев', 'кларнет', 'Триадица'),
('Ганев', 'пиано', 'Витоша'),
('Ганев', 'пиано', 'Средец'),
('Ганев', 'цигулка', 'Витоша'),
('Ганев', 'цигулка', 'Средец')}

Хм... Добре, виждаме, че за Атанасов има само една възможност ('Атанасов', 'кларнет', 'Триадица')
Можем да махнем всички останали 'кларнет', 'Триадица'. Остават:

('Борисов', 'пиано', 'Витоша'),
('Велев', 'виолончело', 'Люлин'),
('Велев', 'пиано', 'Средец'),
('Ганев', 'виолончело', 'Люлин'),
('Ганев', 'пиано', 'Витоша'),
('Ганев', 'пиано', 'Средец'),
('Ганев', 'цигулка', 'Витоша'),
('Ганев', 'цигулка', 'Средец')

Остана пак само един Борисов: ('Борисов', 'пиано', 'Витоша'), пак махаме и остават:
('Велев', 'виолончело', 'Люлин'),
('Ганев', 'виолончело', 'Люлин'),
('Ганев', 'цигулка', 'Средец')
Значи ('Велев', 'виолончело', 'Люлин'), остава
('Ганев', 'цигулка', 'Средец')

И крайния отговор е:
('Атанасов', 'кларнет', 'Триадица')
('Борисов', 'пиано', 'Витоша')
('Велев', 'виолончело', 'Люлин')
('Ганев', 'цигулка', 'Средец')

Последните ръчни операции можехме да си ги спестим като напишем функция, която ги прави, но в случая е по-бързо да ги направим на ръка.
peyo
Математик
 
Мнения: 1768
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 664

Re: СЪЖДЕНИЯ. ОПЕРАЦИИ СЪС СЪЖДЕНИЯ. СЪЖДИТЕЛЕН ИЗРАЗ

Мнениеот adilepomakova » 22 Яну 2022, 12:05

Благодаря , може ли решение на другата задача?
adilepomakova
Нов
 
Мнения: 16
Регистриран на: 22 Ное 2021, 20:54
Рейтинг: 2

Re: СЪЖДЕНИЯ. ОПЕРАЦИИ СЪС СЪЖДЕНИЯ. СЪЖДИТЕЛЕН ИЗРАЗ

Мнениеот adilepomakova » 22 Яну 2022, 13:13

Благодаря , може ли решение на другата задача?
adilepomakova
Нов
 
Мнения: 16
Регистриран на: 22 Ное 2021, 20:54
Рейтинг: 2

Re: СЪЖДЕНИЯ. ОПЕРАЦИИ СЪС СЪЖДЕНИЯ. СЪЖДИТЕЛЕН ИЗРАЗ

Мнениеот peyo » 23 Яну 2022, 09:16

adilepomakova написа:Задача 2. На един лагер в едно бунгало били настанени Алексей, Борис, Валери и Григор. При запознанството се оказало, че те са в различни класове – пети, шести, седми и осми и всеки от тях има едно от хобитата: шах, нумизматика, ски, фотография. Знае се, че:
1) Алексей и фотографът са от едно училище;
2) Борис и фотографът са дошли в лагера след другите;
3) Нумизматикът и петокласникът живеят в един град;
4) Валери и осмокласникът са ходили сутринта на поход;
5) Вечерта Борис и седмокласникът играли карти с Валери и скиора;
6) Григор е по-млад от фотографа;
7) Алексей е по-стар от Валери, а шахматистът е по-стар от Алексей;
8) В неделя Алексей и скиорът участвали в състезание, на което осмокласникът бил рефер, а фотографът бил болен.
Да се определи кой в кой клас е и какво е неговото хоби.


Код: Избери целия код
from itertools import product

имена =  "Алексей, Борис, Валери, Григор".split(", ")
класове = (5,6,7,8)
хобита = "шах, нумизматика, ски, фотография".split(", ")

S = set( x for x in product(имена,класове,хобита))
print(len(S))

#1) Алексей и фотографът са от едно училище;
S -= set( x for x in S if ("Алексей" in x and "фотография" in x))

#2) Борис и фотографът са дошли в лагера след другите;
S -= set( x for x in S if ("Борис" in x and "фотография" in x))

#3) Нумизматикът и петокласникът живеят в един град;
S -= set( x for x in S if ("нумизматика" in x and 5 in x))

#4) Валери и осмокласникът са ходили сутринта на поход;
S -= set( x for x in S if ("Валери" in x and 8 in x))

#5) Вечерта Борис и седмокласникът играли карти с Валери и скиора;
S -= set( x for x in S if ("Борис" in x and 7 in x) or ("Борис" in x and "ски" in x))
S -= set( x for x in S if ("Валери" in x and 7 in x) or ("Валери" in x and "ски" in x))

#6) Григор е по-млад от фотографа;
S -= set( x for x in S if ("Григор" in x and "фотография" in x) or ("Григор" in x and 8 in x))
S -= set( x for x in S if ("фотография" in x and 5 in x))

#7) Алексей е по-стар от Валери, а шахматистът е по-стар от Алексей;
S -= set( x for x in S if ("Алексей" in x and "шах" in x) or ("Валери" in x and "шах" in x))
S -= set( x for x in S if ("Алексей" in x and 5 in x) or ("Алексей" in x and 8 in x) \
   or ("Валери" in x and 8 in x) or ("Валери" in x and 7 in x))
S -= set( x for x in S if ("шах" in x and 5 in x) or ("шах" in x and 6 in x))

#8) В неделя Алексей и скиорът участвали в състезание, на което осмокласникът бил рефер, а фотографът бил болен.
S -= set( x for x in S if ("Алексей" in x and "ски" in x) or ("Алексей" in x and 8 in x) \
   or ("Алексей" in x and "фотография" in x))

S


Out[69]:
{('Алексей', 6, 'нумизматика'),
('Алексей', 7, 'нумизматика'),
('Борис', 6, 'нумизматика'),
('Борис', 8, 'нумизматика'),
('Борис', 8, 'шах'),
('Валери', 6, 'нумизматика'),
('Валери', 6, 'фотография'),
('Григор', 5, 'ски'),
('Григор', 6, 'нумизматика'),
('Григор', 6, 'ски'),
('Григор', 7, 'нумизматика'),
('Григор', 7, 'ски'),
('Григор', 7, 'шах')}

Ok, разкарахме доста, но не остана само един ред за човек. Но аз не съм кодирал всичко, а именно "шахматистът е по-стар от Алексей" липсва в програмата. Да погледнем! Алексей може да е самоп 6 или 7-ми клас, значи шахматиста е 8-ми клас, а това може да е само Борис и така остава:

{('Алексей', 6, 'нумизматика'),
('Алексей', 7, 'нумизматика'),
('Борис', 8, 'шах'),
('Валери', 6, 'нумизматика'),
('Валери', 6, 'фотография'),
('Григор', 5, 'ски'),
('Григор', 6, 'нумизматика'),
('Григор', 6, 'ски'),
('Григор', 7, 'нумизматика'),
('Григор', 7, 'ски'),

Забелязваме, че остана само един фотограф и това е Валери и само един 5-класник Григор, като махнем остава:

('Алексей', 7, 'нумизматика'),
('Борис', 8, 'шах'),
('Валери', 6, 'фотография'),
('Григор', 5, 'ски'),
peyo
Математик
 
Мнения: 1768
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 664

Re: СЪЖДЕНИЯ. ОПЕРАЦИИ СЪС СЪЖДЕНИЯ. СЪЖДИТЕЛЕН ИЗРАЗ

Мнениеот adilepomakova » 24 Яну 2022, 18:16

Благодаря от сърце !
adilepomakova
Нов
 
Мнения: 16
Регистриран на: 22 Ное 2021, 20:54
Рейтинг: 2


Назад към Забавна математика



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)