рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдореЗрдВ рд╣рд░ рд░рд╡рд┐рд╡рд╛рд░ рдХреЛ рдордЬреЗрджрд╛рд░ рдХреНрд╡рд┐рдЬрд╝ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рдпрд╣ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
рдкрд╣реЗрд▓реА
рд╢реНрд░реА рдмреЛрдбреА рдХреЗ рд╣рддреНрдпрд╛рд░реЗ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдХрд╣рд╛рдБ рдерд╛ рдФрд░ рдХрдорд░реЗ рдореЗрдВ рдХреМрди рд╕реЗ рд╣рдерд┐рдпрд╛рд░ рдереЗред рд╕рдВрдХреЗрдд рдкреВрд░реЗ рдкреНрд░рд╢реНрдиреЛрддреНрддрд░реА рдореЗрдВ рдмрд┐рдЦрд░реЗ рд╣реБрдП рд╣реИрдВ (рдЖрдк рдкрд╣рд▓реЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рддрдм рддрдХ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рдЬрдм рддрдХ рдЖрдк рд╕рднреА рджрд╕ рдирд╣реАрдВ рдкрдврд╝рддреЗ)ред
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рдВрджрд┐рдЧреНрдзреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЛред рддреАрди рдкреБрд░реБрд╖ (рдЬреЙрд░реНрдЬ, рдЬреЙрди, рд░реЙрдмрд░реНрдЯ) рдФрд░ рддреАрди рдорд╣рд┐рд▓рд╛рдПрдВ (рдмрд╛рд░рдмрд░рд╛, рдХреНрд░рд┐рд╕реНрдЯреАрдирд╛, рдпреЛрд▓рд╛рдиреНрдбрд╛) рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдЕрд▓рдЧ рдХрдорд░реЗ (рдмрд╛рдерд░реВрдо, рдбрд╛рдЗрдирд┐рдВрдЧ рд░реВрдо, рдХрд┐рдЪрди, рд▓рд┐рд╡рд┐рдВрдЧ рд░реВрдо, рдкреЗрдВрдЯреНрд░реА, рдСрдлрд┐рд╕) рдореЗрдВ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдХрдорд░реЗ (рдмреИрдЧ, рдмрдиреНрджреВрдХ, рдЧреИрд╕, рдЪрд╛рдХреВ, рдЬрд╣рд░, рд░рд╕реНрд╕реА) рдореЗрдВ рд╕рдВрджрд┐рдЧреНрдз рд╣рдерд┐рдпрд╛рд░ рдкрд╛рдП рдЧрдПред рдкреНрд░рд╢реНрди: рд░рд╕реЛрдИ рдореЗрдВ рдХреМрди рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛?
- рдЯрд┐рдк 1. рд░рд╕реЛрдИ рдШрд░ рдореЗрдВ рдПрдХ рдЖрджрдореА рдХреЗ рд╕рд╛рде рди рддреЛ рд░рд╕реНрд╕реА рд╣реИ, рди рдЪрд╛рдХреВ рд╣реИ, рди рд╣реА рдмреИрдЧ рд╣реИред рд╣рдерд┐рдпрд╛рд░ рдмрдиреНрджреВрдХ рдирд╣реАрдВ рд╣реИред рдкреНрд░рд╢реНрди: рд░рд╕реЛрдИ рдореЗрдВ рдХреМрди рд╕реЗ рд╣рдерд┐рдпрд╛рд░ рдкрд╛рдП рдЧрдП?
- рд╕рдВрдХреЗрдд 2. рдмрд╛рд░рдмрд░рд╛ рдпрд╛ рддреЛ рдЕрдзреНрдпрдпрди рдореЗрдВ рдпрд╛ рдмрд╛рдерд░реВрдо рдореЗрдВ рд╣реИ, рдФрд░ рдпреЛрд▓рд╛рдиреНрдбрд╛ рджреЛ рдирд╛рдорд┐рдд рдХрдорд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╣реИред рдмрд╛рд░рдмрд░рд╛ рдиреЗ рдХрд┐рд╕ рдХрдорд░реЗ рдореЗрдВ рдкрд╛рдпрд╛?
- рдЯрд┐рдк 3. рдмреИрдЧ рд╡рд╛рд▓рд╛ рдЖрджрдореА рди рддреЛ рдмрд╛рд░рдмрд░рд╛ рд╣реИ рдФрд░ рди рд╣реА рдЬреЙрд░реНрдЬ, рдФрд░ рд╡рд╣ рди рддреЛ рдмрд╛рдерд░реВрдо рдореЗрдВ рдерд╛ рдФрд░ рди рд╣реА рдбрд╛рдЗрдирд┐рдВрдЧ рд░реВрдо рдореЗрдВред рдмреИрдЧ рдХрд┐рд╕рдХреЗ рдкрд╛рд╕ рдерд╛?
- рдЯрд┐рдк 4. рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рд░рд╕реНрд╕реА рдХреЗ рд╕рд╛рде рдПрдХ рдорд╣рд┐рд▓рд╛ рдорд┐рд▓реА рдереАред рд╡рд╣ рдХреМрди рд╣реИ?
- рдЯрд┐рдк 5. рд▓рд┐рд╡рд┐рдВрдЧ рд░реВрдо рдореЗрдВ рд╣рдерд┐рдпрд╛рд░ рдпрд╛ рддреЛ рдЬреЙрди рдпрд╛ рдЬреЙрд░реНрдЬ рдХрд╛ рд╣реИред рд▓рд┐рд╡рд┐рдВрдЧ рд░реВрдо рдореЗрдВ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рд╣рдерд┐рдпрд╛рд░?
- рдЯрд┐рдк 6. рднреЛрдЬрди рдХрдХреНрд╖ рдореЗрдВ рдХреЛрдИ рдЪрд╛рдХреВ рдирд╣реАрдВ рдерд╛ред рдЪрд╛рдХреВ рдХрд╣рд╛рдВ рдерд╛?
- рд╕рдВрдХреЗрдд 7. рдпреЛрд▓рд╛рдиреНрдбрд╛ рдЗрди рдХрдорд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣рдерд┐рдпрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рди рддреЛ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рдерд╛ рдФрд░ рди рд╣реА рдкреИрдВрдЯреНрд░реА рдореЗрдВред рдпреЛрд▓рд╛рдиреНрдбрд╛ рдХреЗ рдкрд╛рд╕ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рд╣рдерд┐рдпрд╛рд░ рд╣реИ?
- рдЯрд┐рдк 8. рдЬреЙрд░реНрдЬ рдХреЛ рдПрдХ рдмрдиреНрджреВрдХ рдорд┐рд▓реАред рдХреМрди рд╕рд╛ рдХрдорд░рд╛?
- рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╢реНрд░реА рдмреЙрдбреА рдХреЛ рдкреИрдВрдЯреНрд░реА рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрд╕ рдХрдорд░реЗ рдореЗрдВ рд╕рдВрджрд┐рдЧреНрдз рдПрдХ рд╣рддреНрдпрд╛рд░рд╛ рдерд╛ред рдпрд╣ рдХреМрди рд╣реИ?
рдореИрдВ рдРрд╕реА рдкрд╣реЗрд▓рд┐рдпреЛрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдкрд╣реЗрд▓реА рд╕реЗ) рдкрд░ рдЯреНрд░рдб рдХрд░рддрд╛ рд╣реВрдВред рд╡реЗ рдШрдВрдЯреЗ рдФрд░ рдШрдВрдЯреЗ рдХрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд▓реЗ рд╕рдХрддреЗ рдереЗ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрд▓реЙрдЧ рд╣рдореЗрд╢рд╛ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ! рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛ 101
SWI-Prolog рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
~> swipl Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 6.6.6) Copyright (c) 1990-2013 University of Amsterdam, VU Amsterdam SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Please visit http://www.swi-prolog.org for details. For help, use ?- help(Topic). or ?- apropos(Word). ?- write('Hello, World!'). Hello, World! true. ?- write('Hello,'), nl, write('world'). Hello, world true. ?- X is 3*4 + 2. X = 14.
swipl
- рдкреНрд░реЛрд▓реЛрдЧ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░write
рдХреЛ рдПрдХ рдлрд╝рдирдХрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ write/1
рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ 1 рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ (рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдирд╛рдо рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд░реНрд▓рд╛рдВрдЧ рдФрд░ рдЕрдореГрдд рдореЗрдВ рдПрдХ рд╣реА рдЕрд╡рдзрд╛рд░рдгрд╛)- рдПрдХ рдирдИ рд▓рд╛рдЗрди рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
nl
рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдХрдорд╛рдВрдб рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдХреЙрдорд╛ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ AND рдСрдкрд░реЗрдЯрд░ рдХреЛ рднреА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ
- рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдПрдХ рдЧрдгрд┐рддреАрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдкреАрдЫрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдЪрд░ рд░рд╛рдЬрдзрд╛рдиреА
X
рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, X
рдирд╣реАрдВ
рдЬреНрдЮрд╛рди рдХрд╛ рдЖрдзрд╛рд░
рдкреНрд░реЛрд▓реЙрдЧ рдХрд╛ рд╕рд╛рд░ рддрдереНрдпреЛрдВ рдХреЛ рдмрддрд╛рдиреЗ, рддрдереНрдпреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдирд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдореЗрдВ рд╣реИред
hello.pl
рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛:
friend(john, julia). friend(john, jack). friend(julia, sam). friend(julia, molly). loves(john, julia). loves(julia, sam). loves(sam, julia). male(brad). male(john). male(jim). male(alfred). female(marry). child(brad, alfred). child(john, jim). child(john, marry).
- рд╣рдо рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
[hello].
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ [hello].
: рдЕрдВрдд рдореЗрдВ рдмрд┐рдВрджреБ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ listing
рдЬреНрдЮрд╛рди рдХреЗ рдЖрдзрд╛рд░ рдореЗрдВ рд╕рднреА рддрдереНрдпреЛрдВ рдХреЛ listing
рдХрд░рддреА рд╣реИ
?- [hello]. % hello compiled 0.00 sec, 3 clauses true. ?- listing(friend). friend(john, julia). friend(john, jack). friend(julia, sam). friend(julia, molly). true. ?- listing(loves). loves(john, julia). loves(julia, sam). loves(sam, julia). true.
рддрдереНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз
рдЬреНрдЮрд╛рди рдХреЗ рдЖрдзрд╛рд░ рдореЗрдВ рддрдереНрдпреЛрдВ рдХреЛ рдмрддрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддрдереНрдпреЛрдВ рдХреА рд╕рдЪреНрдЪрд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╡рд╛рд▓ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЙрдирд╕реЗ рдХреНрдпрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
?- friend(john, julia). true . ?- friend(john, jack). true. ?- loves(john, julia). true. ?- loves(john, sam). false.
рд╣рдо рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреНрд░рд╢реНрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреЛ рдЬреЙрди рдХреЗ рд╕рд╛рде рджреЛрд╕реНрдд рд╣реИ рдпрд╛ рдЬреЛ рдЬреВрд▓рд┐рдпрд╛ рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред
?- friend(john, Who). Who = julia ; Who = jack.
?- listing(child). child(brad, alfred). child(john, jim). child(john, mary). true. ?- child(john, X). X = jim ; X = mary.
рдЬреЙрди рдлреНрд░реЗрдВрдбрдЬрд╝реЛрди рдореЗрдВ рд╣реИ?
рд╣рдордиреЗ рдЬреВрд▓рд┐рдпрд╛ (
friend(john, julia)
) рдХреЗ рд╕рд╛рде рдЬреЙрди рдХреА рджреЛрд╕реНрддреА рд╕реНрдерд╛рдкрд┐рдд рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬреВрд▓рд┐рдпрд╛ рдЬреЙрди рдХреЗ рд╕рд╛рде рджреЛрд╕реНрдд рд╣реИрдВ: рдЖрдкрдХреЛ рдПрдХ рдФрд░ рддрдереНрдп
friend(julia, john)
рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╣рдордиреЗ рдпрд╣ рднреА рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕рдХреЗ рдмрдЪреНрдЪреЗ рд╣реИрдВ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЛрдб рдХреА рдирдХрд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдмрдЪреНрдЪреЗ рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
child(brad, alfred). child(john, jim). child(john, mary). parent(alfred, brad). parent(jim, john). parent(mary, john).
рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рджреЛрд╣рд░рд╛рд╡ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ:
rule :- stmt1, stmt2,...
рдпрджрд┐ рд╕рднреА рдЖрдВрддрд░рд┐рдХ рдХрдерди рд╕рддреНрдп рд╣реИрдВ (рд╕реВрдЪреАрдмрджреНрдз рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕реЗ рдореБрдбрд╝рд╛ рд╣реБрдЖ) рддреЛ рдпрд╣ рдирд┐рдпрдо рд╕рд╣реА рд╣реИред
friend(X, Y) :- friend(Y,X). parent(X, Y) :- child(Y,X). father(X, Y) :- child(Y,X), male(X). mother(X, Y) :- child(Y,X), female(X). friendzoned(X) :- loves(X, Y), \+ loves(Y,X).
friend(X,Y)
friend(Y,X
рд▓рд┐рдП рд╕рд╣реА рд╣реИ friend(Y,X
)- рдЬрдм
child(Y,X)
рддреЛ parent(X,Y)
рд╕рд╣реА рд╣реЛрддрд╛ child(Y,X)
father(X,Y)
parent(X,Y)
рдФрд░ male(X)
mother(X,Y)
рддрдм рд╕рд╣реА рд╣реЛрддреА рд╣реИ рдЬрдм parent(X,Y)
рдФрд░ female(X)
friendzoned(X)
рд╕рд╣реА рд╣реИ рдпрджрд┐ X SOMEONE Y
рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ SOMEONE Y
рдФрд░ Y, X рд╕реЗ рдкреНрдпрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ (рдиреЛрдЯрд┐рд╕ рд╣рд┐рдбрди рд╡реЗрд░рд┐рдПрдмрд▓ Y?)
?- friend(julia, john). true . ?- male(jim). true. ?- parent(jim,X). X = john. ?- father(jim, X). X = john. ?- mother(X, john). X = marry. ?- mother(marry,X). X = john. ?- mother(marry, john). true. ?- loves(julia, X). X = sam. ?- friendzoned(julia). false. ?- friendzoned(john). true.
рдареАрдХ рд╣реИ, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬреНрдЮрд╛рди рд╣реИред рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд░рдВрдЧ рдкрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
рдХрд╛рд░реНрдб рдХрд╛ рд░рдВрдЧ
рдЖрдЗрдП рдЬрд╛рдиреЗ-рдкрд╣рдЪрд╛рдиреЗ рдЧрдгрд┐рддреАрдп рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдирд┐рдХрдЯрд╡рд░реНрддреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдорд╛рди рд░рдВрдЧ рди рд╣реЛред
рдЗрд╕рд▓рд┐рдП, рддрд░реНрдХ рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрди рдЪреАрдЬреЗрдВ рд╣реИрдВ:
- рдЪрд░ рд╡реЗ рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд░рдВрдЧ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: рдП, рдмреА, рд╕реА, рдбреА, рдИред
- рдбреЛрдореЗрди - рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрд┐рд╕реЗ рдЪрд░ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд▓рд╛рд▓, рдиреАрд▓рд╛, рд╣рд░рд╛ред
- рд╕реАрдорд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрд╕рдиреНрди рдХреНрд╖реЗрддреНрд░ рд╕рдорд╛рди рд░рдВрдЧ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред
рдбреЛрдореЗрди
рд╣рдорд╛рд░реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдбреЛрдореЗрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ (рд▓рд╛рд▓, рд╣рд░рд╛, рдиреАрд▓рд╛)ред
color(red). color(green). color(blue).
рд╡рд╣ рд╕рдм рд╣реИред
рд╣рдо рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкреВрдЫрддреЗ рд╣реИрдВ
colorify(A,B,C,D,E) :- color(A), color(B), color(C), color(D), color(E), \+ A=B, \+ A=C, \+ A=D, \+ A=E, \+ B=C, \+ C=D, \+ D=E.
рдпрд╣рд╛рдВ рд╣рдо рд╕рдорд╛рдзрд╛рди рдХреЛ рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкрд╛рдВрдЪ рдЪрд░ рдП, рдмреА, рд╕реА, рдбреА, рдИ, рдФрд░ рдирд┐рдпрдо рдХреЗ рдЕрдВрджрд░ рд╣рдо рдЪрд░ рдХреЗ рд▓рд┐рдП рдбреЛрдореЗрди рд░рдВрдЧ (рд▓рд╛рд▓, рдиреАрд▓рд╛, рд╣рд░рд╛) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддрд┐рдмрдВрдз рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдП, рдмреА рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИ, рд╕реА рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИ ... рдФрд░ рдЯреАред рдбреАред
\+ X=Y
рдЕрд░реНрде рд╣реИ рдХрд┐ X, Y рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИ
рдкреНрд░реЛрд▓реЙрдЧ рддрдм рддрдХ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рд╡рд╣ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдвреВрдВрдврддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рдпрдо рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред
?- [mapcoloring] | . true. ?- colorify(A,B,C,D,E) | . A = red, B = D, D = green, C = E, E = blue ; A = red, B = D, D = blue, C = E, E = green ; A = green, B = D, D = red, C = E, E = blue ; A = green, B = D, D = blue, C = E, E = red ; A = blue, B = D, D = red, C = E, E = green ; A = blue, B = D, D = green, C = E, E = red
color(red). color(green). color(blue). colorify(A,B,C,D,E) :- color(A), color(B), color(C), color(D), color(E), \+ A=B, \+ A=C, \+ A=D, \+ A=E, \+ B=C, \+ C=D, \+ D=E.
... рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣рд╛рдВ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рд░рдВрдЧ рдирд╣реАрдВ рд░рд╣реЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╣рддреНрдпрд╛рд░реЗ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╣рддреНрдпрд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рдВрджрд┐рдЧреНрдзреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЛред рддреАрди рдкреБрд░реБрд╖ (рдЬреЙрд░реНрдЬ, рдЬреЙрди, рд░реЙрдмрд░реНрдЯ) рдФрд░ рддреАрди рдорд╣рд┐рд▓рд╛рдПрдВ (рдмрд╛рд░рдмрд░рд╛, рдХреНрд░рд┐рд╕реНрдЯреАрдирд╛, рдпреЛрд▓рд╛рдиреНрдбрд╛) рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдЕрд▓рдЧ рдХрдорд░реЗ (рдмрд╛рдерд░реВрдо, рдбрд╛рдЗрдирд┐рдВрдЧ рд░реВрдо, рдХрд┐рдЪрди, рд▓рд┐рд╡рд┐рдВрдЧ рд░реВрдо, рдкреЗрдВрдЯреНрд░реА, рдСрдлрд┐рд╕) рдореЗрдВ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдХрдорд░реЗ (рдмреИрдЧ, рдмрдиреНрджреВрдХ, рдЧреИрд╕, рдЪрд╛рдХреВ, рдЬрд╣рд░, рд░рд╕реНрд╕реА) рдореЗрдВ рд╕рдВрджрд┐рдЧреНрдз рд╣рдерд┐рдпрд╛рд░ рдкрд╛рдП рдЧрдПред
рд░рд╕реЛрдИ рдореЗрдВ рдХреМрди рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛?
рдбреЛрдореЗрди
рдЗрд╕рд╕реЗ рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╛рдБрдЪ рдбреЛрдореЗрди рд╣реИрдВ:
man
,
woman
,
person
рдпрд╛ рд╕рдВрджрд┐рдЧреНрдз,
location
рдФрд░
weapons
, рдФрд░ рд╣рдорд╛рд░реЗ рдЪрд░ (рдП, рдмреА, рд╕реА, рдбреА, рдИ, рдПрдл) рджреЛрдиреЛрдВ рд╡реНрдпрдХреНрддрд┐, рд╕реНрдерд╛рди рдФрд░ рд╣рдерд┐рдпрд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ рдХреБрдЫ рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреЛ рдЖрдЧрд╛рдореА рд╕реБрдЭрд╛рд╡реЛрдВ рдореЗрдВ рдкреНрд░рдХрдЯ рдХреА рдЬрд╛рдПрдВрдЧреАред
man(george). man(john). man(robert). woman(barbara). woman(christine). woman(yolanda). person(X):- man(X). person(X):- woman(X). location(bathroom). location(dining). location(kitchen). location(livingroom). location(pantry). location(study). weapon(bag). weapon(firearm). weapon(gas). weapon(knife). weapon(poison). weapon(rope).
uniq_ppl
рдирд┐рдпрдо рд╣рдорд╛рд░реЗ рдЪрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рдорд╛рди рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
uniq_ppl(A,B,C,D,E,F):- person(A), person(B), person(C), person(D), person(E), person(F), \+A=B, \+A=C, \+A=D, \+A=E, \+A=F, \+B=C, \+B=D, \+B=E, \+B=F, \+C=D, \+C=E, \+C=F, \+D=E, \+D=F, \+E=F.
рдирд┐рд░реНрдгрдп
рд╣рдо рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЕрджреНрд╡рд┐рддреАрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╣рддреНрдпрд╛рд░реЗ рдХреЗ рд╢рд╛рд╕рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╣рдерд┐рдпрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреВрдареЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдм рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╣рдерд┐рдпрд╛рд░ рд╣реИрдВ
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдЫрд╣ рд╕рдВрджрд┐рдЧреНрдз рд╣реИрдВред
рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
murderer(X) :- uniq_ppl(Bathroom, Dining, Kitchen, Livingroom, Pantry, Study), uniq_ppl(Bag, Firearm, Gas, Knife, Poison, Rope),
рдЪрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХрд┐ рдмрд╛рдерд░реВрдо, рдбрд╛рдЗрдирд┐рдВрдЧ рд░реВрдо, рдЖрдЧреНрдиреЗрдпрд╛рд╕реНрддреНрд░, рдЧреИрд╕, рд╣рдо рддреБрд░рдВрдд рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
- рдмрд╛рдерд░реВрдо - рдпрд╣ рдмрд╛рдерд░реВрдо рдореЗрдВ рдПрдХ рд╣реА рд╕рдВрджрд┐рдЧреНрдз (рдкреБрд░реБрд╖ рдпрд╛ рдорд╣рд┐рд▓рд╛) рд╣реИ
- рдЖрдЧреНрдиреЗрдпрд╛рд╕реНрддреНрд░ - рдпрд╣ рдПрдХ рдЖрдЧреНрдиреЗрдпрд╛рд╕реНрддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдВрджрд┐рдЧреНрдз (рдкреБрд░реБрд╖ рдпрд╛ рдорд╣рд┐рд▓рд╛) рд╣реИ
- рдФрд░ рдЗрддрдиреЗ рдкрд░ ... рдЖрдк рдЗрд╕реЗ рдЧреНрд░рд┐рдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЕрдм рд╣рдо
murderer
рд╢рд╛рд╕рди рдореЗрдВ рдЕрдВрддрд┐рдо рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХреЗ рдмрд╛рдж рдкреНрд░рддрд┐рдмрдВрдз рдЬреЛрдбрд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
рдЯрд┐рдк 1
рд░рд╕реЛрдИ рдореЗрдВ рдПрдХ рдЖрджрдореА рдХреЗ рд╕рд╛рде рдХреЛрдИ рд░рд╕реНрд╕реА, рдЪрд╛рдХреВ рдпрд╛ рдмреИрдЧ рдирд╣реАрдВ рд╣реИред рд╣рдерд┐рдпрд╛рд░ рдмрдиреНрджреВрдХ рдирд╣реАрдВ рд╣реИред рд░рд╕реЛрдИ рдореЗрдВ рдХреМрди рд╕реЗ рд╣рдерд┐рдпрд╛рд░ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ?
% 2. Clue 1: The man in the kitchen was not found with the rope, knife, or bag. % Which weapon, then, which was not the firearm, was found in the kitchen? man(Kitchen), \+Kitchen=Rope, \+Kitchen=Knife, \+Kitchen=Bag, \+Kitchen=Firearm,
рдпрд╣рд╛рдВ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐
Kitchen
рдЪрд░
man
рдХреЗ рддрдереНрдп (рд╣рдорд╛рд░реЗ рдбреЛрдореЗрди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд) рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд░рд╕реЛрдИ рдореЗрдВ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рдЙрд╕рдХреЗ рдкрд╛рд╕ рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдирд╣реАрдВ рд╣реИ:
Rope
,
Knife
,
Bag
,
Firearm
ред
рд╕рдВрдХреЗрдд реи
рд╕рдВрдХреЗрдд 2. рдмрд╛рд░рдмрд░рд╛ рдпрд╛ рддреЛ рдЕрдзреНрдпрдпрди рдореЗрдВ рдпрд╛ рдмрд╛рдерд░реВрдо рдореЗрдВ рд╣реИ, рдФрд░ рдпреЛрд▓рд╛рдиреНрдбрд╛ рджреЛ рдирд╛рдорд┐рдд рдХрдорд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╣реИред рдмрд╛рд░рдмрд░рд╛ рдиреЗ рдХрд┐рд╕ рдХрдорд░реЗ рдореЗрдВ рдкрд╛рдпрд╛?
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рдФрд░ рдмрд╛рдерд░реВрдо рдореЗрдВ рдПрдХ
woman
рд╣реИ, рдФрд░ рдпрд╣ рдХреНрд░рд┐рд╕реНрдЯреАрдирд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рдо рдмрд╛рд░рдмрд░рд╛ рдФрд░ рдпреЛрд▓рд╛рдиреНрдбрд╛ (рд░рд╕реЛрдИ, рднреЛрдЬрди рдХрдХреНрд╖, рд▓рд┐рд╡рд┐рдВрдЧ рд░реВрдо, рдкреЗрдВрдЯреНрд░реА) рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рднреА рдкрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
% % 3. Clue 2: Barbara was either in the study or the bathroom; Yolanda was in the other. % % Which room was Barbara found in? woman(Bathroom), woman(Study), \+christine=Bathroom, \+christine=Study, \+barbara=Dining, \+barbara=Kitchen, \+barbara=Livingroom, \+barbara=Pantry,
рдЯрд┐рдк 3
рдмреИрдЧ рд╡рд╛рд▓рд╛ рдЖрджрдореА рди рддреЛ рдмрд╛рд░рдмрд░рд╛ рд╣реИ рдФрд░ рди рд╣реА рдЬреЙрд░реНрдЬ, рдФрд░ рд╡рд╣ рди рддреЛ рдмрд╛рдерд░реВрдо рдореЗрдВ рдерд╛ рдФрд░ рди рд╣реА рдбрд╛рдЗрдирд┐рдВрдЧ рд░реВрдо рдореЗрдВред рдмреИрдЧ рдХрд┐рд╕рдХреЗ рдкрд╛рд╕ рдерд╛?
% % 4. Clue 3: The person with the bag, who was not Barbara nor George, was not in the bathroom nor the dining room. % % Who had the bag in the room with them? \+barbara=Bag, \+george=Bag, \+Bag=Bathroom, \+Bag=Dining,
рдЯрд┐рдк 4
рдСрдлрд┐рд╕ рдореЗрдВ рд░рд╕реНрд╕реА рд╡рд╛рд▓реА рдорд╣рд┐рд▓рд╛ рдорд┐рд▓реАред рд╡рд╣ рдХреМрди рд╣реИ?
% % 5. Clue 4: The woman with the rope was found in the study. % % Who had the rope? woman(Rope), Rope=Study,
рдЯрд┐рдк 5
рдЯрд┐рдк 5. рд▓рд┐рд╡рд┐рдВрдЧ рд░реВрдо рдореЗрдВ рд╣рдерд┐рдпрд╛рд░ рдпрд╛ рддреЛ рдЬреЙрди рдпрд╛ рдЬреЙрд░реНрдЬ рдХрд╛ рд╣реИред рд▓рд┐рд╡рд┐рдВрдЧ рд░реВрдо рдореЗрдВ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рд╣рдерд┐рдпрд╛рд░?
man in Livingroom Livingroom isn't robert % % 6. Clue 5: The weapon in the living room was found with either John or George. % % What weapon was in the living room? man(Livingroom), \+Livingroom=robert,
рдЯрд┐рдк 6
рднреЛрдЬрди рдХрдХреНрд╖ рдореЗрдВ рдЪрд╛рдХреВ рдирд╣реАрдВ рдерд╛ред рдЪрд╛рдХреВ рдХрд╣рд╛рдВ рдерд╛?
% % 7. Clue 6: The knife was not in the dining room. % % So where was the knife? \+Knife=Dining,
рдЯрд┐рдк 7
рд╕рдВрдХреЗрдд 7. рдпреЛрд▓рд╛рдиреНрдбрд╛ рди рддреЛ рдСрдлрд┐рд╕ рдореЗрдВ рдерд╛ рдФрд░ рди рд╣реА рдкреИрдВрдЯреНрд░реА рдореЗрдВред рдпреЛрд▓рд╛рдиреНрдбрд╛ рдХреЗ рдХрдорд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣рдерд┐рдпрд╛рд░ рд╣реИ?
% % 8. Clue 7: Yolanda was not with the weapon found in the study nor the pantry. % % What weapon was found with Yolanda? \+yolanda=Pantry, \+yolanda=Study,
рдЯрд┐рдк 8
рдЬреЙрд░реНрдЬ рдХреЛ рдПрдХ рдмрдиреНрджреВрдХ рдорд┐рд▓реАред
% % 9. Clue 8: The firearm was in the room with George. % % In which room was the firearm found? Firearm=george,
рдЯрд┐рдк 9
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╢реНрд░реА рдмреЙрдбреА рдХреЛ рдкреИрдВрдЯреНрд░реА рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрд╕ рдХрдорд░реЗ рдореЗрдВ рд╕рдВрджрд┐рдЧреНрдз рдПрдХ рд╣рддреНрдпрд╛рд░рд╛ рдерд╛ред рд╡рд╣ рдХреМрди рд╣реИ?
% % 10. It was discovered that Mr. Boddy was gassed in the pantry. The suspect found in that room was the murderer. % % Who, then, do you point the finger towards? Pantry=Gas, Pantry=X, write("KILLER IS :"), write(X), nl, writeanswers(Bathroom, Dining, Kitchen, Livingroom, Pantry, Study, Bag, Firearm, Gas, Knife, Poison, Rope).
рдЧреИрд╕, рдкреЗрдВрдЯреНрд░реА рдФрд░ рд╣рддреНрдпрд╛рд░реЗ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░реЗрдВ, рдлрд┐рд░
writeanswers
write
рд▓рд┐рдП
write
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
writeanswers(Bathroom, Dining, Kitchen, Livingroom, Pantry, Study, Bag, Firearm, Gas, Knife, Poison, Rope):- write("Bathroom: "), write(Bathroom), nl, write("Dining: "), write(Dining), nl, write("Livingroom: "), write(Livingroom), nl, write("Pantry: "), write(Pantry), nl, write("Study: "), write(Study), nl, write("Kitchen: "), write(Kitchen), nl, write("Knife: "), write(Knife), nl, write("Gas: "), write(Gas), nl, write("Rope: "), write(Rope), nl, write("Bag: "), write(Bag), nl, write("Poison: "), write(Poison), nl, write("Firearm: "), write(Firearm), nl.
рд╣рддреНрдпрд╛рд░рд╛ рдХреМрди рд╣реИ?
?- [crime2]. true. ?- murderer(X). KILLER IS :christine Bathroom: yolanda Dining: george Livingroom: john Pantry: christine Study: barbara Kitchen: robert Knife: yolanda Gas: christine Rope: barbara Bag: john Poison: robert Firearm: george X = christine ;
рдпрд╣рд╛рдВ рдХреЛрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
рд╣реИ ред рдпрд╣ рд╢рд╛рдпрдж рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкреНрд░реЛрд▓реЙрдЧ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ :)