Discussion:
[computer-go] An electronic copy of "Graded Go Problems for Beginners"
House, Jason J.
2006-09-21 18:32:49 UTC
Permalink
Does anyone have (or know where to find) an electronic (ie. .sgf, .go,
etc) version of the graded go problems for beginners books? I own the
books and like the problems. I think that they'd make an excellent
test for a computer program, I'm just a bit lazy about manually
entering all four books.
Jeff Nowakowski
2006-09-21 22:16:24 UTC
Permalink
Post by House, Jason J.
Does anyone have (or know where to find) an electronic (ie. .sgf, .go,
etc) version of the graded go problems for beginners books? I own the
books and like the problems. I think that they'd make an excellent
test for a computer program, I'm just a bit lazy about manually
entering all four books.
It doesn't matter if you own the books or not. What you are asking for
is an infringement of copyrighted materials. I understand your
intentions are honorable, but once electronic copies of copryighted
materials start floating around it is impossible to distinguish
copyright violators from legitimate owners.

Some might even argue that you can't make an electronic version even if
you own the book, though I'm not willing to take that side of the
debate. I just mention it for completeness.

-Jeff
Phil G
2006-09-22 03:48:41 UTC
Permalink
Post by House, Jason J.
Does anyone have (or know where to find) an electronic (ie. .sgf, .go,
etc) version of the graded go problems for beginners books? I own the
books and like the problems. I think that they'd make an excellent
test for a computer program, I'm just a bit lazy about manually
entering all four books.
It doesn't matter if you own the books or not. What you are asking for
is an infringement of copyrighted materials. I understand your
intentions are honorable, but once electronic copies of copryighted
materials start floating around it is impossible to distinguish
copyright violators from legitimate owners.
While I am not an attorney, I believe Jason's proposed use would be covered under the "fair use" doctrine as described in section 107 of the copyright law. Now if he didn't own the books, I might have a different opinion regarding this request - then maybe only a few examples would be allowed under the "fair use" doctrine. Of course, the person providing the electronic version might infringe on the copyright, if in fact Jason didn't own the books.

Again there is no clear distinction between "fair use" and infringement - only the copyright holder or the courts can make a final determination. And even then the burden of proof is on copyright holder to show infringement of the copyright.

Phil
House, Jason J.
2006-09-22 14:13:08 UTC
Permalink
Post by Phil G
While I am not an attorney, I believe Jason's proposed use would
be covered under the "fair use" doctrine as described in section
107 of the copyright law. Now if he didn't own the books, I might
have a different opinion regarding this request - then maybe
only a few examples would be allowed under the "fair use"
doctrine. Of course, the person providing the electronic version
might infringe on the copyright, if in fact Jason didn't own the
books.
Again there is no clear distinction between "fair use" and
infringement - only the copyright holder or the courts can make a
final determination. And even then the burden of proof is on
copyright holder to show infringement of the copyright.
What inspired the question, was actually the thesis someone posted to
the list. In the thesis, they show how their algorithms performed on a
subset of problems from Graded Go Problems for Beginners. Using just
book 1 as an example, they had results for every other problem, and
only up to problem 128 (a quick look in the book and I saw the problem
numbers exceed 200). At first I wondered if the author had selected a
more favorable subset of problems to show their results, and then I
realized that it might be more of a "fair use" set of problems (to use
Phil's terms). That then gave me hope that some kind of electronic
copy would exist somewhere. For completeness, I'm referring to table
4.2 from http://cs.nyu.edu/web/Research/Theses/klinger_tamir.pdf.
Mark Boon
2006-09-22 18:11:26 UTC
Permalink
A while ago there was a discussion about storing results of tactical
searches. Since I'm just starting to touch the tactical search area
in my new project I decided to review the situation.

So as a start I decided to gather some simple statistics (based on
this 40,000 game collection discussed before). First of all there are
about 8.5 million moves in this collection, making an average of 210
per game. So far I had always assumed this to be in the 225-250 move
range. But probably the number of games that get resigned reduces the
number somewhat.

Next I counted the number of tactical 2-liberty searches there are in
an average position. For this I needed to know how many chains are in
atari on average, and how many chains have 2 liberties. The
respective numebrs turn out to be 2.3 and 7.7, making it a nice round
10 per move. Somehow I had thought these number would have been
larger....

Next I'll have to see whether it's faster to simply read those 10, or
if time can be gained by a clever algorithm that only reads those
that are affected by the last move. I'll post those results too when
I get to it.

Mark Boon
Mark Boon
2006-09-22 21:03:53 UTC
Permalink
Not really a Go programming topic, but I was just wondering if anyone
is using this.

I first got interested in AOP about two years ago. But I never
actually used it as my clients weren't interested in this newfangled
idea. It seemed pretty powerful to me though. And actually a very
elegant concept.

So now that I'm free to use whatever technology I like I started to
use AspectJ today, for the first time. And it's really cool. To avoid
memory-allocation and garbage-collection too often I use object-
pooling. For this I have a simple interface called FlyWeight, which
does nothing than defining a recycle method:

public interface Flyweight
{
public void recycle();
}

I use static factory classes that actually allocate and pool the
objects. Constructors are never public. When the recycle() method is
called I return the object to the factory it came from so it can be
reused.

Since I avoid the garbage-collector this way, I also have the
responsibility of the object life-times again. So it's easy to end up
with dangling references, just like in the old C++ days. To detect
dangling references, I end up having a lot of code (with conditional
compilation, but still) to check if an object gets accessed after it
has been recycled. That's basically the same as accessing a dangling
pointer.

With AOP that's all a thing of the past. With just a little bit of
code, all my FlyWeight derived classes have automatic dangling
reference detection. It looks like this:

import tesuji.core.util.FlyWeight;

public aspect DanglingReferenceChecker
{
private boolean FlyWeight.isInFactory = false;

pointcut factoryCall() : call(static * *Factory.create*());
pointcut methodCall() : call(* *.*(..));
pointcut recycleCall() : call(* FlyWeight.recycle());

after() returning (FlyWeight flyWeightObject) : factoryCall()
{
flyWeightObject.isInFactory = false;
}

before(FlyWeight flyWeightObject) : target(flyWeightObject) &&
methodCall()
{
if (flyWeightObject.isInFactory)
throw new IllegalStateException();
}

after(FlyWeight flyWeightObject) : target(flyWeightObject) &&
recycleCall()
{
flyWeightObject.isInFactory = true;
}
}

That's all! So the following code throws an exception at the second
call to setMoveNr().

GoMove move = GoMoveFactory.createGoMove();
move.setMoveNr(1);
move.recycle();
move.setMoveNr(2);

The only drawback I see is that I've (so far) only got it to work if
the factory methods take no arguments. So I need setXX methods even
for members that I'd like to set on initialisation only. But that's a
small price to pay for something that's going to save me enormous
amounts of work. Oh, and the other drawback is that I still have to
see how I can run my unit-tests with aspects activated.

The good part is that it saves me a lot of work of decorating all my
FlyWeight derived objects with code like

if (CHECK_REFERENCES && isInFactory())
throw new IllegalStateException();

in just about every method. The aspect also removes the need of the
isInFactory boolean in all derived classes. The whole checking code
when running in normal mode has actually no influence on the
application whatsoever.

OK, just got excited over this new bit of technoloy. I won't bore you
guys any longer with something so obviously off-topic :-)

