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相同。