Originally posted by SwissGambitPoint of order: a1, a2, a3, ... a8; then b1, b2, b3, ...; then c1, c2 ,c3 etc., h8 being the last in the sequence. Nice bit of sleuthing there, SG. Moral of the story: for disambiguation, use English descriptive notation (KR-Q1 or R/1-Q1, for those of us over 50 who learned the archaic system--and yes, I learned BASIC, COBOL, and FORTRAN w/ punched cards) or full algebraic (Rh1-d1).
You have to think like a programmer on this.
How will Russ implement moves in a PGN? He will scan the board, square by square, until he finds a piece that can make the move. At that point, he will have the program play it on the board, disregarding the fact that the move is ambiguous (this is typical of Russ' "shoot from the hip" coding style.
Originally posted by Fat LadyI guess it's time for a peon to move.
I was sorely tempted to play something very different here, but this looks deadly.
[pgn]
[Event "Dec 7 2013 game"]
[Site "?"]
[Date "2013.12.07"]
[Round "?"]
[White "Luke Myster and co"]
[Black "Fat Lady and co"]
[Result "*"]
[ECO "B96"]
[PlyCount "40"]
[SourceDate "2013.12.07"]
1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 Nbd7 ...[text shortened]... Qg4 g6 18. Nd6+ Bxd6
19. Rxd6 O-O 20. Rhd1 Rc8 21. Ne4 Qc7 {FL, 2013-12-13, 21:17 GMT}
[/pgn]
Rd2 (the bottom rook).
It looks wrong to me, but when visualizing continuations in my mind it's the best I can find.
Originally posted by moonbusYou only need one extra character to disambiguate algebraic in most cases. Simply "Rhd1" does it in this case.
Point of order: a1, a2, a3, ... a8; then b1, b2, b3, ...; then c1, c2 ,c3 etc., h8 being the last in the sequence. Nice bit of sleuthing there, SG. Moral of the story: for disambiguation, use English descriptive notation (KR-Q1 or R/1-Q1, for those of us over 50 who learned the archaic system--and yes, I learned BASIC, COBOL, and FORTRAN w/ punched cards) or full algebraic (Rh1-d1).
Originally posted by Proper KnobGood man. I was itching to play that but I just moved this morning. 😛
[pgn]
[Event "Dec 7 2013 game"]
[Site "?"]
[Date "2013.12.07"]
[Round "?"]
[White "Luke Myster and co"]
[Black "Fat Lady and co"]
[Result "*"]
[ECO "B96"]
[PlyCount "40"]
[SourceDate "2013.12.07"]
1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 Nbd7 7. f4 Qc7 8. Qf3 e6 9. O-O-O b5 10. Bxb5 axb5 11. Ndxb5 Qb8 12. Kb1 Be7 13. Bxf6 N ...[text shortened]... 6. fxe5 Nh5 17. Qg4 g6 18. Nd6+ Bxd6
19. Rxd6 O-O 20. Rhd1 Rc8 21. Ne4 Qc7 22. R1d2 Qc4
[/pgn]
Originally posted by SwissGambitYes. Alternatively, one could recode the program. Evidently the program halts at the first match. A thorough programmer would perform an exhaustive search, from a1 to h8, for every move (rather than halting at the first match); ambiguity would be discovered and a message could be sent to the console (such as: multiple pieces can reach the target square; please specify a unique source square). This would probably not slow down the program too much, given that in some cases it must search as far as h8 anyway.
You only need one extra character to disambiguate algebraic in most cases. Simply "Rhd1" does it in this case.
Originally posted by moonbusWith today's computing power, scanning a simple 8x8 array of characters is child's play.
Yes. Alternatively, one could recode the program. Evidently the program halts at the first match. A thorough programmer would perform an exhaustive search, from a1 to h8, for every move (rather than halting at the first match); ambiguity would be discovered and a message could be sent to the console (such as: multiple pieces can reach the target square; plea ...[text shortened]... not slow down the program too much, given that in some cases it must search as far as h8 anyway.
Ideally, Russ would have a full library of pure-chess functions by now; the same ones that run the playing interface could be employed in the PGN viewer. What you do is design the pure chess functions, and have those called from all the individual pages that need chess boards with legal moves. Whenever you add a new page with a board, you have a ready-made set of chess functions that will work immediately. All you have to do is transfer their output into your graphical interface.
Well, that's ideally. I've been guilty of the same thing. I will write some code and discover in an old program that I had already written some of the same functions. It's hard to keep organized and easy to get lazy and not document and organize a library.
SG wrote: "I will write some code and discover in an old program that I had already written some of the same functions. "
You're not the only one. Programmers must have re-invented the wheel a million times.
I still use a DOS-era text editor (called XyWrite) in preference to MS-Word. It does everything Word can do and will run from a USB stick (totally portable, runs on any Intel-based machine with a USB port). Word-users are astonished at how quickly it boots and opens and closes big files. Once they get over their shock at the CLI, that is.
Don't fix it, it's a smashing wee bug.
I wonder if there are any games in the chess forum where it has gone unoticed.
Also it may undo such games as Game 415116
Go to the position after Black's 16th move and play the next THREE White moves.
Have updated the game but am no longer playing. A move was taken back.
It was unambigious and therefore should have stood. Touch move etc..etc..