<?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=Nurikabe</id>
	<title>Nurikabe - 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=Nurikabe"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LCyTM2018/index.php?title=Nurikabe&amp;action=history"/>
	<updated>2026-07-22T13:29:07Z</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=Nurikabe&amp;diff=98&amp;oldid=prev</id>
		<title>Mjoseh en 09:13 18 feb 2019</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LCyTM2018/index.php?title=Nurikabe&amp;diff=98&amp;oldid=prev"/>
		<updated>2019-02-18T09:13:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&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;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 09:13 18 feb 2019&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-l93&quot; &gt;Línea 93:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 93:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;#show negro/2.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;#show negro/2.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; 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;&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;prolog&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; 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;&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;source&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mjoseh</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LCyTM2018/index.php?title=Nurikabe&amp;diff=97&amp;oldid=prev</id>
		<title>Mjoseh: Página creada con «&lt;source lang = &quot;prolog&quot;&gt; %% Nurikabe.  %% Es un juego que consiste en, dado una cuadrícula en blanco con unos ciertos números, %% pintar algunas de las celdas de negro en…»</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LCyTM2018/index.php?title=Nurikabe&amp;diff=97&amp;oldid=prev"/>
		<updated>2019-02-18T09:12:02Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «&amp;lt;source lang = &amp;quot;prolog&amp;quot;&amp;gt; %% Nurikabe.  %% Es un juego que consiste en, dado una cuadrícula en blanco con unos ciertos números, %% pintar algunas de las celdas de negro en…»&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;
%% Nurikabe.&lt;br /&gt;
&lt;br /&gt;
%% Es un juego que consiste en, dado una cuadrícula en blanco con unos ciertos números,&lt;br /&gt;
%% pintar algunas de las celdas de negro en base a unas reglas de forma que las&lt;br /&gt;
%% celdas de negro son agua y las celdas blancas formas islas. Las reglas que se&lt;br /&gt;
%% tienen que cumplir son las siguientes:&lt;br /&gt;
&lt;br /&gt;
%% R1: Las celdas enumeradas son blancas.&lt;br /&gt;
%% R2: Toda celda blanca pertenece a una isla.&lt;br /&gt;
%% R3: Cada isla contiene exactamente una celda enumerada.&lt;br /&gt;
%% R4: Cada isla tiene que contener el mismo número de celdas blancas que el número que contiene.&lt;br /&gt;
%% R5: Las celdas blancas tienen que estar conectadas ortogonalmente.&lt;br /&gt;
%% R6: Dos islas no pueden estar conectadas.&lt;br /&gt;
%% R7: Todas las celdas negras tienen que estar conectadas ortogonalmente.&lt;br /&gt;
%% R8: Ningún conjunto de celdas negras forma un cuadrado 2 x 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% Estaticos.&lt;br /&gt;
&lt;br /&gt;
col(1..c).&lt;br /&gt;
fila(1..r).&lt;br /&gt;
color(blanco;negro).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% Generación. Para generar las soluciones, en cada posición elegimos si la celda es blanca o no.&lt;br /&gt;
&lt;br /&gt;
pos(X,Y) :- fila(X), col(Y).&lt;br /&gt;
{cel(X,Y,blanco)}1 :- pos(X,Y).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% Cada celda que no haya elegido para ser blanca será negra.&lt;br /&gt;
&lt;br /&gt;
cel(X,Y,negro) :- not cel(X,Y,blanco), pos(X,Y).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% Una vez generado los tableros, pasamos a escribir las restricciones.&lt;br /&gt;
%% Primero describiremos las conexiones que tiene que haber entre celdas.&lt;br /&gt;
&lt;br /&gt;
% Celdas que están conectadas ortogonalmente.&lt;br /&gt;
&lt;br /&gt;
ortogonal(F,C,F1,C1) :- pos(F,C), pos(F1,C1), |F-F1|+|C-C1|== 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Celdas que están color-conectadas por un camino ortogonal.&lt;br /&gt;
&lt;br /&gt;
conectado(C,X,Y,X,Y) :- cel(X,Y,C).&lt;br /&gt;
conectado(C,X,Y,U,V) :- conectado(C,X,Y,W,Z), ortogonal(W,Z,U,V), cel(U,V,C).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Celdas blancas que estan conectadas a una celda enumerada.&lt;br /&gt;
&lt;br /&gt;
b_conectado(X,Y) :- conectado(blanco,X,Y,U,V), cel(X,Y,blanco), numero(U,V,N).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% R1: Las celdas enumeradas son blancas.&lt;br /&gt;
&lt;br /&gt;
cel(X,Y,blanco) :- numero(X,Y,N).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% R2: Toda celda blanca pertenece a una isla.&lt;br /&gt;
%% R5: Las celdas blancas tienen que estar conectadas ortogonalmente.&lt;br /&gt;
&lt;br /&gt;
:- cel(X,Y,blanco), not b_conectado(X,Y).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% R3: Cada isla contiene exactamente una celda enumerada.&lt;br /&gt;
%% R6: Dos islas no pueden estar conectadas.&lt;br /&gt;
%% Estas dos reglas se pueden ver como que dos celdas enumeradas no pueden estar conectadas.&lt;br /&gt;
&lt;br /&gt;
:- conectado(blanco,X,Y,U,V), numero(X,Y,N), numero(U,V,N1), (X,Y) != (U,V).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% R4: Cada isla tiene que contener el mismo número de celdas blancas que el número que contiene.&lt;br /&gt;
&lt;br /&gt;
isla(X,Y) :- N{conectado(blanco,X,Y,U,V): pos(U,V)}N, numero(X,Y,N).&lt;br /&gt;
:- not isla(X,Y), numero(X,Y,N).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% R7: Todas las celdas negras tienen que estar conectadas ortogonalmente.&lt;br /&gt;
&lt;br /&gt;
:- cel(X,Y,negro), cel(U,V,negro), not conectado(negro,X,Y,U,V).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% R8: Ningún conjunto de celdas negras forma un cuadrado 2 x 2.&lt;br /&gt;
&lt;br /&gt;
:- cel(X,Y,negro), cel(X+1,Y,negro), cel(X,Y+1,negro), cel(X+1,Y+1,negro).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% Presentación.&lt;br /&gt;
&lt;br /&gt;
negro(X,Y) :- cel(X,Y,negro).&lt;br /&gt;
#show negro/2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/prolog&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mjoseh</name></author>
		
	</entry>
</feed>