计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
validate-piles-notation【效率与协作】jigsawRのピースフュージョングループを指定するためのPILES(Puzzle Input Line Entry System)記法を解析・検証する。構文検証、グループリストへの解析、 平易な説明、パズル結果に対する隣接検証、ラウンドトリップシリアライズを カバー。generate_puzzle()に渡す前のユーザー提供PILES文字列の検証、 フュージョングループの問題デバッグ、ユーザーへの記法説明、 ラウンドトリップ解析/シリアライズの忠実性テストに使用する。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
パズルピースフュージョングループのためのPILES記法文字列を解析・検証する。
generate_puzzle()に渡す前のユーザー提供PILES文字列の検証"1-2-3,4-5")"center"、"ring1"、"R1"などのキーワードサポート用)library(jigsawR)
result <- validate_piles_syntax("1-2-3,4-5")
# Returns TRUE if valid, error message if invalid
一般的な構文エラーを確認する:
"1-2(-3)-4" で()が不一致-、,、:、(、)とキーワードのみ許可"1-2,,3-4"(二重カンマ)期待結果: 有効な構文の場合はTRUE、無効な場合は説明的なエラー。
失敗時: 正確なPILES文字列と検証エラーメッセージを出力する。
groups <- parse_piles("1-2-3,4-5")
# Returns: list(c(1, 2, 3), c(4, 5))
範囲を含む文字列の場合:
groups <- parse_piles("1:6,7-8")
# Returns: list(c(1, 2, 3, 4, 5, 6), c(7, 8))
期待結果: 整数ベクトルのリスト(フュージョングループごとに1つ)。正しいピースIDとグループ境界を持つ。
失敗時: PILES文字列がステップ1で構文検証を通過しているか最初に確認する。解析が予期しないグループを返す場合、-がグループ内のピースを区切り、,がグループを区切ること、および範囲記法(:)が両端を含む形で展開されることを確認する。
各グループをユーザーに説明する:
"1-2-3,4-5" -> 「グループ1: ピース1、2、3を融合。グループ2: ピース4と5を融合。」"1:6" -> 「グループ1: ピース1から6を融合(6ピース)。」"center,ring1" -> 「グループ1: 中心ピース。グループ2: リング1のすべてのピース。」期待結果: 各フュージョングループがピース数と識別子とともに平易な言葉で説明され、非技術的なユーザーにも記法が理解可能になる。
失敗時: キーワードが説明できない場合(例: "ring1"が明確な意味を持たない)、記法にはコンテキストとしてパズル結果オブジェクトが必要な場合がある。ユーザーにパズルタイプを提供するか、代わりに数値ピースIDを使用するようアドバイスする。
パズル結果オブジェクトが利用可能な場合、以下を確認する:
# Generate the puzzle first
puzzle <- generate_puzzle(type = "hexagonal", grid = c(3), size = c(200))
# Parse with puzzle context (resolves keywords)
groups <- parse_fusion("center,ring1", puzzle)
確認事項:
期待結果: すべてのピースIDが有効。隣接するピースがクリーンに融合される。
失敗時: 無効なピースIDまたは非隣接ペアをリストする。
解析/シリアライズの忠実性を検証する:
original <- "1-2-3,4-5"
groups <- parse_piles(original)
roundtrip <- to_piles(groups)
# roundtrip should equal original (or canonical equivalent)
groups2 <- parse_piles(roundtrip)
identical(groups, groups2) # Must be TRUE
期待結果: ラウンドトリップが同一のグループリストを生成し、parse_piles()とto_piles()が逆関数であることを確認する。
失敗時: ラウンドトリップが異なる場合、シリアライザが記法を正規化しているか確認する(例: ピースIDのソートや範囲を明示的リストへの変換)。identical(groups, groups2)がTRUEを返す限り、正規化の違いは許容される。
# 基本構文
"1-2" # ピース1と2を融合
"1-2-3,4-5" # 2つのグループ: (1,2,3)と(4,5)
"1:6" # 範囲: ピース1から6
# キーワード(puzzle_resultが必要)
"center" # 中心ピース(hex/concentric)
"ring1" # リング1のすべてのピース
"R1" # 行1(rectangular)
"boundary" # すべての境界ピース
# 関数
parse_piles("1-2-3,4-5") # PILES文字列を解析
parse_fusion("1-2-3", puzzle) # フォーマットを自動検出
to_piles(list(c(1,2), c(3,4))) # PILESに変換
validate_piles_syntax("1-2(-3)-4") # 構文を検証
validate_piles_syntax()が有効な文字列に対してTRUEを返すparse_piles()が正しいグループリストを返す"center"のようなキーワードにはパズル結果オブジェクトが必要。parse_piles()ではなくparse_fusion()に渡すこと。"1:6"は両端を含む(1, 2, 3, 4, 5, 6)。generate-puzzle — フュージョングループを使用してパズルを生成するadd-puzzle-type — 新しいタイプにはPILES/フュージョンサポートが必要run-puzzle-tests — フルスイートでPILES解析をテストする