cyclops wrote:
ok, in mathematical term we are talking about graphs. I will forget about topology. Your included documents will keep me quiet for a while, but at least I am able to follow your discussion for a while.
Hi, cyclops,
May be that some ideas are borrowed from Graph Theory, some ideas from Topology, combined with the concept of "Inheritance" from Object-Oriented Programming.
What follows, is the first written version of my idea. So it is possible that some wording may need some sharpening.
A set of board points, that consists of points with the same property, which are connected along the lines of the board, will be referred to as "
area". In the following text "connected along the lines of the board" will be referred to as "
line-connected".
Let "
string" be defined as "area that is occupied by stones of only one colour".
Let the property "
object.closed" be defined as "there are two distinct areas, which are line-connected to the object".
If object.closed is "TRUE", you have to decide on one of the divided parts of the board for further evaluation of the object.
Let's have a function "
inside()", which identifies the respective board-points as "inside(object, point) = TRUE". This function will be expanded several times in the course of the text below.
Single string with - colloquially spoken - 2 eyesLet "
minimum" be defined as extension of string. Let it have 2 not line-connected board-points with "inside(string, point) = TRUE".
(1) Its property "
string.territory" is TRUE.
To simplify the following text, "board-points with "inside(object, point) = TRUE"" will be referenced to as "
inside" points of the object.
The set of line-connected inside points will be referred to as "
inside area".
Let the property "
object.clumsy" be defined as "there is only one area, which is line connected to the object and does not include the whole edge of the board".
Let "
larger" be defined as extension of minimum. Let the number of inside-points be greater than 2.
The inside points can be empty or occupied by opposing strings ("
string.empty = TRUE" / "string.empty = "FALSE").
(1a) If they are empty, the property string.territory remains TRUE.
All but two not line-connected inside points can be filled with stones of the string's colour.
(1b) If they are not empty, the opposing strings can be .clumsy or not.
(1b1) If they are .clumsy, they cannot fill all inside points of the string. So the string will remain on the board.
The string's owner can fill inside points, so that the .clumsy opponent's strings will be taken off the board. The inside points will become empty.
(1b2) If the opponent's strings are not .clumsy, the string's owner can either take them off the board or not.
(1b2a) If he can take the opponent's strings off the board, the inside points are empty again.
(1b2b) If he cannot take the opponent's strings off the board, the property "string.territory" will be set to "FALSE".
Single string with - colloquially spoken - 1 eyeLet "
not-yet" be defined as extension of string. Let it have at least 1 board-point with "inside(string, point) = TRUE".
(2a) "not-yet" can be forced to become "larger" >>> see above.
(2b) "not-yet" can be forced to become "minimum" >>> see above.
In both cases, the property not-yet.territory will be "TRUE".
(2c) Else: nothing can be concluded about the string alone.
Single strings with - colloquially spoken - more than 2 eyesLet "
more" be an extension of "minimum". Let the number of not-line-conneted inside points be 3 (more than "3" can be processed similar).
(3) more.territory = TRUE.
To enlarge the number of inside points of "more" will be widely similar to the procedure with "larger" above.
(3a) "string.empty = TRUE" is as above.
(3b1) "string.empty = FALSE" with opposing "string.clumsy = TRUE"" is as above.
(3b2) Let only 2 of the three inside areas become empty. This forces "inside(string, points)" for the points of the third area to became "FALSE", let us expand the inside-function for this purpose. The property "string.territory" will remain "TRUE" (with impact on the other two inside areas).
(3b3) Let at most 1 of the three inside areas become empty. The property "string.territory" will be set to "FALSE".
Two strings with - colloquially spoken - 2 eyesLet "
diagonally-touched" be defined as "not line-connected, but occupying two diagonally adjacent board points".
Let "
stringstring" be defined an extension of string as "set of strings, which are diagonally touched or of which one is positioned inside another one".
The usage of "or" is not exclusive.
Let's expand the function "inside" now again. "inside(set of objects, point)" shall identify the board-points as "TRUE", for which "inside(set of objects, point)" or at least one "inside(single object, point)" becomes "TRUE".
Let "
group" be defined as compound of stringstring and string. Let it have 2 not line-connected board-points with "inside(group, point) = TRUE".
(4) Its property "group.territory" is TRUE.
Let "
s_minimum" be defined as extension of "stringstring". Let it have 2 not line-connected board-points with "inside(stringstring, point) = TRUE".
(4a) Its property "stringstring.territory" is TRUE; the property "string.territory" of both strings of stringstring is TRUE also.
"s_minimum" behaves like "minimum".
Not diagonally touched
For example, this is Nakade and circles.
(4b1) The two strings can be transformed to "minimum" together >>> see above.
(4b2) The two strings can be transformed to "g_minimum" together >>> see above.
.territory will become "TRUE".
(4b3) Else: nothing can be concluded about the two strings in conjunction.
Diagonally touched
Let "diagonally connected" be defined as "diagonally touched and there cannot be established a permanent stone of opposing colour on both of the two other "cutting points" at at least one diagonally touching.
Let one of the two strings be "minimum".
(4c1a) If the two strings are diagonally connected, "string.territory" of the other string will be "TRUE" also.
(4c1b) If the two strings are not diagonally connected, nothing can be concluded about the other string from "minimum".
Let none of the two strings be "minimum".
(4c2a) The two strings can be transformed to "minimum" together >>> see above.
(4c2b) The two strings can be transformed to "s_minimum" together >>> see above.
.territory will become "TRUE".
(4c2c) Else: nothing can be concluded about the two strings in conjunction.
Two strings with - colloquially spoken - 1 eye(5a) The two strings can be transformed to "minimum" together >>> see above.
(5b) The two strings can be transformed to "g_minimum" together >>> see above.
.territory will become "TRUE".
(5c)Else: Else: nothing can be concluded about the two strings in conjunction.
Two strings with - colloquially spoken - more than 2 eyes.Let "s_more" be an extension of "s_minimum". Let the number of not-line-connected inside points be 3 (more than "3" can be processed similar).
(6) "g_more" behaves like "more".
More than two strings with - colloquially spoken - 2 eyes(7a) Let at least one of the two strings be "minimum".
.territory will become "TRUE".
See above.
(7b) Let at least one pair of strings be "g_minimum".
.territory will become "TRUE".
See above.
More than 2 strings(8) More that 2 strings can be treated similar to above, by referring to pairs of strings.