入力が次の形式のASCIIファイルに含まれている実行可能ファイルがあります。
$ GENERAL INPUTS
$ PARAM1 = 123.456
PARAM2=456,789,101112
PARAM3(1)=123,456,789
PARAM4 =
1234,5678,91011E2
PARAM5(1,2)='STRING','STRING2'
$ NEW INSTANCE
NEW(1)=.TRUE.
PAR1=123
[More data here]
$ NEW INSTANCE
NEW(2)=.TRUE.
[etcetera]
言い換えると、いくつかの一般的な入力と、いくつかの新しいインスタンスのいくつかのパラメーター値です。パラメータの宣言は不規則です。一部の数値はコンマで区切られ、その他は科学的記数法で、その他は引用符で囲まれ、間隔は一定ではありません。
一部のシナリオの評価では、1つの「マスター」データファイルを入力し、たとえばインスタンス2〜6のパラメータデータを、そのインスタンスのデータがすでに含まれている可能性のある別のデータファイルにコピーする必要があります(この場合、データは上書きされる)および場合によっては他のデータ(変更されないままにする必要があるデータ)。
FlexレクサーとBisonパーサーを作成しました。一緒にデータファイルを食べて、パラメータをメモリに保存できます。それらを使用して両方のファイル(マスターと「シナリオ」)を開く場合、3番目の新しいファイルに(のように"general input from 'scenario'; instances 1 though 5 from 'master'; instances 6 through 9 from 'scenario'; ..."
)必要なパラメーターを選択的に書き込み、保存して、元のシナリオファイルを削除するのはそれほど難しくありません。
その他の情報:(1)ファイルは非常に機密性が高いため、ユーザーがマスターファイルを変更しないように完全に保護することが非常に重要です。(2)ファイルは管理可能なサイズ(500Kから10M)です。
私は10行のコードで何ができるかを学びました。ここにいる仲間の中には2行でできる人もいます。この問題にどのようにアプローチしますか?パイソンの答えは私を泣かせるでしょう。真剣に。