-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparser_test.go
More file actions
318 lines (251 loc) · 14.6 KB
/
Copy pathparser_test.go
File metadata and controls
318 lines (251 loc) · 14.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
package fm3
import (
"testing"
"strings"
)
func TestParse1(t *testing.T) {
lines := []string {
"ばか詰 15手",
"",
"9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1",
"+---------------------------+ +---------------------------+",
"| ・ ・ ・ ・ ・ ・ ・ 金 金|一 | ・ ・ ・ ・ ・ ・ ・ 金 金|一",
"| ・ ・ ・ ・v玉 ・ 金 ・ 金|二 | ・ ・ ・ ・ ・ ・ ・v玉 ・|二",
"| ・ ・ ・ ・ ・ ・ ・ ・ ・|三 | ・ ・ ・ ・ ・ 金 ・ ・ ・|三",
"| ・ ・ ・ ・ ・ ・ ・ ・ ・|四 | ・ ・ ・ ・ ・ ・ ・ ・ 金|四",
"| ・ ・ ・ ・ ・ ・ ・ ・ ・|五 | ・ ・ ・ ・ ・ ・ ・ ・ ・|五",
"| ・ ・ ・ ・ ・ ・ ・ ・ ・|六 | ・ ・ ・ ・ ・ ・ ・ ・ ・|六",
"| ・ ・ ・ ・ ・ ・ ・ ・ ・|七 | ・ ・ ・ ・ ・ ・ ・ ・ ・|七",
"| ・ ・ ・ ・ ・ ・ ・ ・ ・|八 | ・ ・ ・ ・ ・ ・ ・ ・ ・|八",
"| ・ ・ ・ ・ ・ ・ ・ ・ ・|九 | ・ ・ ・ ・ ・ ・ ・ ・ ・|九",
"+---------------------------+ +---------------------------+",
"持駒:なし 持駒:なし",
}
probs := Parse(lines)
if len(probs) != 1 {
t.Errorf("got: %d want: 1", len(lines))
}
wantB := NewCircum()
wantB.Hither = true
wantB.Board[1][1] = &Piece {
Hither: true,
Name: KI,
}
wantB.Board[1][2] = &Piece {
Hither: true,
Name: KI,
}
wantB.Board[2][1] = &Piece {
Hither: true,
Name: KI,
}
wantB.Board[3][2] = &Piece {
Hither: true,
Name: KI,
}
wantB.Board[5][2] = &Piece {
Hither: false,
Name: OU,
}
want := &Prob {
step: 15,
board: wantB,
}
if probs[0].step != want.step {
t.Error("got: %d want: %d", probs[0].step, want.step)
}
if probs[0].board.hash() != want.board.hash() {
t.Errorf("got: %s\nwant: %s", probs[0].board, want.board)
}
}
func TestParseMulti(t *testing.T) {
text := `
金1色詰で、金が連結した形から選題
----
ばか詰 11手
9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1
+---------------------------+ +---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一 | ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二 | ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三 | ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・ ・|四 | ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| ・ ・ ・ ・v玉 ・ ・ 金 ・|五 | ・ ・ ・ 金 金 ・ ・ ・ ・|五
| ・ ・ ・ ・ ・ ・ 金 ・ ・|六 | ・ ・ ・ ・v玉 ・ 金 ・ ・|六
| ・ ・ ・ ・ ・ 金 ・ ・ ・|七 | ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ 金 ・ ・ ・ ・|八 | ・ ・ ・ ・ 金 ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九 | ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+ +---------------------------+
持駒:なし 持駒:なし
46金直 44玉 35金寄 54玉 45金寄 65玉 55金上 66玉 65金 56玉
55金右 まで 11手
▼神無七郎
金1色での代表的な詰上り。金1色・連結型の条件では左真樹氏の17手詰が有
名だが、それもこの詰上りである。
-----2
ばか詰 13手
9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1
+---------------------------+ +---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一 | ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二 | ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三 | ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・v玉|四 | ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| ・ ・ ・ ・ ・ ・ ・ ・ ・|五 | ・ ・ ・ ・ ・ ・ ・ ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ ・ 金|六 | ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ ・ ・ ・ 金|七 | ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・ ・ 金|八 | ・ ・ ・ ・ ・ ・ 金 金 金|八
| ・ ・ ・ ・ ・ ・ ・ ・ 金|九 | ・ ・ ・ ・ ・ ・ ・v玉 ・|九
+---------------------------+ +---------------------------+
持駒:なし 持駒:なし
25金 同玉 16金 36玉 26金 37玉 27金引 38玉 28金上 39玉
38金 29玉 28金引 まで 13手
▼神無七郎
3金で綺麗に詰上がる。
この詰上りを中央で実現しようとすると、形が直線型にならない。
-----3
ばか詰 13手
9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1
+---------------------------+ +---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一 | ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二 | ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三 | ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・v玉|四 | ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| ・ ・ ・ ・ ・ ・ ・ ・ ・|五 | ・ ・ ・ ・ ・ ・ ・ ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ 金 ・|六 | ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ ・ ・ 金 ・|七 | ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・ 金 ・|八 | ・ ・ ・ ・ ・ ・ ・ 金 金|八
| ・ ・ ・ ・ ・ ・ ・ 金 ・|九 | ・ ・ ・ ・ ・ ・ ・ ・v玉|九
+---------------------------+ +---------------------------+
持駒:なし 持駒:なし
25金 同玉 16金 36玉 27金 同玉 38金 18玉 17金 29玉
28金 19玉 18金引 まで 13手
▼神無七郎
前作の姉妹作。金を2枚捨てるのが意表を突く。
玉が隅に入る詰上りは、金が38にあって、17から玉が潜り込む形が多い。他の入
り方だと非限定が生じるからである。この作は最初から38に金が居るのではなく、
動いて38に行くようになっている。この点でも珍しい作である。
-----4
ばか詰 13手
9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1
+---------------------------+ +---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一 | ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二 | ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三 | ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・ ・|四 | ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| ・ ・ ・ ・ ・ ・ ・ ・ ・|五 | ・ ・ ・ ・ ・ ・ ・ ・ ・|五
| ・ ・ ・ ・ 金 ・ ・ ・ ・|六 | ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ 金 金 ・ ・ ・ ・|七 | ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ 金 ・v玉 ・ ・|八 | ・ ・ ・ 金 金 ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九 | ・ ・ ・ ・v玉 ・ 金 ・ ・|九
+---------------------------+ +---------------------------+
持駒:なし 持駒:なし
48金 39玉 38金 49玉 39金 59玉 58金 同玉 57金引 69玉
68金 59玉 58金引 まで 13手
▼神無七郎
この詰上りでは、たいてい金1枚が不要駒になる。本局は金捨てが入って、不要
駒のない完全作になっている。
-----5
ばか詰 13手
9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1
+---------------------------+ +---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一 | ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二 | ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三 | ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ 金 ・ 金 ・ ・ ・|四 | ・ ・ ・ 金 金 ・ ・ ・ ・|四
| ・ ・ ・ ・ 金 ・ ・ ・ ・|五 | ・ ・ ・ ・v玉 ・ 金 ・ ・|五
| ・ ・ ・ ・ 金 ・ ・ ・ ・|六 | ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ ・ ・ ・ ・|七 | ・ ・ ・ ・ 金 ・ ・ ・ ・|七
| ・ ・ ・ ・v玉 ・ ・ ・ ・|八 | ・ ・ ・ ・ ・ ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九 | ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+ +---------------------------+
持駒:なし 持駒:なし
57金 48玉 58金 37玉 48金 46玉 45金寄 36玉 35金 46玉
57金 55玉 54金右 まで 13手
▼神無七郎
「Y字型」。詰上りは例の形である。ジグザグ型や「y型」もこの詰上りの完全
作がある。
-----6
ばか詰 15手
9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1
+---------------------------+ +---------------------------+
| ・ ・ ・ ・ ・ ・ ・ 金 金|一 | ・ ・ ・ ・ ・ ・ ・ 金 金|一
| ・ ・ ・ ・v玉 ・ 金 ・ 金|二 | ・ ・ ・ ・ ・ ・ ・v玉 ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三 | ・ ・ ・ ・ ・ 金 ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・ ・|四 | ・ ・ ・ ・ ・ ・ ・ ・ 金|四
| ・ ・ ・ ・ ・ ・ ・ ・ ・|五 | ・ ・ ・ ・ ・ ・ ・ ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ ・ ・|六 | ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ ・ ・ ・ ・|七 | ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・ ・ ・|八 | ・ ・ ・ ・ ・ ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九 | ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+ +---------------------------+
持駒:なし 持駒:なし
42金 53玉 52金 43玉 53金 32玉 31金 23玉 13金 24玉
14金 33玉 43金 22玉 21金左 まで 15手
▼神無七郎
例の形と比べ、上を押さえる金の位置がずれている。15手詰は25局あるが、ほと
んど中段玉か入玉型である。
-----7
ばか詰 17手
9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1
+---------------------------+ +---------------------------+
| 金 金 金 ・ ・ ・ ・ ・ ・|一 | 金 ・v玉 ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ 金 ・v玉 ・ ・ ・|二 | ・ ・ ・ 金 ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三 | ・ ・ 金 ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・ ・|四 | ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| ・ ・ ・ ・ ・ ・ ・ ・ ・|五 | ・ ・ ・ ・ ・ ・ ・ ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ ・ ・|六 | ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ ・ ・ ・ ・|七 | ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・ ・ ・|八 | ・ ・ ・ ・ ・ ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九 | ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+ +---------------------------+
持駒:なし 持駒:なし
52金 43玉 42金 53玉 43金 62玉 72金 同玉 82金 73玉
83金 62玉 73金 61玉 52金 71玉 62金寄 まで 17手
▼神無七郎
わずか2局しかない17手詰のひとつ。長手数に拘らず、かなり異常なパターンで
ある。
【参考作品】
1色詰め作品は左真樹氏が多く発表しているが、金1色の完全作は次の2作。
最初の作は、この詰上り型で不要駒の発生しない珍しい例。
後の作は金1色の最長手数。初形も1直線で、金1色を代表する名作である。
----
79-9 左真樹
ばか詰 11手
9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1
+---------------------------+ +---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一 | ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二 | ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三 | ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・ ・|四 | ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| ・ ・ ・ ・ ・ ・ ・ ・ ・|五 | ・ ・ ・ ・ ・ ・ ・ ・ ・|五
| ・ ・ ・ ・v玉 ・ ・ ・ ・|六 | ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ ・ ・ ・ ・|七 | ・ ・ ・ ・ ・ 金 ・ ・ ・|七
| ・ ・ ・ 金 金 金 ・ ・ ・|八 | ・ ・ 金 金 金 ・ ・ ・ ・|八
| ・ ・ ・ ・ 金 ・ ・ ・ ・|九 | ・ ・ ・v玉 ・ ・ ・ ・ ・|九
+---------------------------+ +---------------------------+
持駒:なし 持駒:なし
47金直 66玉 57金左 77玉 67金寄 78玉 68金上 79玉 78金 69玉
68金引 まで 11手
80-3 左真樹(例題)
ばか詰 17手
9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1
+---------------------------+ +---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一 | ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二 | ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三 | ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ 金 ・ ・ ・ ・|四 | ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| ・ ・ ・ ・ 金 ・ ・ ・ ・|五 | ・ ・ ・ 金 金 ・ ・ ・ ・|五
| ・ ・ ・ ・ 金 ・ ・ ・ ・|六 | ・ ・ ・ ・v玉 ・ ・ ・ ・|六
| ・ ・ ・ ・ 金 ・ ・ ・ ・|七 | ・ ・ ・ ・ ・ ・ 金 ・ ・|七
| ・ ・ ・ ・ ・ ・ ・ ・ ・|八 | ・ ・ ・ ・ 金 ・ ・ ・ ・|八
| ・ ・ ・ ・v玉 ・ ・ ・ ・|九 | ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+ +---------------------------+
持駒:なし 持駒:なし
58金 49玉 59金 38玉 49金 47玉 46金 37玉 36金 47玉
37金 57玉 58金 66玉 65金 56玉 55金引 まで 17手
----
`
probs := Parse(strings.Split(text, "\n"))
if len(probs) != 9 {
t.Errorf("got: %d want: %d", len(probs), 9)
}
}