前提・実現したいこと
2部グラフ判定の問題を標準入力ではなくファイルからの読み込みにするプログラムを書いています。
主にpythonでのリストやリスト内包表記などの知識がなく迷っています。
現在pythonにて テキストファイルから1行毎にコンマで分けられたあたりを読み込み、それをmapを使用して変数に保存しようとしています。
input.txtはグラフの頂点を表しています。無向グラフなので向きはありません。
また辺や頂点の数はなく2点間の値のみです。
コマンドライン引数
python3 app.py input.txt
発生している問題・エラーメッセージ
ターミナルでプリントしてみるとコンマで分けられたstrタイプのlistなのでそれをただのintタイプに戻す必要があると考えています。 現在は標準入力で頂点の値をとっているのでinput.txtはコピーしてそれを使用してください。
app.py
import sys MAX_V = 10 file = open(sys.argv[1], "r") content = file.readlines()# it is stored in the list now print("リスト",content) edges = len(content) vertices = len(content) #content = list(map(int, content)) for i in range(0, len(content)): curr_line = content[i].split(',') print(curr_line) V = vertices # 頂点数 E = edges # 辺数 G = [[] for _ in range(MAX_V)] # グラフ for i in range(E): # sからtへの辺を張る s, t = map(int,input().split(',')) #s,t = map(int, ) G[s].append(t) G[t].append(s) color = [0] * MAX_V # 頂点iの色(1 or -1) def dfs(v, c): color[v] = c for i in range(len(G[v])): if color[G[v][i]] == c: return False if color[G[v][i]] == 0 and not dfs(G[v][i], -c): return False return True for i in range(V): if color[i] == 0: if not dfs(i, 1): print("No") sys.exit() print("Yes")
###input.txt
0, 1 1, 2 2, 3 3, 0 4, 5
試したこと
sからtへの辺を張るとコメントしてあるところでファイルから直接マップを使用してそれを2つの変数に保存しようとしますたができませんでした。
補足情報(FW/ツールのバージョンなど)
python 3.85
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/24 12:17