• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Logika, zagadka

Fiszki IT
Fiszki IT
+1 głos
260 wizyt
pytanie zadane 7 maja 2019 w Matematyka, fizyka, logika przez ewamil Nowicjusz (130 p.)
edycja 7 maja 2019 przez ewamil
1. Na pewnej ulicy stoją dwa domy, jeden z nich jest czerwony, a drugi niebieski. W jednym domu mieszka Francuz, a w drugim Hiszpan. Jeden z nich ma psa, a drugi kota.

-Jeśli Hiszpan mieszka w pierwszym domu, to drugi dom jest niebieski.
-Francuz ma kota.
-Albo pierwszy dom jest niebieski, albo Francuz nie mieszka w pierwszym domu.
-Jesli kot mieszka w pierwszym domu, to pierwszy dom jest czerwony.

W którym domu mieszka Francuz?

Zamień podane zdania w wyrażenia logiczne i podaj rozwiązanie.

 

Nie wiem jak się za to zabrać, nie wiem, jak to przekształcić w wyrażenia logiczne, które potem będę rozwiązywać za pomocą tabeli prawdy
komentarz 7 maja 2019 przez kenjiro244 Dyskutant (8,600 p.)
Myśle że warto zacząć od poprawienia błędów :D
komentarz 7 maja 2019 przez ewamil Nowicjusz (130 p.)
przepraszam, mam niemiecką klawiaturę i czasami zapominam się. Już poprawiłam :)

3 odpowiedzi

+1 głos
odpowiedź 9 maja 2019 przez k222 Nałogowiec (29,230 p.)
Generalnie ważne jest, aby połączyć fakty i odpowiednio zaprzeczyć każde twierdzenie:

x w I domu mieszka Hiszpan (Francuz mieszka w II domu)
~x  I domu mieszka Francuz (Hiszpan mieszka w II domu)

y I dom jest niebieski (drugi jest czerwony)
~y I dom jest czerwony (drugi jest niebieski)

z kot mieszka w I domu (a pies w II)
~z pies mieszka w I domu

I teraz zdania:
Jeśli Hiszpan mieszka w pierwszym domu, to drugi dom jest niebieski.
x => ~y

Francuz ma kota (czyli kot i Francuz mieszkają w jednym domu)
x && ~z || ~x && z (&& -  koniunkcja, || - alternatywa)
(pomyśl czy można zapisać ten warunek jako po prostu x && ~z)

...

Dwa pozostałe wymyśl sam, poza tym prawa logiki, de Morgana, trzeba poprzekształcać i ładnie powinno wyjść
0 głosów
odpowiedź 10 maja 2019 przez Mateo13 Bywalec (2,360 p.)
edycja 10 maja 2019 przez Mateo13
EDITED

ja użyłem takiego psudokodu:

FR = kot, ES= pies

bo "Francuz ma kota"

następnie mamy :

2 instrukcje warunkowe:

IF ( ES && HOME1 ) HOME2 = blue

IF ( FR && HOME1 ) HOME1 = red

1 logiczne OR

HOME1 = blue || FR && HOME2

----------------------------------------------------------------------------------------------------

i teraz jesli FR && HOME2 miało być true to :

IF ( FR && HOME1 ) HOME1 = red - będzie false bo FR && HOME2 nie spełnia warunku w if

IF ( ES && HOME1 ) HOME2 = blue - ES && HOME1 daje true więc HOME2 = blue a HOME1 = red
 

i teraz jesli HOME1 = blue miało być true to :

IF ( FR && HOME1 ) HOME1 = red - będzie false

IF ( ES && HOME1 ) HOME2 = blue - też będzie false

czyli ani francuz ani hiszpan nie mogli by mieszkać w 1 domu, imo 0 logiki
komentarz 10 maja 2019 przez k222 Nałogowiec (29,230 p.)
Jak dla mnie to jest strasznie skomplikowany zapis jak na takie zadanko. No ale jak wolisz.

Btw. mi wyszła sensowna odpowiedź - Hiszpan z kotem mieszka w pierwszym, czerwonym domu, a Francuz z psem w drugim, niebieskim
komentarz 10 maja 2019 przez Mateo13 Bywalec (2,360 p.)
edycja 10 maja 2019 przez Mateo13
Ale co konkretnie jest skomplikowane, w zadaniu pisze Zamień podane zdania w wyrażenia logiczne.

W zadaniu masz napisane 'Francuz ma kota' a twoja odpowiedź to 'Francuz z psem w drugim, niebieskim', wtf?
komentarz 10 maja 2019 przez k222 Nałogowiec (29,230 p.)

Hiszpan z psem mieszka w pierwszym, czerwonym domu, a Francuz z kotem w drugim, niebieskim

 

Fakt, mój błąd. Ale tą metodą da się to chociaż rozwiązać, a twoją wychodzi sprzeczność, więc może "niepoprawna" to lepsze stwierdzenie niż "skomplikowana"  wink

komentarz 10 maja 2019 przez Mateo13 Bywalec (2,360 p.)
już zedytowałem i też wychodzi true dla FR && HOME2 i IF ( ES && HOME1 ) HOME2 = blue - ES && HOME1 daje true więc HOME2 = blue a HOME1 = red

to było potchwitliwe bo jeśli statement ( FR && HOME1 ) daje true to HOME1 = red a ten statement daje false a dalej HOME1 = red bo ten statement się skipuje przecież

zrobiłem 1 błąd
0 głosów
odpowiedź 10 maja 2019 przez jankustosz1 Nałogowiec (30,160 p.)

Moim zdaniem najprościej jest zrobić z tego drzewo. I rozgałęzienia przy każdym przypadku. Jeżeli dany przypadek nie jest prawdziwy to wcześniej czy później jakieś stwierdzenie powinno być sprzeczne

Akurat w tym przypadku, było tylko jedno rozgałęzienie i trochę słabo to widać, bo reszta stwierdzeń była do zaprzeczenia konkretnych odnóg.

komentarz 10 maja 2019 przez Mateo13 Bywalec (2,360 p.)
"Jesli kot mieszka w pierwszym domu, to pierwszy dom jest czerwony"

Kot mieszka w 2 domu a pierwszy dom i tak jest czerwony?

Rozumiem że jeśli statement "Jesli kot mieszka w pierwszym domu" jest false to kod po jego prawej stronie się nie eval-uje ale dalej może być true?

Bo jeśli tak to rzeczywiście jest to prawidłowe rozwiązanie
komentarz 11 maja 2019 przez jankustosz1 Nałogowiec (30,160 p.)
Kot mieszka w pierwszym domu, a pierwszy dom jest niebieski zamiast czerwonego, dlatego ten statement jest false.

Podobne pytania

+8 głosów
1 odpowiedź 292 wizyt
pytanie zadane 6 października 2019 w Nasze projekty przez Leaf Początkujący (270 p.)
0 głosów
0 odpowiedzi 1,053 wizyt
0 głosów
0 odpowiedzi 55 wizyt
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

84,835 zapytań

133,644 odpowiedzi

296,137 komentarzy

56,080 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...