Pythonでゴールパーサー解釈コマンドを見つけるプログラム
特定の文字列コマンドを解釈できるゴールパーサーがあるとします。コマンドは
で構成されます-
アルファベット「G」、
-
開き括弧「()」
-
および/または「(al)」の順序。
ゴールパーサーは、「G」を文字列「G」、「()」を「o」、「(al)」を文字列「al」として解釈します。最後に解釈された文字列は、元の順序で連結されます。したがって、文字列コマンドがある場合は、ゴールパーサーによるコマンドの解釈を見つける必要があります。
したがって、入力がcommand ="G()()()(al)(al)"のような場合、出力はGoooalalになります。
これを解決するには、次の手順に従います-
-
s:=空白の文字列
-
0からコマンドのサイズまでの範囲のiの場合-1、実行
-
command [i]が「(」と同じでなく、command [i]が「)」と同じでない場合、
-
s:=s連結コマンド[i]
-
-
command [i]が「(」と同じで、command [i + 1]が「)」と同じで、i + 1
-
s:=s連結'o'
-
-
command [i]が「(」と同じ場合、
-
次のイテレーションに行く
-
-
command[i]が")"と同じ場合、
-
次のイテレーションに行く
-
-
-
sを返す
例(Python)
理解を深めるために、次の実装を見てみましょう-
def solve(command): s="" for i in range(len(command)): if command[i]!="(" and command[i]!=")": s+=command[i] if command[i]=="(" and command[i+1]==")" and i+1<len(command): s+='o' if command[i]=="(": continue if command[i]==")": continue return s command = "G()()()(al)(al)" print(solve(command))
入力
"G()()()(al)(al)"
出力
Goooalal
-
Pythonでポリゴンの領域を見つけるプログラム
順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの領域を見つける必要があります。 したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は15になります。 これを解決するには、次の手順に従います- 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です return x1 * y2-y1 * x2 メインの方法から、次の手順を実行します N:=ポイントのサイズ (firstx、firsty):=points [0] (prevx、prevy):=(fir
-
Pythonでポリゴンの周囲を見つけるプログラム
順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの周囲を見つける必要があります。 したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は16になります。 2つの辺の長さは3で、2つの辺の長さは5なので、2 * 5 + 2 * 3=16です。 これを解決するには、次の手順に従います- 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です ユークリッド距離である((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))の平方根を返します (x1、y1)