# Agricultural Expression - 部分点 ※**部分点の設定が他の問題と異なるため注意してください。** この問題はいくつかのデータセットに分かれており、それぞれのデータセットには追加の制約が設定されています。 データセットのすべてのテストケースに正解すると、そのデータセットに割り当てられた得点を獲得することができます。 説明のため、問題文中に示した文法 $E$ を再掲します。 ``` <expr> := <term> | <term> + '+' + <expr> <term> := <grow> | <harvest> | <number> <grow> := 'G(' + <expr> + ')' <harvest> := 'H(' + <expr> + ')' <number> := <digit> | <digit> <number> <digit> := '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' ``` 各データセットの追加の制約、配点については以下を参照してください。 ### データセット 1 (50点) - $S$ は単一の**連結算**である。すなわち、`<number>+<number>` という形式で表される。以降、このような形式で表される**連結算**を**単純な連結算**と定義する。 ### データセット 2 (10点) - $S$ は単一の**成長算**である。すなわち、`G(<number>)` という形式で表される。以降、このような形式で表される**成長算**を**単純な成長算**と定義する。 ### データセット 3 (10点) - $S$ は単一の**収穫算**である。すなわち、`H(<number>)` という形式で表される。以降、このような形式で表される**収穫算**を**単純な収穫算**と定義する。 ### データセット 4 (5点) - $S$ は $2$ つの**単純な成長算**または**単純な収穫算**の結果に対する**連結算**である。より厳密には、次の BNF 記法で表された文法 $E_4$ によって生成される `<expr>` である。($E$ は $E_4$ を包含している。) ``` <expr> := <term> + '+' + <term> <term> := <simple_grow> | <simple_harvest> <simple_grow> := 'G(' + <number> + ')' <simple_harvest> := 'H(' + <number> + ')' <number> := <digit> | <digit> <number> <digit> := '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' ``` ### データセット 5 (25点) - $S$ は $2$ つ以上の**単純な成長算**または**単純な収穫算**の結果に対する**連結算**である。より厳密には、次の BNF 記法で表された文法 $E_5$ によって生成される `<expr>` である。($E$ は $E_5$ を包含している。) ``` <expr> := <term> + '+' + <expr_ext> <expr_ext> := <term> | <term> + '+' + <expr_ext> <term> := <simple_grow> | <simple_harvest> <simple_grow> := 'G(' + <number> + ')' <simple_harvest> := 'H(' + <number> + ')' <number> := <digit> | <digit> <number> <digit> := '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' ``` ### データセット 6 (50点) - $S$ は**単純な成長算**、**単純な収穫算**、**単純な連結算**のいずれかの結果に対する**成長算**または**収穫算**である。より厳密には、次の BNF 記法で表された文法 $E_6$ によって生成される `<expr>` である。($E$ は $E_6$ を包含している。) 以降、このような形式で表される**成長算**および**収穫算**を**入れ子な成長算**および**入れ子な収穫算**と定義する。 ``` <expr> := <term> <term> := <nested_grow> | <nested_harvest> <nested_grow> := 'G(' + <term_ext> + ')' <nested_harvest> := 'H(' + <term_ext> + ')' <term_ext> := <simple_grow> | <simple_harvest> | <simple_connect> <simple_connect> := <number> + '+' + <number> <simple_grow> := 'G(' + <number> + ')' <simple_harvest> := 'H(' + <number> + ')' <number> := <digit> | <digit> <number> <digit> := '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' ``` ### データセット 7 (25点) - $S$ は $2$ つ以上の**入れ子な成長算**または**入れ子な収穫算**の結果に対する**連結算**である。より厳密には、次の BNF 記法で表された文法 $E_7$ によって生成される `<expr>` である。($E$ は $E_7$ を包含している。) ``` <expr> := <term> + '+' + <expr_ext> <expr_ext> := <term> | <term> + '+' + <expr_ext> <term> := <nested_grow> | <nested_harvest> <nested_grow> := 'G(' + <term_ext> + ')' <nested_harvest> := 'H(' + <term_ext> + ')' <term_ext> := <simple_grow> | <simple_harvest> | <simple_connect> <simple_connect> := <number> + '+' + <number> <simple_grow> := 'G(' + <number> + ')' <simple_harvest> := 'H(' + <number> + ')' <number> := <digit> | <digit> <number> <digit> := '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' ``` ### データセット 8 (125点) - 追加の制約はない。