Mark Boon
Darren Cook
2006-09-23 23:30:47 UTC
Permalink
So now that I'm free to use whatever technology I like I started to use
AspectJ today, for the first time. And it's really cool.
I've also though aspects could be useful, but they share a problem with
any extra pre-compile stage (*): compiler errors and debuggers get weird

Perhaps Java is better in this regard, and the tools are aspect-aware?
I'd be interested to hear from anyone using C++ and aspects who is not
having this problem.

Darren

*: I've also experimented in using PHP to generate the part of my
tactical search code that orders moves: all the move ordering rules are
kept in a PHP array. It was a wonderful lever: I could add new rules,
and swap their order, very easily. But one-step forward, one-step back:
if I got a compiler error I had to look it up in the generated file,
then hunt in my PHP for the lines that generated the the problem line.
Mark Boon
2006-09-24 15:08:18 UTC
Permalink
Post by Darren Cook
I've also though aspects could be useful, but they share a problem with
any extra pre-compile stage (*): compiler errors and debuggers get weird
Perhaps Java is better in this regard, and the tools are aspect-aware?
I'd be interested to hear from anyone using C++ and aspects who is not
having this problem.
Yes, there's a plug-in to use AspectJ for Eclipse. It's fully
integrated, so no problems with compiler errors or debugger. And you
get little icons next to the lines that are affected by the aspects
and you can click through to the related code.

Mark

Ray Tayek
2006-09-24 06:03:27 UTC
Permalink
Post by Mark Boon
Not really a Go programming topic, but I was just wondering if
anyone is using this.
it is used in a lot in spring
<http://www.springframework.org/docs/wiki/Spring_AOP_Framework.html>
and hibernate <http://www.hibernate.org/115.html>.


---
vice-chair http://ocjug.org/
Ben Shoemaker
2006-09-22 05:56:20 UTC
Permalink
Here are the (legal) SGF problem collections I have seen:

http://t-t.dk/madlab/problems/

http://www.cs.ualberta.ca/~mmueller/cgo/cgtc.html

http://www.u-go.net/classic/

http://goproblems.com/download.html

Ben.

----- Original Message ----
From: "House, Jason J." <***@mitre.org>
To: computer-go <computer-***@computer-go.org>
Sent: Thursday, September 21, 2006 1:32:49 PM
Subject: [computer-go] An electronic copy of "Graded Go Problems for Beginners"





Does anyone have (or
know where to find) an electronic (ie. .sgf, .go, etc) version of the graded go
problems for beginners books? I own the books and like the problems.
I think that they'd make an excellent test for a computer program, I'm just a
bit lazy about manually entering all four
books.
Continue reading on narkive:
Loading...