Chapter 4 解謎
4.1 範例
pname <- c("俥", "將", "車", "兵", "炮", 
           "炮", "卒", "卒", "傌", "卒", 
           "卒", "俥", "帥", "卒")
px <- c( 5, 4, 4, 8, 9,
         9, 3, 5, 4, 5,
         6, 9, 4, 8)
py <- c( 9, 8, 7, 6, 5,
         4, 3, 3, 2, 2, 
         2, 2, 1, 1)
puzzle() %>% 
  add_one(pname, px, py) %>% 
  solve() %>% 
  player(c(9, 5), c(4, 5)) %>% 
  player(c(4, 7), c(4, 5)) %>% 
  replay()4.2 說明
建立新的謎題:
#> [[1]]
#> [[1]][[1]]
#> # A tibble: 1 x 3
#>   name      x     y
#>   <chr> <dbl> <dbl>
#> 1 name      1     1
#> 
#> [[1]][[2]]

棋盤上有座標提示,讓布局更容易。
透過 add_one() 擺放棋子,可以逐個擺放,或是一次放置多個:
pname <- c("兵", "卒", "士", "仕", "相", "炮")
px <- c(3,4,5,6,2,6)
py <- c(6,3,2,8,9,6)
puzzle() %>% 
  add_one("馬", 1, 1) %>% 
  add_one(pname, px, py)#> # A tibble: 7 x 3
#>   name      x     y
#>   <chr> <dbl> <dbl>
#> 1 馬        1     1
#> 2 兵        3     6
#> 3 卒        4     3
#> 4 士        5     2
#> 5 仕        6     8
#> 6 相        2     9
#> 7 炮        6     6
add_one() 只會告知布局的紀錄,如果對於座標不熟悉,或是想立刻查看布局的話,可以使用 add_one_pro():
#> Joining, by = c("x", "y")
#> [[1]]
#> [[1]][[1]]
#> # A tibble: 1 x 3
#>   name      x     y
#>   <chr> <dbl> <dbl>
#> 1 馬        1     1
#> 
#> [[1]][[2]]

add_one_pro() 可幫助逐步檢查,檢查完可再換回 add_one(),兩個函式交互使用是沒問題的。
使用 solve() 做最後檢查,並進入解謎的階段:
#> [[1]]
#> # A tibble: 0 x 3
#> # ... with 3 variables:
#> #   name <chr>, before <chr>,
#> #   after <chr>
#> 
#> [[2]]
#> # A tibble: 7 x 3
#>   name  at    state
#>   <chr> <chr> <lgl>
#> 1 馬    1,1   TRUE 
#> 2 兵    3,6   TRUE 
#> 3 卒    4,3   TRUE 
#> 4 士    5,2   TRUE 
#> 5 仕    6,8   TRUE 
#> 6 相    2,9   TRUE 
#> 7 炮    6,6   TRUE 
#> 
#> [[3]]

使用 player() 移動棋子,以及replay() 播放對戰的棋局,與對戰3相同。