Re: [Computer-go] gtp question - can black make 2 moves in a row.

2015-09-06 Thread Hellwig Geisse
On Sa, 2015-09-05 at 23:51 -0700, Ray Tayek wrote:
> i am guessing that the client should make the moves if he gets them.
> 
> does anyone know for sure?

From the GTP specification, page 18, 6.3.3 Core Play Commands:

"play:
[...]
Consecutive moves of the same color are not considered illegal
from the protocol point of view."

Hellwig

___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] gtp question for topological go program

2015-06-09 Thread Hellwig Geisse
Hi Ray,

GTP is a strictly asymmetric protocol, not intended to
be used directly between players. The specification draft
http://www.lysator.liu.se/~gunnar/gtp/gtp2-spec-draft2/gtp2-spec.html
expresses this clearly (1.3 Communication Model):
The protocol is asymmetric and involves two parties, which we call
controller and engine. The controller is typically some kind of arbiter
or relay and the engine is typically a go playing program. All
communication is initiated by the controller in form of commands, to
which the engine responds.

So if you want to let two instances of Go players play each other,
you need some controller in between, possibly split in two halves,
one half on either side of a network connection, with a separate
protocol for communication between the two controllers. This is the
usual situation when two programs are playing on a (remote) Go server.

Hellwig

___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [computer-go] matching 2 engines with sanity checks

2009-08-04 Thread Hellwig Geisse
On Mon, 2009-08-03 at 10:39 +0200, Folkert van Heusden wrote:
 CGOS does sanity checks on the moves played by the engines that are
 matched. Problem is that it might take a few hours before bugs get
 triggered (due to scheduling of matches).
 GoGui can let an engine play against itself and then does also does
 sanity-checks but it is possible that certain bugs in an engine won't
 get triggered.
 So I was wondering: are there any other tools available for matching
 engines WITH validity-checks?

Perhaps twogtp and an instance of GNU Go is what you are looking for.

Hellwig


___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] gtp which version to implement?

2009-07-15 Thread Hellwig Geisse
On Wed, 2009-07-15 at 11:24 +0200, Urban Hafner wrote:
 Carter Cheng wrote:
  Thanks everyone for the help thus far. I have been looking at the GTP
 protocol page and I am curious which version of the protocol I should
 try to implement if I want to communicate with the servers. Should I be
 looking at the GTP 2.0 draft version?
 
 You should implement (part of) the draft. It's widely used nowadays. I'm 
 not sure if there's any server out there that uses the old version.

Just to be clear on this point: GTP is not a server protocol, but
a protocol between a controller and an engine. If you want the
engine to connect to a server, there is still a bridge needed,
which communicates with the engine through GTP and with the server
through whatever protocol the server is speaking.

Hellwig

___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Experimentation

2009-07-07 Thread Hellwig Geisse
On Tue, 2009-07-07 at 17:09 +0100, Christian Nentwich wrote:
 [..] Unless you can, in the end, show that your algorithm can 
 outperform another one with the same time limit, you have not proved 
 that it is an advance. That is why tournaments are played with time 
 limits, not limits on the number of playouts. Time is an important 
 dimension of the game of Go.

This is somewhat funny: normally, it is Don who argues along
these lines.. ;-)

Hellwig

___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Language

2007-11-14 Thread Hellwig Geisse
On Wed, 2007-11-14 at 07:25 -0800, steve uurtamo wrote:
  And it's not fast either. Free() has a reputation of being
  slow, and that's not surprising if you look at the way it is
  almost always implemented: scanning a list of addresses in
  order to amalgamate the newly freed memory with adjacent free
  areas.
 
 this is a burden for the OS, not a defect in the language.  as far
 as the executing code is concerned, it's just releasing responsibility
 for the block attached to the pointer.  the OS can merrily insertion
 sort it for all i care, but that's being handled elsewhere and isn't a
 function of the language.  heck, the kernel could tell me that it's done
 within 2 microseconds and then give me an error on my next malloc
 because it isn't really done putting it back into place.  but that's fine
 with me, because of the way that i use memory.  i don't mind having
 to make friends with the OS.  it follows pretty clearly-defined rules.

No, sorry, this has nothing to do with the OS, but only with
the implementation within the stdlib library. The kernel gets
involved only when malloc() has exhausted its free list and
is requesting another big block of memory via the brk() system
call, which happens infrequently. So it *is*  a function of
(the implementation of) the language.

 having garbage collection happen at random times would really, really
 make it difficult for me to profile.  the reality is that the way
 i use memory, i know when i need it and when i need to get rid of
 it, and very frequently, once i've gotten all that i need, i don't need to
 ask for more for a really long time and can point to the exact place
 where i'm going to ditch it.

That's my point: Not all uses of memory follow the pattern
you are describing.

  My personal experience is: if you can tolerate the 5-10% loss
  in execution speed, a real garbage collector is invaluable.
 
 it sounds like you're working on more sophisticated code than i
 am, from the way that you describe using garbage collection.  i'm
 just a speed junkie who needs to use all of my ram to do scientific
 computing and i don't mind counting all of my own beans.

The type of software I had in mind was an interactive system,
running for days (or even months) without restarting, together
with the possibility of creating function closures. I find it
hard to imagine how you can do that without a garbage collector.

I realized such a system in plain C, but I wrote my own garbage
collector for it - I just saw no other way to determine when
objects created by the user's processes could be freed.

