Лаба 3

This commit is contained in:
2025-10-16 11:22:02 +03:00
parent 740a7be984
commit 268c4cf4a1
3 changed files with 85 additions and 199 deletions

View File

@@ -49,7 +49,7 @@ def parse_csv_file(csv_path: str) -> tuple[str, list[list[str]]]:
data_rows = []
for line in data_lines:
parts = line.split(",")
if len(parts) >= 6: # Pc + 5 значений Pm
if len(parts) >= 2: # Pc + как минимум одно значение Pm
data_rows.append(parts)
return header, data_rows
@@ -113,7 +113,7 @@ def find_best_time(data_rows: list[list[str]]) -> float | None:
min_time = None
for row in data_rows:
for i in range(1, min(6, len(row))): # Пропускаем первую колонку (Pc)
for i in range(1, len(row)): # Пропускаем первую колонку (Pc)
time_value = extract_time_value(row[i])
if time_value is not None:
if min_time is None or time_value < min_time:
@@ -135,7 +135,7 @@ def find_best_fitness(data_rows: list[list[str]]) -> float | None:
min_fitness = None
for row in data_rows:
for i in range(1, min(6, len(row))): # Пропускаем первую колонку (Pc)
for i in range(1, len(row)): # Пропускаем первую колонку (Pc)
fitness_value = extract_fitness_value(row[i])
if fitness_value is not None:
if min_fitness is None or fitness_value < min_fitness:
@@ -229,12 +229,13 @@ def generate_latex_table(n: str, header: str, data_rows: list[list[str]]) -> str
# Извлекаем заголовки колонок из header
header_parts = header.split(",")
pm_values = header_parts[1:] # Пропускаем "Pc \ Pm"
num_pm_columns = len(pm_values) # Динамически определяем количество колонок
latex_code = f""" \\begin{{table}}[h!]
\\centering
\\small
\\caption{{Результаты для $N = {n}$}}
\\begin{{tabularx}}{{\\linewidth}}{{l *{{5}}{{Y}}}}
\\begin{{tabularx}}{{\\linewidth}}{{l *{{{num_pm_columns}}}{{Y}}}}
\\toprule
$\\mathbf{{P_c \\;\\backslash\\; P_m}}$"""
@@ -250,12 +251,12 @@ def generate_latex_table(n: str, header: str, data_rows: list[list[str]]) -> str
latex_code += f" \\textbf{{{pc_value}}}"
# Добавляем значения для каждого Pm
for i in range(1, min(6, len(row))): # Максимум 5 колонок Pm
for i in range(1, min(num_pm_columns + 1, len(row))):
value = format_value(row[i], best_time, best_fitness)
latex_code += f" & {value}"
# Заполняем недостающие колонки если их меньше 5
for i in range(len(row) - 1, 5):
# Заполняем недостающие колонки если их меньше чем num_pm_columns
for i in range(len(row) - 1, num_pm_columns):
latex_code += " & —"
latex_code += " \\\\\n"