<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/~jalonso/LCyTM2018/index.php?action=history&amp;feed=atom&amp;title=Masyu</id>
	<title>Masyu - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/~jalonso/LCyTM2018/index.php?action=history&amp;feed=atom&amp;title=Masyu"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LCyTM2018/index.php?title=Masyu&amp;action=history"/>
	<updated>2026-07-23T02:02:43Z</updated>
	<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LCyTM2018/index.php?title=Masyu&amp;diff=105&amp;oldid=prev</id>
		<title>Mjoseh: Página creada con «&lt;source lang = &quot;prolog&quot;&gt; %% Masyu.  %% Es un juego donde, en una cuadrícula con ciertos círculos negros y blancos, %% tenemos que hacer un camino que pase por todos los c…»</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LCyTM2018/index.php?title=Masyu&amp;diff=105&amp;oldid=prev"/>
		<updated>2019-02-18T09:18:55Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «&amp;lt;source lang = &amp;quot;prolog&amp;quot;&amp;gt; %% Masyu.  %% Es un juego donde, en una cuadrícula con ciertos círculos negros y blancos, %% tenemos que hacer un camino que pase por todos los c…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang = &amp;quot;prolog&amp;quot;&amp;gt;&lt;br /&gt;
%% Masyu.&lt;br /&gt;
&lt;br /&gt;
%% Es un juego donde, en una cuadrícula con ciertos círculos negros y blancos,&lt;br /&gt;
%% tenemos que hacer un camino que pase por todos los círculos bajo una serie de reglas.&lt;br /&gt;
&lt;br /&gt;
%% R1: El camino tiene que ser cerrado.&lt;br /&gt;
%% R2: Por los círculos blancos hay que pasar en linea recta, pero tiene que girar 90º&lt;br /&gt;
%%     en la casilla previa y/o posterior del camino.&lt;br /&gt;
%% R3: Por los círculos negros hay girar 90º, pero el camino tiene que ser recto en&lt;br /&gt;
%%     las casillas previa y posterior.&lt;br /&gt;
&lt;br /&gt;
%% Estaticos.&lt;br /&gt;
&lt;br /&gt;
col(1..n).&lt;br /&gt;
fila(1..m).&lt;br /&gt;
direccion(v;h).&lt;br /&gt;
&lt;br /&gt;
bola(X,Y) :- negro(X,Y).&lt;br /&gt;
bola(X,Y) :- blanco(X,Y).&lt;br /&gt;
&lt;br /&gt;
%% Generación. linea(S,X,Y) indica que de la casilla (X,Y) hay un&lt;br /&gt;
%% segmento del camino hasta la casilla (X+1,Y) si S==h y hay un&lt;br /&gt;
%% segmento hasta la casilla (X,Y+1) si S==v.&lt;br /&gt;
&lt;br /&gt;
{linea(S,X,Y)} :- direccion(S), col(X), fila(Y).&lt;br /&gt;
:- linea(h,n,Y).&lt;br /&gt;
:- linea(v,X,m).&lt;br /&gt;
&lt;br /&gt;
%% en(X,Y) significa que el camino pasa por la casilla (X,Y).&lt;br /&gt;
&lt;br /&gt;
en(X,Y) :- linea(S,X,Y).&lt;br /&gt;
en(X+1,Y) :- linea(h,X,Y).&lt;br /&gt;
en(X,Y+1) :- linea(v,X,Y).&lt;br /&gt;
en(X,Y) :- bola(X,Y).&lt;br /&gt;
&lt;br /&gt;
%% Restricciones.&lt;br /&gt;
&lt;br /&gt;
%% R1: El camino tiene que ser CERRADO.&lt;br /&gt;
%  Cada casilla del camino tiene una salida y una entrada del comino.&lt;br /&gt;
&lt;br /&gt;
:- 3{linea(h,X-1,Y);linea(h,X,Y);linea(v,X,Y);linea(v,X,Y-1)}, en(X,Y).&lt;br /&gt;
:- {linea(h,X-1,Y);linea(h,X,Y);linea(v,X,Y);linea(v,X,Y-1)}1, en(X,Y).&lt;br /&gt;
&lt;br /&gt;
%  Además, como el camino tiene que ser unico una casilla en el camino tiene que ser alcanzable por otra de este.&lt;br /&gt;
&lt;br /&gt;
adj(X,Y,X,Y+1) :- linea(v,X,Y).&lt;br /&gt;
adj(X,Y,X+1,Y) :- linea(h,X,Y).&lt;br /&gt;
adj(X,Y,U,V) :- adj(U,V,X,Y).&lt;br /&gt;
&lt;br /&gt;
alcanzable(X,Y,X,Y) :- en(X,Y).&lt;br /&gt;
alcanzable(X,Y,Z,W) :- adj(X,Y,U,V), alcanzable(U,V,Z,W).&lt;br /&gt;
&lt;br /&gt;
:- en(X,Y), en(Z,W), not alcanzable(X,Y,Z,W).&lt;br /&gt;
&lt;br /&gt;
%% R2: Por los círculos blancos hay que pasar en linea recta, pero tiene que girar 90º&lt;br /&gt;
%%     en la casilla previa y/o posterior del camino.&lt;br /&gt;
&lt;br /&gt;
% Pasar en linea recta.&lt;br /&gt;
&lt;br /&gt;
:- 1{linea(v,X,Y);linea(v,X,Y-1)}, 1{linea(h,X,Y);linea(h,X-1,Y)},blanco(X,Y).&lt;br /&gt;
&lt;br /&gt;
% girar 90º en la casilla previa y/o posterior.&lt;br /&gt;
&lt;br /&gt;
:- blanco(X,Y), linea(h,X,Y), linea(h,X+1,Y), linea(h,X-1,Y), linea(h,X-2,Y).&lt;br /&gt;
:- blanco(X,Y), linea(v,X,Y), linea(v,X,Y+1), linea(v,X,Y-1), linea(v,X,Y-2).&lt;br /&gt;
&lt;br /&gt;
%% R3: Por los círculos negros hay girar 90º, pero el camino tiene que ser recto en&lt;br /&gt;
%%     las casillas previa y posterior.&lt;br /&gt;
&lt;br /&gt;
% Hay girar 90º.&lt;br /&gt;
&lt;br /&gt;
:- negro(X,Y), linea(h,X,Y), linea(h,X-1,Y).&lt;br /&gt;
:- negro(X,Y), linea(v,X,Y), linea(v,X,Y-1).&lt;br /&gt;
&lt;br /&gt;
% Recto en las casillas previa y posterior.&lt;br /&gt;
&lt;br /&gt;
:- 1{linea(v,X+1,Y); linea(v,X+1,Y-1)}, negro(X,Y), linea(h,X,Y).&lt;br /&gt;
:- 1{linea(v,X-1,Y); linea(v,X-1,Y-1)}, negro(X,Y), linea(h,X-1,Y).&lt;br /&gt;
&lt;br /&gt;
:- 1{linea(h,X,Y+1); linea(h,X-1,Y+1)}, negro(X,Y), linea(v,X,Y).&lt;br /&gt;
:- 1{linea(h,X,Y-1); linea(h,X-1,Y-1)}, negro(X,Y), linea(v,X,Y-1).&lt;br /&gt;
&lt;br /&gt;
%Presentción.&lt;br /&gt;
&lt;br /&gt;
#show linea/3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mjoseh</name></author>
		
	</entry>
</feed>