Hellwig

___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Language

2007-11-14 Thread Hellwig Geisse
On Wed, 2007-11-14 at 12:30 -0800, Christoph Birk wrote:
 I write (astronomical) instrument control software in C that
 runs for days (upto weeks). I call malloc() when I need memory
 and free() when the particular sub-task is done ... no problem.

Then you are a lucky guy... ;-)

With closures you almost never know when exactly the task is
done. They can float indefinitely within your system, they can
get part of other data structures, and last but not least, they
are cyclical in nature. *I* would have had many problems without
garbage collection.

But I will happily concede that these particular problems may
play no roll at all in computer Go - except if you decide to
program in a functional language. Then again, you won't do that
without a good GC.

Hellwig

___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Language

2007-11-12 Thread Hellwig Geisse
On Mon, 2007-11-12 at 20:17 -0800, steve uurtamo wrote:
 C
 garbage collection: free().

Well, that's not garbage collection. You will begin to notice
that if you are using shared data structures with different
lifetimes. The question that comes up again and again is can
I free this structure here or does any part of my program hold
a private pointer to this piece of data? It is sometimes
possible to group freeing objects (e.g., a compiler can free
data structures it needs to compile a function when the end
of the function is reached - this is called arena freeing)
but not always.

 very fast.

And it's not fast either. Free() has a reputation of being
slow, and that's not surprising if you look at the way it is
almost always implemented: scanning a list of addresses in
order to amalgamate the newly freed memory with adjacent free
areas.

My personal experience is: if you can tolerate the 5-10% loss
in execution speed, a real garbage collector is invaluable.

Hellwig

___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] GoGui and python

2007-08-24 Thread Hellwig Geisse
Thomas,

On Fri, 2007-08-24 at 17:26 -0500, Thomas Nelson wrote:

 command = raw_input()
 print = myName\n

the following is taken directly from the protocol specification:

-

2.6 Response Structure

If successful, the engine returns a response of the form 

=[id] result

Here '=' indicates success, id is the identity number given in the
command, and result is a piece of text ending with two consecutive
newlines.

-

Please note the two consecutive newlines.

As others have already pointed out, you have to flush the
output if it is buffered.

Hellwig

___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] GoGui and python

2007-08-24 Thread Hellwig Geisse
On Fri, 2007-08-24 at 19:11 -0400, George Dahl wrote:
 He has two consecutive newlines since print adds one unless the print
 statement has a comma at the end.
 - George

Ah, thanks, didn't know that. I suspected this to be the error
because the two newlines in responses are in my experience the
most overlooked detail in the GTP spec.

Hellwig

___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Re: Java hounds salivate over this:

2007-06-15 Thread Hellwig Geisse
On Fri, 2007-06-15 at 15:12 -0700, steve uurtamo wrote:
 my last $0.02 on this -- let me know when you've written
 a kernel in java, and tell me how fast your operating system
 (written entirely in java) runs.
 
 what?  that can't be done?  :)

Well, in fact that can be done... :-)

http://www.jnode.org/

Hellwig

___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] CGOS GTP

2007-03-28 Thread Hellwig Geisse
On Wed, 2007-03-28 at 13:44 -0700, Christoph Birk wrote:
 On Wed, 28 Mar 2007, Don Dailey wrote:
 
  One of the features I want to put into CGOS involves
  a new gtp command to inform the program of the opponent,
  game number, etc.I have not decided on the format
  of this new gtp command and it will of course not
  be required that you implement it.I will have to
  read the standard to see if there is already something
  in place.   Any suggestions?Basically I want to
 
 CGOS does no speak GTP. It uses your own protocol that
 already sends this information.

Well, I think CGOS in this case means the CGOS client,
which indeed does speak GTP. But you are right, this need
not be specified by Don - but if he doesn't, everybody will
invent his own way to get this information to the engine.

Hellwig

___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Help me test CGOS

2007-03-28 Thread Hellwig Geisse
On Wed, 2007-03-28 at 17:49 -0400, Don Dailey wrote:
 That's awesome if you have a cgos client in C,  I would be
 happy to post the source code and/or binaries.

Yes, this is a cgos client in C, but only for the old
protocol yet. You can download the source from
http://homepages.fh-giessen.de/~hg53/go/cgosGtp.tar.gz
Please feel free to do with it whatever you want.

 I warn you however, the protocol may change - I have not
 finalized it.   Although it's not likely anything major.

That's the reason I wanted to wait a little bit until
I start to translate the new client to C.

Hellwig

___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Help me test CGOS

2007-03-27 Thread Hellwig Geisse
Jacques,

On Tue, 2007-03-27 at 11:03 +0100, Jacques BasaldĂșa wrote:
 Could the source code of this client be open?

I just finished the translation of the old TCL script cgosGtp.tcl
to plain C (for those of us who don't want to run a scripting language
interpreter just to connect to CGOS). You can find it here:

http://homepages.fh-giessen.de/~hg53/go/cgosGtp.tar.gz

Please note that this is not quite what you are looking for, but
I intend to do the same translation with the new script as soon as
it has stabilized.

Don,

I translated your script almost without changes. I changed the
log output to use the arrows a bit more consistently, though.
And the program waits for an answer to the quit command sent
to the engine; this is according to the GTP specification which
requests The controller must receive the response before the
connection is closed on its side.

Hellwig

___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/