рдкреНрд░реЛрд▓реЙрдЧ рдкрд░ рд╣рддреНрдпрд╛рд░реЗ рдХреА рддрд▓рд╛рд╢

рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдореЗрдВ рд╣рд░ рд░рд╡рд┐рд╡рд╛рд░ рдХреЛ рдордЬреЗрджрд╛рд░ рдХреНрд╡рд┐рдЬрд╝ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рдпрд╣ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред

рдкрд╣реЗрд▓реА


рд╢реНрд░реА рдмреЛрдбреА рдХреЗ рд╣рддреНрдпрд╛рд░реЗ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдХрд╣рд╛рдБ рдерд╛ рдФрд░ рдХрдорд░реЗ рдореЗрдВ рдХреМрди рд╕реЗ рд╣рдерд┐рдпрд╛рд░ рдереЗред рд╕рдВрдХреЗрдд рдкреВрд░реЗ рдкреНрд░рд╢реНрдиреЛрддреНрддрд░реА рдореЗрдВ рдмрд┐рдЦрд░реЗ рд╣реБрдП рд╣реИрдВ (рдЖрдк рдкрд╣рд▓реЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рддрдм рддрдХ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рдЬрдм рддрдХ рдЖрдк рд╕рднреА рджрд╕ рдирд╣реАрдВ рдкрдврд╝рддреЗ)ред

  • рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рдВрджрд┐рдЧреНрдзреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЛред рддреАрди рдкреБрд░реБрд╖ (рдЬреЙрд░реНрдЬ, рдЬреЙрди, рд░реЙрдмрд░реНрдЯ) рдФрд░ рддреАрди рдорд╣рд┐рд▓рд╛рдПрдВ (рдмрд╛рд░рдмрд░рд╛, рдХреНрд░рд┐рд╕реНрдЯреАрдирд╛, рдпреЛрд▓рд╛рдиреНрдбрд╛) рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдЕрд▓рдЧ рдХрдорд░реЗ (рдмрд╛рдерд░реВрдо, рдбрд╛рдЗрдирд┐рдВрдЧ рд░реВрдо, рдХрд┐рдЪрди, рд▓рд┐рд╡рд┐рдВрдЧ рд░реВрдо, рдкреЗрдВрдЯреНрд░реА, рдСрдлрд┐рд╕) рдореЗрдВ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдХрдорд░реЗ (рдмреИрдЧ, рдмрдиреНрджреВрдХ, рдЧреИрд╕, рдЪрд╛рдХреВ, рдЬрд╣рд░, рд░рд╕реНрд╕реА) рдореЗрдВ рд╕рдВрджрд┐рдЧреНрдз рд╣рдерд┐рдпрд╛рд░ рдкрд╛рдП рдЧрдПред рдкреНрд░рд╢реНрди: рд░рд╕реЛрдИ рдореЗрдВ рдХреМрди рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛?
  • рдЯрд┐рдк 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. 

рдареАрдХ рд╣реИ, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬреНрдЮрд╛рди рд╣реИред рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд░рдВрдЧ рдкрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

рдХрд╛рд░реНрдб рдХрд╛ рд░рдВрдЧ


рдЖрдЗрдП рдЬрд╛рдиреЗ-рдкрд╣рдЪрд╛рдиреЗ рдЧрдгрд┐рддреАрдп рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдирд┐рдХрдЯрд╡рд░реНрддреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдорд╛рди рд░рдВрдЧ рди рд╣реЛред



рдЗрд╕рд▓рд┐рдП, рддрд░реНрдХ рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрди рдЪреАрдЬреЗрдВ рд╣реИрдВ:

  1. рдЪрд░ рд╡реЗ рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд░рдВрдЧ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: рдП, рдмреА, рд╕реА, рдбреА, рдИред
  2. рдбреЛрдореЗрди - рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрд┐рд╕реЗ рдЪрд░ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд▓рд╛рд▓, рдиреАрд▓рд╛, рд╣рд░рд╛ред
  3. рд╕реАрдорд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрд╕рдиреНрди рдХреНрд╖реЗрддреНрд░ рд╕рдорд╛рди рд░рдВрдЧ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред

рдбреЛрдореЗрди


рд╣рдорд╛рд░реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдбреЛрдореЗрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ (рд▓рд╛рд▓, рд╣рд░рд╛, рдиреАрд▓рд╛)ред

 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 ; 

рдпрд╣рд╛рдВ рдХреЛрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдпрд╣ рд╢рд╛рдпрдж рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкреНрд░реЛрд▓реЙрдЧ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ :)

Source: https://habr.com/ru/post/hi434172/


All Articles