*

\ 圍棋

: n 19 ; \ n*n board

: d 0 @ ; : d! 0 ! ; 1 n / d! \ delta
: h 1 @ ; : h! 1 ! ; d 2 / h! \ half delta
: s 2 @ ; : s! 2 ! ; 0 s! \ start

: 格線 s - d mod h - abs .004 < ;
: 格盤 ( 亮度 -- 盤 ) x 格線 y 格線 + * ;
: 棋盤 d >r h >r
.2 格盤 h s! d 6 * d! d 2 / h!
.1 格盤 + s -5 * s! d 3 * d!
.3 格盤 + r> h! r> d!
; 棋盤

: t0 3 @ ; : t0! 3 ! ; t t0 not * t0 + t0! \ t0 0 = if t t0! then

: it 4 @ ; : it! 4 ! ;
: is 5 @ ; : is! 5 ! ;
: ns 6 @ ; : ns! 6 ! ;

: ir 7 @ ; : ir! 7 ! ;
: ic 8 @ ; : ic! 8 ! ;
: nc 9 @ ; : nc! 9 ! ;

: r ( ix iy -- r ) d * h - negate y + dup * swap d * h - negate x + dup * + sqrt ;
: 之間 ( n a b -- a<=n<b ) >r over r> < >r >= r> and ;

: 白子 r .022 < ;
: 黑子 r .017 .025 之間 ;

: steps ( ns -- ) 2 + ns! t t0 - floor it! 0 is! 0 ;
: step ( p p' -- p" ) is it < * + is 1 + is! ;

: 星位小飛
6 steps
16 16 黑子 step 17 14 白子 step
14 16 黑子 step 18 16 白子 step
17 17 黑子 step 17 11 白子 step
; \ 星位小飛 ( 和平互圍 )

: 星位二間高夾
8 steps
16 4 黑子 step 14 3 白子 step
11 4 黑子 step 14 5 白子 step
17 6 黑子 step 16 2 白子 step
17 3 黑子 step 11 2 白子 step
; \ 星位二間高夾 ( 戰鬥夾攻 )

: 星位三三
13 steps
4 4 黑子 step 3 3 白子 step
4 3 黑子 step 3 4 白子 step
3 5 黑子 step 2 5 白子 step
3 6 黑子 step 2 6 白子 step
3 7 黑子 step 4 2 白子 step
5 2 黑子 step 3 2 白子 step
6 3 黑子 step
; \ 星位三三 ( 地勢兩分 )

: 星位混合互用
12 steps
4 16 黑子 step 6 17 白子 step
8 17 黑子 step 3 17 白子 step
4 17 黑子 step 3 16 白子 step
4 15 黑子 step 4 18 白子 step
5 18 黑子 step 3 18 白子 step
5 17 黑子 step 3 14 白子 step
; \ 星位混合互用

: cases_begin nc! 0 ir! ;
: case ic ir = * + ir 1 + ir! ;
: cases_end it ns >=
if ic 1 + nc mod ic! t t0!
then ;

2 cases_begin
星位二間高夾 case
星位三三 case
cases_end

comments powered by Disqus