Skip to content

len(input_tags) != len(output_tags) のチェックにより、ABC433 Eなどの正常な問題でSampleDetectionErrorが発生する #312

@tatsukikitamura

Description

@tatsukikitamura

概要

現在の _extract_input_format_and_samples の実装では、以下のinput_tagsとoutput_tagsの個数チェックが行われています。

if len(input_tags) != len(output_tags):
    raise SampleDetectionError

このロジックは、パーサーが「全てのサンプルケースにおいて、入力タグと出力タグを過不足なく同じ数ずつ抽出できる」ことを前提としています。

しかし、ABC433 E のような問題では、HTML構造の都合上、入力タグと出力タグの取得数が一致しないケースがあります(例:出力例の中に複数のタグが含まれている、あるいは無関係なタグが誤検知されるなど)。またAHCコンテストでは"入力生成方法"というタグに関しても"入力"から始まっているので誤検知をしております。その結果、問題ページ自体は正常でサンプルもダウンロード可能であるにもかかわらず、SampleDetectionError が発生してしまいます。

再現手順

以下のコマンドを実行し、ABC433 E問題の生成を確認してください。

atcoder-tools gen abc433

修正案

AHCでは"生成"で完全一致を確認することで対処できることを確認しました。
またABCコンテストの方ではいまだに解決策が見つけられておりません。
"生成"に関するpullrequestを送っておきます

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions