<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wikiru.visual-prolog.com/index.php?action=history&amp;feed=atom&amp;title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5</id>
	<title>Учебный Проект. Релиз 5 - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wikiru.visual-prolog.com/index.php?action=history&amp;feed=atom&amp;title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5"/>
	<link rel="alternate" type="text/html" href="https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;action=history"/>
	<updated>2026-04-22T10:10:18Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2575&amp;oldid=prev</id>
		<title>Victor Yukhtenko в 13:21, 31 марта 2011</title>
		<link rel="alternate" type="text/html" href="https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2575&amp;oldid=prev"/>
		<updated>2011-03-31T13:21:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия 15:21, 31 марта 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l15&quot;&gt;Строка 15:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 15:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|open=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|open=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Polyline1_10Open|project=&amp;#039;&amp;#039;&amp;#039;Examples\Polyline\&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Polyline1&lt;/del&gt;\Polyline5.prj&amp;#039;&amp;#039;&amp;#039;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Polyline1_10Open|project=&amp;#039;&amp;#039;&amp;#039;Examples\Polyline\&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Polyline5&lt;/ins&gt;\Polyline5.prj&amp;#039;&amp;#039;&amp;#039;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Polyline1-06Copy_Paste}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Polyline1-06Copy_Paste}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Victor Yukhtenko</name></author>
	</entry>
	<entry>
		<id>https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2552&amp;oldid=prev</id>
		<title>Victor Yukhtenko в 12:46, 28 марта 2011</title>
		<link rel="alternate" type="text/html" href="https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2552&amp;oldid=prev"/>
		<updated>2011-03-28T12:46:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия 14:46, 28 марта 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l780&quot;&gt;Строка 780:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 780:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end implement humanInterface&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end implement humanInterface&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/vip&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/vip&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|enver=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|enver=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[en:Game Polyline. release 5]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[en:Game Polyline. release 5]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Victor Yukhtenko</name></author>
	</entry>
	<entry>
		<id>https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2546&amp;oldid=prev</id>
		<title>Victor Yukhtenko в 19:59, 26 марта 2011</title>
		<link rel="alternate" type="text/html" href="https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2546&amp;oldid=prev"/>
		<updated>2011-03-26T19:59:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия 21:59, 26 марта 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;copyright}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;PolylineTemplateRu&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|goal=&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Демонстрация свойств языка Visual Prolog и простейших приемов программирования.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Очередная версия Учебного проекта, функциональной идеей которого является простая игра.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|goalContent=&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;code&lt;/ins&gt;=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Игра &amp;quot;Ползунок&amp;quot;. Правила игры&lt;/del&gt;|&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Правила игры ...]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Cтратегия игры компьютера изменена, что отразилось &lt;/ins&gt;на &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;поведении программы.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|functionality&lt;/ins&gt;=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==Цель=&lt;/del&gt;=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Изменена стратегия &lt;/ins&gt;игры компьютера:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Демонстрация приемов программирования &lt;/del&gt;на &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;языке Visual Prolog, в том числе:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** делается прогноз результата на K шагов вперед. Если ход безопасный (не ведет к проигрышу за K шагов), то этот ход делается&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* использование механизма наследования&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** в случае отсутствия безопасного хода следующий ход выбирается случайно (возможно, крайне неудачным)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Параметр глубины прогноза устанавливается интерактивно&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==Особенности Release 5=&lt;/del&gt;=  &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Внесены изменения в стратегию &lt;/del&gt;игры компьютера:&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** делается прогноз результата на K шагов вперед. Если ход безопасный (не ведет к проигрышу за K шагов), то этот ход делается&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** в случае отсутствия безопасного хода следующий ход выбирается случайно (возможно, крайне неудачным)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Параметр глубины прогноза устанавливается интерактивно&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Размер поля, установленный равным 10 в коде, теперь принципиально не ограничивается.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Размер поля, установленный равным 10 в коде, теперь принципиально не ограничивается.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|install={{PolylineInstall}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Установка==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|open&lt;/ins&gt;=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Создать проект с пользовательским интерфейсом типа console&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Polyline1_10Open|project&lt;/ins&gt;=&amp;#039;&amp;#039;&amp;#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Examples\Polyline\Polyline1\Polyline5&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;prj&lt;/ins&gt;&amp;#039;&amp;#039;&amp;#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* В построенном проекте заменить полностью код файла &amp;quot;main.pro&amp;quot; кодом, предложенным ниже (&lt;/del&gt;&amp;#039;&amp;#039;&amp;#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;только VIP 7&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2&lt;/del&gt;&amp;#039;&amp;#039;&amp;#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* При построении проекта ответить на предложение о включении дополнительных пакетов в проект &amp;quot;Add All&amp;quot;. &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Polyline1-06Copy_Paste}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|run=Запуск приложения из среды по &#039;&#039;&#039;E&#039;&#039;&#039; или запустить исполняемое приложение из директории EXE.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;vip&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;vip&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/****************************************************&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/****************************************************&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;VIP 7.2&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Copyright (c) &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Victor Yukhtenko&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Copyright (c) &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2007-2008 Prolog Development Center SPb&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SpbSolutions/Examples/Polyline&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SpbSolutions/Examples/Polyline&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l38&quot;&gt;Строка 38:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 34:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     successfulStep&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     successfulStep&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;modified&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;modified&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Written by: Victor Yukhtenko                        &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*****************************************************/&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*****************************************************/&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;goal&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;goal&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l680&quot;&gt;Строка 680:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 674:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     announceLine_C=starterLine_C+1.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     announceLine_C=starterLine_C+1.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     actionLine_C=announceLine_C+1.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     actionLine_C=announceLine_C+1.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    polylineLine_C=actionLine_C+1.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;clauses&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;clauses&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l788&quot;&gt;Строка 788:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 781:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end implement humanInterface&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end implement humanInterface&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/vip&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/vip&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==Ссылки=&lt;/del&gt;=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|enver&lt;/ins&gt;=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Category&lt;/del&gt;:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Проекты&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;en&lt;/ins&gt;:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Game Polyline. release 5&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Игры]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Victor Yukhtenko</name></author>
	</entry>
	<entry>
		<id>https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2436&amp;oldid=prev</id>
		<title>Victor Yukhtenko в 08:29, 27 мая 2010</title>
		<link rel="alternate" type="text/html" href="https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2436&amp;oldid=prev"/>
		<updated>2010-05-27T08:29:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия 10:29, 27 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{copyright}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Очередная версия Учебного проекта, функциональной идеей которого является простая игра.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Очередная версия Учебного проекта, функциональной идеей которого является простая игра.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Victor Yukhtenko</name></author>
	</entry>
	<entry>
		<id>https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2327&amp;oldid=prev</id>
		<title>Victor Yukhtenko: /* Ссылки */</title>
		<link rel="alternate" type="text/html" href="https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2327&amp;oldid=prev"/>
		<updated>2009-10-03T19:51:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Ссылки&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия 21:51, 3 октября 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l787&quot;&gt;Строка 787:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 787:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/vip&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/vip&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Ссылки==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Ссылки==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Примеры&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Проекты&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Игры]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Игры]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Victor Yukhtenko</name></author>
	</entry>
	<entry>
		<id>https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2304&amp;oldid=prev</id>
		<title>Victor Yukhtenko: /* Особенности Release 5 */</title>
		<link rel="alternate" type="text/html" href="https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2304&amp;oldid=prev"/>
		<updated>2009-10-02T18:12:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Особенности Release 5&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия 20:12, 2 октября 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l8&quot;&gt;Строка 8:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 8:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Особенности Release 5==  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Особенности Release 5==  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Компьютер делает &lt;/del&gt;прогноз результата на K шагов вперед. Если ход безопасный (не ведет к проигрышу за K шагов), то этот ход делается.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Внесены изменения в стратегию игры компьютера:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;В &lt;/del&gt;случае отсутствия безопасного хода следующий ход выбирается случайно (возможно, крайне неудачным).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** делается &lt;/ins&gt;прогноз результата на K шагов вперед. Если ход безопасный (не ведет к проигрышу за K шагов), то этот ход делается.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* в &lt;/ins&gt;случае отсутствия безопасного хода следующий ход выбирается случайно (возможно, крайне неудачным).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Параметр глубины прогноза устанавливается интерактивно.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Параметр глубины прогноза устанавливается интерактивно.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Размер поля, установленный равным 10 в коде, теперь принципиально не ограничивается.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Размер поля, установленный равным 10 в коде, теперь принципиально не ограничивается.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Victor Yukhtenko</name></author>
	</entry>
	<entry>
		<id>https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2303&amp;oldid=prev</id>
		<title>Victor Yukhtenko в 16:50, 2 октября 2009</title>
		<link rel="alternate" type="text/html" href="https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2303&amp;oldid=prev"/>
		<updated>2009-10-02T16:50:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия 18:50, 2 октября 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l7&quot;&gt;Строка 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 7:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* использование механизма наследования&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* использование механизма наследования&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Особенности Release &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;4&lt;/del&gt;==  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Особенности Release &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;5&lt;/ins&gt;==  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Компьютер делает прогноз результата на K шагов вперед. Если ход безопасный (не ведет к проигрышу за K шагов), то этот ход делается.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Компьютер делает прогноз результата на K шагов вперед. Если ход безопасный (не ведет к проигрышу за K шагов), то этот ход делается.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* В случае отсутствия безопасного хода следующий ход выбирается случайно (возможно, крайне неудачным).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* В случае отсутствия безопасного хода следующий ход выбирается случайно (возможно, крайне неудачным).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Victor Yukhtenko</name></author>
	</entry>
	<entry>
		<id>https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2302&amp;oldid=prev</id>
		<title>Victor Yukhtenko: Новая: Очередная версия Учебного проекта, функциональной идеей которого является простая игра.  [[Игра &quot;Полз...</title>
		<link rel="alternate" type="text/html" href="https://wikiru.visual-prolog.com/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9_%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82._%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7_5&amp;diff=2302&amp;oldid=prev"/>
		<updated>2009-10-02T16:50:20Z</updated>

		<summary type="html">&lt;p&gt;Новая: Очередная версия Учебного проекта, функциональной идеей которого является простая игра.  [[Игра &amp;quot;Полз...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Очередная версия Учебного проекта, функциональной идеей которого является простая игра.&lt;br /&gt;
&lt;br /&gt;
[[Игра &amp;quot;Ползунок&amp;quot;. Правила игры|Правила игры ...]]&lt;br /&gt;
&lt;br /&gt;
==Цель==&lt;br /&gt;
Демонстрация приемов программирования на языке Visual Prolog, в том числе:&lt;br /&gt;
* использование механизма наследования&lt;br /&gt;
&lt;br /&gt;
==Особенности Release 4== &lt;br /&gt;
* Компьютер делает прогноз результата на K шагов вперед. Если ход безопасный (не ведет к проигрышу за K шагов), то этот ход делается.&lt;br /&gt;
* В случае отсутствия безопасного хода следующий ход выбирается случайно (возможно, крайне неудачным).&lt;br /&gt;
* Параметр глубины прогноза устанавливается интерактивно.&lt;br /&gt;
* Размер поля, установленный равным 10 в коде, теперь принципиально не ограничивается.&lt;br /&gt;
&lt;br /&gt;
==Установка==&lt;br /&gt;
* Создать проект с пользовательским интерфейсом типа console&lt;br /&gt;
* В построенном проекте заменить полностью код файла &amp;quot;main.pro&amp;quot; кодом, предложенным ниже (&amp;#039;&amp;#039;&amp;#039;только VIP 7.2&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* При построении проекта ответить на предложение о включении дополнительных пакетов в проект &amp;quot;Add All&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;vip&amp;gt;&lt;br /&gt;
/****************************************************&lt;br /&gt;
VIP 7.2&lt;br /&gt;
Copyright (c) 2007-2008 Prolog Development Center SPb&lt;br /&gt;
&lt;br /&gt;
SpbSolutions/Examples/Polyline&lt;br /&gt;
&lt;br /&gt;
Predicates, which represent the strategy&lt;br /&gt;
    neighbour_nd,&lt;br /&gt;
    neighbourOutOfPolyLine_nd,&lt;br /&gt;
    stepCandidate&lt;br /&gt;
based on solutions proposed by Elena Efimova&lt;br /&gt;
Predidcates&lt;br /&gt;
    resolveStep &lt;br /&gt;
    successfulStep&lt;br /&gt;
modified&lt;br /&gt;
&lt;br /&gt;
Written by: Victor Yukhtenko                        &lt;br /&gt;
*****************************************************/&lt;br /&gt;
goal&lt;br /&gt;
    mainExe::run(main::run).&lt;br /&gt;
&lt;br /&gt;
/**************&lt;br /&gt;
Class Main&lt;br /&gt;
**************/    &lt;br /&gt;
implement main&lt;br /&gt;
    open core&lt;br /&gt;
 &lt;br /&gt;
constants&lt;br /&gt;
    className = &amp;quot;main&amp;quot;.&lt;br /&gt;
    classVersion = &amp;quot;1.0&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    classInfo(className, classVersion).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    run():-&lt;br /&gt;
        console::init(),   &lt;br /&gt;
        game::run().&lt;br /&gt;
 &lt;br /&gt;
end implement main&lt;br /&gt;
 &lt;br /&gt;
/******************************************&lt;br /&gt;
  Class Game&lt;br /&gt;
******************************************/&lt;br /&gt;
class game&lt;br /&gt;
open core&lt;br /&gt;
 &lt;br /&gt;
predicates&lt;br /&gt;
    classInfo : core::classInfo.&lt;br /&gt;
 &lt;br /&gt;
predicates&lt;br /&gt;
    run:().&lt;br /&gt;
end class game&lt;br /&gt;
 &lt;br /&gt;
implement game&lt;br /&gt;
open core&lt;br /&gt;
 &lt;br /&gt;
constants&lt;br /&gt;
    className = &amp;quot;game&amp;quot;.&lt;br /&gt;
    classVersion = &amp;quot;1.0&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    classInfo(className, classVersion).&lt;br /&gt;
 &lt;br /&gt;
class facts&lt;br /&gt;
    playerNo_V:positive:=1.&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    run():-&lt;br /&gt;
        humanInterface::announceStartUp(),&lt;br /&gt;
        PlayerType=humanInterface::getInput(humanInterface::playerType_S,toString(playerNo_V)),&lt;br /&gt;
        not(PlayerType=&amp;quot;&amp;quot;),&lt;br /&gt;
        try&lt;br /&gt;
            Player=createPlayerObject(toTerm(PlayerType)),&lt;br /&gt;
            seniourJudge::addPlayer(Player),&lt;br /&gt;
            playerNo_V:=playerNo_V+1&lt;br /&gt;
        catch _TraceID do&lt;br /&gt;
            humanInterface::announceManagerError(humanInterface::errorPlayerType_S)&lt;br /&gt;
        end try,&lt;br /&gt;
        !,&lt;br /&gt;
        run().&lt;br /&gt;
    run():-&lt;br /&gt;
        startingPlayer().&lt;br /&gt;
 &lt;br /&gt;
class predicates&lt;br /&gt;
    playListMember:()-&amp;gt;string nondeterm.&lt;br /&gt;
clauses&lt;br /&gt;
    playListMember()=PlayersListMember:-&lt;br /&gt;
        I = std::fromTo(1, list::length(seniourJudge::players_V)),&lt;br /&gt;
            Player=list::nth(I-1,seniourJudge::players_V),&lt;br /&gt;
            PlayersListMember=string::format(&amp;quot;\n% - %&amp;quot;,I,Player:name).&lt;br /&gt;
 &lt;br /&gt;
class predicates&lt;br /&gt;
    startingPlayer:().&lt;br /&gt;
clauses&lt;br /&gt;
    startingPlayer():-&lt;br /&gt;
        not(seniourJudge::players_V=[]) and not(seniourJudge::players_V=[_SiglePlayer]),&lt;br /&gt;
        findAll(PlayListMember,PlayListMember=playListMember(),PlayList),&lt;br /&gt;
        PlayListStr=string::concatList(PlayList),&lt;br /&gt;
        StartingPlayerStr=humanInterface::getInput(humanInterface::startingPlayer_S,PlayListStr),&lt;br /&gt;
        not(StartingPlayerStr=&amp;quot;&amp;quot;), &lt;br /&gt;
        try&lt;br /&gt;
            StartingPlayer=toTerm(StartingPlayerStr),&lt;br /&gt;
            !,&lt;br /&gt;
            startGame(StartingPlayer)&lt;br /&gt;
        catch _TraceID1 do&lt;br /&gt;
            humanInterface::announceManagerError(humanInterface::errorMustBeNumber_S),&lt;br /&gt;
            !,&lt;br /&gt;
            startingPlayer()&lt;br /&gt;
        end try.&lt;br /&gt;
    startingPlayer().&lt;br /&gt;
 &lt;br /&gt;
class predicates&lt;br /&gt;
    startGame:(positive).&lt;br /&gt;
clauses&lt;br /&gt;
    startGame(StartingPlayer):-&lt;br /&gt;
        try&lt;br /&gt;
            Player=list::nth(StartingPlayer-1,seniourJudge::players_V), % list::nth(...) needs unsigned&lt;br /&gt;
            !,&lt;br /&gt;
            seniourJudge::play(Player)&lt;br /&gt;
        catch _Trace_D do    &lt;br /&gt;
            humanInterface::announceManagerError(humanInterface::errorStartingPlayer_S),&lt;br /&gt;
            !&lt;br /&gt;
        end try,&lt;br /&gt;
        !,&lt;br /&gt;
        startingPlayer().&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
class predicates&lt;br /&gt;
    createPlayerObject:(positive)-&amp;gt;player.&lt;br /&gt;
clauses&lt;br /&gt;
    createPlayerObject(1)=Player:-&lt;br /&gt;
        !,&lt;br /&gt;
        Player=human::new().&lt;br /&gt;
    createPlayerObject(2)=Player:-&lt;br /&gt;
        !,&lt;br /&gt;
        Player=computer::new().&lt;br /&gt;
    createPlayerObject(_)=_Player:-&lt;br /&gt;
        exception::raise(classInfo,wrongInputException,[]).&lt;br /&gt;
 &lt;br /&gt;
class predicates&lt;br /&gt;
    wrongInputException:exception.&lt;br /&gt;
clauses&lt;br /&gt;
    wrongInputException&lt;br /&gt;
        (&lt;br /&gt;
        classInfo,&lt;br /&gt;
        predicate_Name(),&lt;br /&gt;
        &amp;quot;&amp;quot;&lt;br /&gt;
        ).&lt;br /&gt;
 &lt;br /&gt;
end implement game&lt;br /&gt;
 &lt;br /&gt;
/************************&lt;br /&gt;
  Class SeniorJudge&lt;br /&gt;
************************/&lt;br /&gt;
class seniourJudge&lt;br /&gt;
open core&lt;br /&gt;
 &lt;br /&gt;
properties&lt;br /&gt;
    players_V:player*.&lt;br /&gt;
    inProgress_V:boolean.&lt;br /&gt;
 &lt;br /&gt;
predicates&lt;br /&gt;
    play:(player CurrentPlayer).&lt;br /&gt;
    addPlayer:(player NextPlayer).&lt;br /&gt;
end class seniourJudge&lt;br /&gt;
 &lt;br /&gt;
implement seniourJudge&lt;br /&gt;
open core, humanInterface&lt;br /&gt;
 &lt;br /&gt;
class facts&lt;br /&gt;
    players_V:player*:=[].&lt;br /&gt;
    inProgress_V:boolean:=false.&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    play(Player):-&lt;br /&gt;
        inProgress_V=false,&lt;br /&gt;
        humanInterface::showStage(),&lt;br /&gt;
        inProgress_V:=true,&lt;br /&gt;
        Player:move(),&lt;br /&gt;
        humanInterface::announceStarter(Player:name),&lt;br /&gt;
        play(Player),&lt;br /&gt;
        !.&lt;br /&gt;
    play(Player):-&lt;br /&gt;
        juniourJudge::isGameOver(),&lt;br /&gt;
        !,&lt;br /&gt;
        Player:announceWin(),&lt;br /&gt;
        foreach (Participant=list::getMember_nd(players_V) and not(Participant=Player)) do&lt;br /&gt;
            Participant:announceLoss()&lt;br /&gt;
        end foreach,&lt;br /&gt;
        inProgress_V:=false,&lt;br /&gt;
        juniourJudge::reset().&lt;br /&gt;
    play(Player):-&lt;br /&gt;
        NextPlayer=nextPlayer(Player),&lt;br /&gt;
        NextPlayer:move(),&lt;br /&gt;
        !,&lt;br /&gt;
        play(NextPlayer).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    addPlayer(NextPlayer):-&lt;br /&gt;
        players_V:=list::append(players_V,[NextPlayer]).&lt;br /&gt;
 &lt;br /&gt;
class predicates&lt;br /&gt;
    nextPlayer:(player CurrentPlayer)-&amp;gt;player NextPlayer.&lt;br /&gt;
clauses&lt;br /&gt;
    nextPlayer(Player)=NextPlayer:-&lt;br /&gt;
        Index=list::tryGetIndex(Player,players_V),&lt;br /&gt;
        NextPlayer=list::tryGetNth(Index+1,players_V),&lt;br /&gt;
        !.&lt;br /&gt;
    nextPlayer(_Player)=list::nth(0,players_V).&lt;br /&gt;
 &lt;br /&gt;
end implement seniourJudge&lt;br /&gt;
 &lt;br /&gt;
/************************&lt;br /&gt;
  Class JuniourJudge&lt;br /&gt;
************************/&lt;br /&gt;
class juniourJudge&lt;br /&gt;
open core&lt;br /&gt;
 &lt;br /&gt;
predicates&lt;br /&gt;
    classInfo : core::classInfo.&lt;br /&gt;
 &lt;br /&gt;
domains&lt;br /&gt;
    cell = c(positive,positive).&lt;br /&gt;
    stepType_D=&lt;br /&gt;
        ordinary_S;&lt;br /&gt;
        winner_S.&lt;br /&gt;
 &lt;br /&gt;
properties&lt;br /&gt;
    maxRow_P:positive.&lt;br /&gt;
    maxColumn_P:positive.&lt;br /&gt;
    polyline_P:cell*.&lt;br /&gt;
 &lt;br /&gt;
predicates&lt;br /&gt;
    neighbour_nd: (cell,cell) nondeterm (i,o) (i,i).&lt;br /&gt;
    neighbourOutOfPolyLine_nd:(cell,cell)-&amp;gt;cell nondeterm.&lt;br /&gt;
    set: (string ).&lt;br /&gt;
    isGameOver:() determ.&lt;br /&gt;
    reset:().&lt;br /&gt;
 &lt;br /&gt;
end class juniourJudge&lt;br /&gt;
 &lt;br /&gt;
implement juniourJudge&lt;br /&gt;
open core, humanInterface&lt;br /&gt;
 &lt;br /&gt;
constants&lt;br /&gt;
    className = &amp;quot;JuniourJudge&amp;quot;.&lt;br /&gt;
    classVersion = &amp;quot;1.0&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    classInfo(className, classVersion).&lt;br /&gt;
 &lt;br /&gt;
class facts&lt;br /&gt;
    maxRow_P:positive:=10.&lt;br /&gt;
    maxColumn_P:positive:=10.&lt;br /&gt;
    polyline_P:cell*:=[].&lt;br /&gt;
    endOfGame_V:boolean:=false.&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    isGameOver():-&lt;br /&gt;
        endOfGame_V=true.&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    set(InputString):-&lt;br /&gt;
        Cell=toTerm(InputString),&lt;br /&gt;
        handleInput (Cell).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    reset():-&lt;br /&gt;
        juniourJudge:: polyline_P:=[],&lt;br /&gt;
        juniourJudge::endOfGame_V:=false.&lt;br /&gt;
 &lt;br /&gt;
class predicates&lt;br /&gt;
    handleInput:(juniourJudge::cell).&lt;br /&gt;
clauses&lt;br /&gt;
    handleInput(Cell):-&lt;br /&gt;
        list::isMember(Cell,polyline_P),&lt;br /&gt;
        try &lt;br /&gt;
            _=makePolyLine(Cell,polyline_P) % it will be an exception if wrong Cell, but we ignore it by failing&lt;br /&gt;
        catch _TraceID do&lt;br /&gt;
            fail&lt;br /&gt;
        end try,&lt;br /&gt;
        !,&lt;br /&gt;
        endOfGame_V:=true,&lt;br /&gt;
        humanInterface::showStep(Cell,winner_S).&lt;br /&gt;
    handleInput (Cell):-&lt;br /&gt;
        polyline_P:=makePolyLine(Cell,polyline_P),&lt;br /&gt;
        !,&lt;br /&gt;
        humanInterface::showStep(Cell,ordinary_S).&lt;br /&gt;
 &lt;br /&gt;
class predicates&lt;br /&gt;
    makePolyLine: (cell,cell*)-&amp;gt; cell* multi.&lt;br /&gt;
clauses&lt;br /&gt;
    makePolyLine(c(X,Y),[])=[c(X,Y)]:-&lt;br /&gt;
        X&amp;gt;0,X&amp;lt;=maxColumn_P,&lt;br /&gt;
        Y&amp;gt;0,Y&amp;lt;=maxRow_P,&lt;br /&gt;
        !.&lt;br /&gt;
    makePolyLine(NewCell,[SingleCell])=[NewCell,SingleCell]:-&lt;br /&gt;
        neighbour_nd(SingleCell, NewCell),&lt;br /&gt;
        !.&lt;br /&gt;
    makePolyLine(NewCell,[Left, RestrictingCell | PolyLineTail])=[NewCell, Left, RestrictingCell | PolyLineTail]:-&lt;br /&gt;
        NewCell=neighbourOutOfPolyLine_nd(Left,RestrictingCell).&lt;br /&gt;
    makePolyLine(NewCell,PolyLine)=list::reverse([NewCell,Left, RestrictingCell | PolyLineTail]):-&lt;br /&gt;
        [Left, RestrictingCell | PolyLineTail]= list::reverse(PolyLine),&lt;br /&gt;
        NewCell=neighbourOutOfPolyLine_nd(Left,RestrictingCell).&lt;br /&gt;
    makePolyLine(NewCell,_PolyLine)= _PolyLine1:-&lt;br /&gt;
        exception::raise(classInfo,wrongStepException,[namedValue(&amp;quot;data&amp;quot;,string(toString(NewCell)))]).&lt;br /&gt;
 &lt;br /&gt;
class predicates&lt;br /&gt;
    wrongStepException:exception.&lt;br /&gt;
clauses&lt;br /&gt;
    wrongStepException&lt;br /&gt;
        (&lt;br /&gt;
        classInfo,&lt;br /&gt;
        predicate_Name(),&lt;br /&gt;
        &amp;quot;the point % can not prolong the polyline!&amp;quot;&lt;br /&gt;
        ).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    neighbourOutOfPolyLine_nd(Cell,RestrictingCell)=NewCell:-&lt;br /&gt;
        neighbour_nd(Cell,NewCell),&lt;br /&gt;
            not(NewCell = RestrictingCell).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    neighbour_nd(c(X, Y), c(X + 1, Y)):- X &amp;lt; maxColumn_P.        &lt;br /&gt;
    neighbour_nd(c(X, Y), c(X, Y + 1)):- Y &amp;lt; maxrow_P.            &lt;br /&gt;
    neighbour_nd(c(X, Y), c(X - 1, Y)):- X &amp;gt; 1.&lt;br /&gt;
    neighbour_nd(c(X, Y), c(X, Y - 1)):- Y &amp;gt; 1.    &lt;br /&gt;
 &lt;br /&gt;
end implement juniourJudge&lt;br /&gt;
 &lt;br /&gt;
/******************************************&lt;br /&gt;
  Interface Player&lt;br /&gt;
******************************************/&lt;br /&gt;
interface player&lt;br /&gt;
 &lt;br /&gt;
predicates&lt;br /&gt;
    move:().&lt;br /&gt;
    announceWin:().&lt;br /&gt;
    announceLoss:().&lt;br /&gt;
 &lt;br /&gt;
properties&lt;br /&gt;
    name:string.&lt;br /&gt;
 &lt;br /&gt;
end interface player&lt;br /&gt;
 &lt;br /&gt;
/******************************************&lt;br /&gt;
  Class Human&lt;br /&gt;
******************************************/&lt;br /&gt;
class human:player&lt;br /&gt;
open core&lt;br /&gt;
end class human&lt;br /&gt;
 &lt;br /&gt;
implement human&lt;br /&gt;
open core&lt;br /&gt;
 &lt;br /&gt;
facts&lt;br /&gt;
    name:string:=string::format(&amp;quot;Hum_%&amp;quot;,toString(This)).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    new():-&lt;br /&gt;
        Name=humanInterface::getInput(humanInterface::playerName_S,name),&lt;br /&gt;
        if not(Name=&amp;quot;&amp;quot;) then&lt;br /&gt;
            name:=Name&lt;br /&gt;
        end if.&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    move():-&lt;br /&gt;
        InputString=humanInterface::getInput(humanInterface::playerStep_S),&lt;br /&gt;
        try&lt;br /&gt;
            juniourJudge::set(InputString)&lt;br /&gt;
        catch TraceID do&lt;br /&gt;
            handleException(TraceID),&lt;br /&gt;
            fail&lt;br /&gt;
        end try,&lt;br /&gt;
        !.&lt;br /&gt;
    move():-&lt;br /&gt;
        move().&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    announceWin():-&lt;br /&gt;
        humanInterface::announceWin(name).&lt;br /&gt;
 &lt;br /&gt;
    announceLoss():-&lt;br /&gt;
        humanInterface::announceLoss(name).&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
class predicates&lt;br /&gt;
    handleException:(exception::traceId TraceID).&lt;br /&gt;
clauses&lt;br /&gt;
    handleException(TraceID):-&lt;br /&gt;
        foreach Descriptor=exception::getDescriptor_nd(TraceID) do&lt;br /&gt;
            Descriptor = exception::descriptor(&lt;br /&gt;
                _ClassInfo1,&lt;br /&gt;
                exception::exceptionDescriptor(_ClassInfo2,_PredicateName,Description),&lt;br /&gt;
                _Kind,&lt;br /&gt;
                ExtraInfo,&lt;br /&gt;
                _GMTTime,&lt;br /&gt;
                _ExceptionDescription,&lt;br /&gt;
                _ThreadId),&lt;br /&gt;
            if&lt;br /&gt;
                ExtraInfo=[namedValue(&amp;quot;data&amp;quot;,string(CellPointer))]&lt;br /&gt;
            then&lt;br /&gt;
                ErrorMsg=string::format(Description,CellPointer),&lt;br /&gt;
                humanInterface::announceError(ErrorMsg)&lt;br /&gt;
            else&lt;br /&gt;
                humanInterface::announceError(&amp;quot;&amp;quot;)&lt;br /&gt;
            end if&lt;br /&gt;
        end foreach.&lt;br /&gt;
 &lt;br /&gt;
end implement human&lt;br /&gt;
 &lt;br /&gt;
/******************************************&lt;br /&gt;
  Class Computer&lt;br /&gt;
******************************************/&lt;br /&gt;
class computer:player&lt;br /&gt;
end class computer&lt;br /&gt;
 &lt;br /&gt;
implement computer&lt;br /&gt;
    inherits genericComputer&lt;br /&gt;
end implement computer&lt;br /&gt;
/******************************************&lt;br /&gt;
  Class GenericComputer&lt;br /&gt;
******************************************/&lt;br /&gt;
interface genericComputer&lt;br /&gt;
    supports player&lt;br /&gt;
    supports polyLineBrain&lt;br /&gt;
 &lt;br /&gt;
end interface genericComputer&lt;br /&gt;
 &lt;br /&gt;
class genericComputer:genericComputer&lt;br /&gt;
open core, exception&lt;br /&gt;
 &lt;br /&gt;
end class genericComputer&lt;br /&gt;
 &lt;br /&gt;
implement genericComputer&lt;br /&gt;
    inherits polyLineBrain2&lt;br /&gt;
open core&lt;br /&gt;
 &lt;br /&gt;
facts&lt;br /&gt;
    name:string:=string::format(&amp;quot;Cmp_%&amp;quot;,toString(This)).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    new():-&lt;br /&gt;
        Name=humanInterface::getInput(humanInterface::playerName_S,name),&lt;br /&gt;
        if not(Name=&amp;quot;&amp;quot;) then&lt;br /&gt;
            name:=Name&lt;br /&gt;
        end if.&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    move():-&lt;br /&gt;
        humanInterface::announceThinker(name),&lt;br /&gt;
        Cell=resolveStep(),&lt;br /&gt;
        juniourJudge::set(toString(Cell)).&lt;br /&gt;
 &lt;br /&gt;
predicates&lt;br /&gt;
    resolveStep:()-&amp;gt;juniourJudge::cell.&lt;br /&gt;
clauses&lt;br /&gt;
    resolveStep()=Cell:-&lt;br /&gt;
        Cell=successfulStep(juniourJudge::polyline_P),&lt;br /&gt;
        !.&lt;br /&gt;
    resolveStep()=Cell:-&lt;br /&gt;
        Cell=randomStep(),&lt;br /&gt;
        !.&lt;br /&gt;
    resolveStep()=juniourJudge::c(X+1,Y+1):-&lt;br /&gt;
        X=math::random(juniourJudge::maxColumn_P-1),&lt;br /&gt;
        Y=math::random(juniourJudge::maxRow_P-1).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    stepCandidate([Cell],[Cell,NewCell], NewCell):-&lt;br /&gt;
        juniourJudge::neighbour_nd(Cell, NewCell).&lt;br /&gt;
    stepCandidate([Left, RestrictingCell | PolyLine],[NewCell,Left, RestrictingCell| PolyLine], NewCell):-&lt;br /&gt;
        NewCell=juniourJudge::neighbourOutOfPolyLine_nd(Left,RestrictingCell).&lt;br /&gt;
    stepCandidate(PolyLine,list::reverse([NewCell,Left, RestrictingCell |PolyLineTail]),NewCell):-&lt;br /&gt;
        [Left, RestrictingCell |PolyLineTail] = list::reverse(PolyLine),&lt;br /&gt;
        NewCell=juniourJudge::neighbourOutOfPolyLine_nd(Left,RestrictingCell).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    announceWin():-&lt;br /&gt;
        humanInterface::announceWin(name).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    announceLoss():-&lt;br /&gt;
        humanInterface::announceLoss(name).&lt;br /&gt;
 &lt;br /&gt;
end implement genericComputer&lt;br /&gt;
 &lt;br /&gt;
/******************************************&lt;br /&gt;
  Interface PolylineBrain&lt;br /&gt;
******************************************/&lt;br /&gt;
interface polylineBrain&lt;br /&gt;
open core&lt;br /&gt;
 &lt;br /&gt;
constants&lt;br /&gt;
   notDefinedPredicate_C=&amp;quot;The predicate is not defined. Must be defined in the daughter class. &amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
predicates&lt;br /&gt;
    stepCandidate: (juniourJudge::cell*,juniourJudge::cell* [out],juniourJudge::cell [out]) nondeterm.&lt;br /&gt;
    successfulStep: (juniourJudge::cell*)-&amp;gt;juniourJudge::cell nondeterm.&lt;br /&gt;
    randomStep:()-&amp;gt;juniourJudge::cell determ.&lt;br /&gt;
 &lt;br /&gt;
end interface polyLineBrain&lt;br /&gt;
 &lt;br /&gt;
/******************************************&lt;br /&gt;
  Class PolylineBrain2&lt;br /&gt;
******************************************/&lt;br /&gt;
class polyLineBrain2:polyLineBrain&lt;br /&gt;
open core&lt;br /&gt;
predicates&lt;br /&gt;
    classInfo : core::classInfo.&lt;br /&gt;
 &lt;br /&gt;
end class polyLineBrain2&lt;br /&gt;
 &lt;br /&gt;
implement polyLineBrain2&lt;br /&gt;
open core, exception&lt;br /&gt;
 &lt;br /&gt;
constants&lt;br /&gt;
    className = &amp;quot;polyLineBrain2&amp;quot;.&lt;br /&gt;
    classVersion = &amp;quot;1.0&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    classInfo(className, classVersion).&lt;br /&gt;
 &lt;br /&gt;
facts&lt;br /&gt;
    depth_V:positive:=20.&lt;br /&gt;
clauses&lt;br /&gt;
    new():-&lt;br /&gt;
        defineSearchDepth().&lt;br /&gt;
 &lt;br /&gt;
predicates&lt;br /&gt;
    defineSearchDepth:().&lt;br /&gt;
clauses&lt;br /&gt;
    defineSearchDepth():-&lt;br /&gt;
        DepthStr=humanInterface::getInput(humanInterface::searchDepth_S,toString(depth_V)),&lt;br /&gt;
        not(DepthStr=&amp;quot;&amp;quot;),&lt;br /&gt;
        !,&lt;br /&gt;
        try&lt;br /&gt;
            depth_V:=toTerm(DepthStr)&lt;br /&gt;
        catch _TraceID1 do&lt;br /&gt;
            humanInterface::announceManagerError(humanInterface::errorMustBeNumber_S),&lt;br /&gt;
            defineSearchDepth()&lt;br /&gt;
        end try.&lt;br /&gt;
    defineSearchDepth().&lt;br /&gt;
 &lt;br /&gt;
predicates&lt;br /&gt;
    successfulStep: (integer Counter, juniourJudge::cell*)-&amp;gt;juniourJudge::cell nondeterm.&lt;br /&gt;
clauses&lt;br /&gt;
    successfulStep(PolyLine)=BestMove:-&lt;br /&gt;
        BestMove=successfulStep(depth_V,PolyLine).&lt;br /&gt;
 &lt;br /&gt;
    successfulStep(Counter,PolyLine)=BestMove:-&lt;br /&gt;
        This:stepCandidate(PolyLine,_PolyLine1,BestMove),&lt;br /&gt;
        isStepSuccessful(Counter,PolyLine,BestMove),&lt;br /&gt;
        !.&lt;br /&gt;
    successfulStep(Counter,PolyLine)=Cell:-&lt;br /&gt;
        This:stepCandidate(PolyLine, PolyLine1,Cell),&lt;br /&gt;
            not(_=successfulStep(Counter-1,PolyLine1)).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    randomStep()=Cell:-&lt;br /&gt;
        findAll(NewCell,This:stepCandidate(juniourJudge::polyline_P,_Polyline1, NewCell),CellCandidateListWithDuplicates),&lt;br /&gt;
        CellCandidateList=list::removeDuplicates(CellCandidateListWithDuplicates),&lt;br /&gt;
        not(CellCandidateList=[]),&lt;br /&gt;
        NoOfVariants=list::length(CellCandidateList),&lt;br /&gt;
        ChoiceNo=math::random(NoOfVariants-1),&lt;br /&gt;
        Cell=list::nth(ChoiceNo+1,CellCandidateList).&lt;br /&gt;
 &lt;br /&gt;
class predicates&lt;br /&gt;
    isStepSuccessful:(integer Counter,juniourJudge::cell* PolyLine,juniourJudge::cell BestMove) determ.&lt;br /&gt;
clauses&lt;br /&gt;
    isStepSuccessful(_Counter,PolyLine,BestMove):-&lt;br /&gt;
        list::isMember(BestMove, PolyLine),&lt;br /&gt;
        !.&lt;br /&gt;
    isStepSuccessful(Counter,_PolyLine,_BestMove):-&lt;br /&gt;
        Counter&amp;lt;=1.&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    stepCandidate(_Cell,_PolyLine,_Move):-&lt;br /&gt;
        common_exception::raise_error(classinfo,predicate_name(),notDefinedPredicate_C).&lt;br /&gt;
 &lt;br /&gt;
end implement polylineBrain2&lt;br /&gt;
 &lt;br /&gt;
/******************************************&lt;br /&gt;
  Class HumanInterface&lt;br /&gt;
******************************************/&lt;br /&gt;
class humanInterface&lt;br /&gt;
open core&lt;br /&gt;
 &lt;br /&gt;
predicates&lt;br /&gt;
    announceStartUp:().&lt;br /&gt;
 &lt;br /&gt;
predicates&lt;br /&gt;
    showStage:().&lt;br /&gt;
    showStep:(juniourJudge::cell,juniourJudge::stepType_D).&lt;br /&gt;
    getInput:(inputType_D,string StringParameter)-&amp;gt;string InputString.&lt;br /&gt;
    getInput:(inputType_D)-&amp;gt;string InputString.&lt;br /&gt;
 &lt;br /&gt;
predicates&lt;br /&gt;
    announceManagerError:(choiceError_D).&lt;br /&gt;
 &lt;br /&gt;
predicates&lt;br /&gt;
    announceStarter:(string Name).&lt;br /&gt;
    announceThinker:(string Name).&lt;br /&gt;
    announceWin:(string Name).&lt;br /&gt;
    announceLoss:(string Name).&lt;br /&gt;
    announceError:(string Description).&lt;br /&gt;
    announceError:().&lt;br /&gt;
 &lt;br /&gt;
domains&lt;br /&gt;
    choiceError_D=&lt;br /&gt;
        errorPlayerType_S;&lt;br /&gt;
        errorMustBeNumber_S;&lt;br /&gt;
        errorstartingPlayer_S.&lt;br /&gt;
 &lt;br /&gt;
domains&lt;br /&gt;
    inputType_D=&lt;br /&gt;
        playerStep_S;&lt;br /&gt;
        playerType_S;&lt;br /&gt;
        playerName_S;&lt;br /&gt;
        startingPlayer_S;&lt;br /&gt;
        searchDepth_S.&lt;br /&gt;
 &lt;br /&gt;
end class humanInterface&lt;br /&gt;
 &lt;br /&gt;
implement humanInterface&lt;br /&gt;
open core&lt;br /&gt;
 &lt;br /&gt;
constants&lt;br /&gt;
    cellMarkedOrdinary_C=&amp;quot;*&amp;quot;.&lt;br /&gt;
    cellMarkedWinner_C=&amp;quot;O&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
constants % messages&lt;br /&gt;
    thinker_C=&amp;quot;% is thinking ...&amp;quot;.&lt;br /&gt;
    beginner_C=&amp;quot;First move done by: %&amp;quot;.&lt;br /&gt;
    error_C=&amp;quot;Error, % &amp;quot;.&lt;br /&gt;
    congratulation_C=&amp;quot;Player % won!&amp;quot;.&lt;br /&gt;
    sorryLoss_C=&amp;quot;%,  Sorry, you loss :-(&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
    playerStep_C=&amp;quot;Please enter your move as c(X,Y): &amp;quot;.&lt;br /&gt;
    playerType_C=&amp;quot;\nPlayer #%s. Please enter the player type (1-human, 2-computer, Enter - end of choice):&amp;quot;.&lt;br /&gt;
    playerName_C=&amp;quot;\nPlease assign the name to the player (% proposed):&amp;quot;.&lt;br /&gt;
    startingPlayer_C=&amp;quot;\nWho moves the first (PlayerNo or Enter - end of the game)?:&amp;quot;.&lt;br /&gt;
    searchDepth_C=&amp;quot;\nDefine the depth of the search (% - by default)?? &amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
    errorPlayerType_C=&amp;quot;\nNo such player type exists! Enter - repeat input:&amp;quot;.&lt;br /&gt;
    errorMustBeNumber_C=&amp;quot;\nMust be number! Please repeat input:&amp;quot;.&lt;br /&gt;
    errorstartingPlayer_C=&amp;quot;\nNo such Player exiasts! Please repeat input:&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
constants&lt;br /&gt;
    verticalSpace_C=2.&lt;br /&gt;
    horizontalSpace_C=3.&lt;br /&gt;
    emptyLineLenght_C=80.&lt;br /&gt;
 &lt;br /&gt;
constants % Position of Line&lt;br /&gt;
    starterLine_C=1.&lt;br /&gt;
    announceLine_C=starterLine_C+1.&lt;br /&gt;
    actionLine_C=announceLine_C+1.&lt;br /&gt;
    polylineLine_C=actionLine_C+1.&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    getInput(InputType)=Input:-&lt;br /&gt;
        Input=getInput(InputType,&amp;quot;&amp;quot;).&lt;br /&gt;
 &lt;br /&gt;
    getInput(InputType,StringParameter)=Input:-&lt;br /&gt;
        inputInvitation(InputType,StringParameter),&lt;br /&gt;
        Input = console::readLine(),&lt;br /&gt;
        console::clearInput().&lt;br /&gt;
 &lt;br /&gt;
class predicates&lt;br /&gt;
    inputInvitation:(inputType_D,string StringParameter).&lt;br /&gt;
clauses&lt;br /&gt;
    inputInvitation(playerStep_S,_StringParameter):-&lt;br /&gt;
        clearMessageArea(actionLine_C),&lt;br /&gt;
        writeMessage(actionLine_C,&amp;quot;%&amp;quot;,playerStep_C).&lt;br /&gt;
    inputInvitation(playerName_S,StringParameter):-&lt;br /&gt;
        console::writef(playerName_C,StringParameter).&lt;br /&gt;
    inputInvitation(playerType_S,StringParameter):-&lt;br /&gt;
        console::writef(playerType_C,StringParameter).&lt;br /&gt;
    inputInvitation(startingPlayer_S,StringParameter):-&lt;br /&gt;
        console::write(StringParameter,startingPlayer_C).&lt;br /&gt;
    inputInvitation(searchDepth_S,StringParameter):-&lt;br /&gt;
        console::writef(searchDepth_C,StringParameter).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    showStage():-&lt;br /&gt;
        console::clearOutput(),&lt;br /&gt;
        foreach I = std::fromTo(1, juniourJudge::maxColumn_P) do&lt;br /&gt;
            console::setLocation(console_native::coord(horizontalSpace_C*I, 0)), &lt;br /&gt;
            console::write(I)&lt;br /&gt;
        end foreach,&lt;br /&gt;
        foreach J = std::fromTo(1, juniourJudge::maxRow_P) do    &lt;br /&gt;
            console::setLocation(console_native::coord(0, verticalSpace_C*J)), &lt;br /&gt;
            console::write(J)&lt;br /&gt;
        end foreach.&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    showStep(juniourJudge::c(X,Y),_Type):-&lt;br /&gt;
        console::setLocation(console_native::coord(horizontalSpace_C*X, verticalSpace_C*Y)),&lt;br /&gt;
        fail.&lt;br /&gt;
    showStep(_Cell,juniourJudge::ordinary_S):-&lt;br /&gt;
        console::write(cellMarkedOrdinary_C).&lt;br /&gt;
    showStep(_Cell,juniourJudge::winner_S):-&lt;br /&gt;
        console::write(cellMarkedWinner_C).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    announceStartUp():-&lt;br /&gt;
        console::clearOutput().&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    announceStarter(Name):-&lt;br /&gt;
        clearMessageArea(starterLine_C),&lt;br /&gt;
        writeMessage(starterLine_C,beginner_C,Name).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    announceManagerError(errorPlayerType_S):-&lt;br /&gt;
        console::write(errorPlayerType_C),&lt;br /&gt;
        _=console::readLine().&lt;br /&gt;
    announceManagerError(errorMustBeNumber_S):-&lt;br /&gt;
        console::write(errorMustBeNumber_C).&lt;br /&gt;
    announceManagerError(errorstartingPlayer_S):-&lt;br /&gt;
        console::write(errorstartingPlayer_C).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    announceError():-&lt;br /&gt;
        announceError(&amp;quot;&amp;quot;).&lt;br /&gt;
 &lt;br /&gt;
    announceError(ErrorText):-&lt;br /&gt;
        clearMessageArea(announceLine_C),&lt;br /&gt;
        writeMessage(announceLine_C,error_C,ErrorText).&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    announceWin(Name):-&lt;br /&gt;
        clearMessageArea(announceLine_C),&lt;br /&gt;
        clearMessageArea(actionLine_C),&lt;br /&gt;
        writeMessage(announceLine_C,congratulation_C,Name),&lt;br /&gt;
        _ = console::readLine().&lt;br /&gt;
 &lt;br /&gt;
    announceLoss(Name):-&lt;br /&gt;
        clearMessageArea(announceLine_C),&lt;br /&gt;
        clearMessageArea(actionLine_C),&lt;br /&gt;
        writeMessage(announceLine_C,sorryLoss_C,Name),&lt;br /&gt;
        _ = console::readLine().&lt;br /&gt;
 &lt;br /&gt;
clauses&lt;br /&gt;
    announceThinker(Name):-&lt;br /&gt;
        clearMessageArea(announceLine_C),&lt;br /&gt;
        clearMessageArea(actionLine_C),&lt;br /&gt;
        writeMessage(actionLine_C,thinker_C,Name).&lt;br /&gt;
 &lt;br /&gt;
class predicates&lt;br /&gt;
    clearMessageArea:(positive AreaID).&lt;br /&gt;
clauses&lt;br /&gt;
    clearMessageArea(AreaID):-&lt;br /&gt;
        console::setLocation(console_native::coord(0,juniourJudge::maxRow_P*verticalSpace_C+AreaID)),&lt;br /&gt;
        console::write(string::create(emptyLineLenght_C,&amp;quot; &amp;quot;)).&lt;br /&gt;
 &lt;br /&gt;
class predicates&lt;br /&gt;
    writeMessage:(positive AreaID,string FormatString,string ParameterString).&lt;br /&gt;
clauses&lt;br /&gt;
    writeMessage(AreaID,FormatString,ParameterString):-&lt;br /&gt;
        console::setLocation(console_native::coord(0, juniourJudge::maxRow_P*verticalSpace_C+AreaID)),&lt;br /&gt;
        console::writef(FormatString,ParameterString).&lt;br /&gt;
 &lt;br /&gt;
end implement humanInterface&lt;br /&gt;
&amp;lt;/vip&amp;gt;&lt;br /&gt;
==Ссылки==&lt;br /&gt;
[[Category:Примеры]]&lt;br /&gt;
[[Category:Игры]]&lt;/div&gt;</summary>
		<author><name>Victor Yukhtenko</name></author>
	</entry>
</feed>