35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Generator for OPS01.ipynb and OPS01_student.ipynb
|
|
"""
|
|
import os
|
|
import re
|
|
import json
|
|
|
|
def load_data():
|
|
with open('scenario_json/OPS01.json', encoding='utf-8') as f:
|
|
scenario = json.load(f)
|
|
|
|
with open('scenario_md/OPS01-작전·전투 수행_적 탐지-드론 영상 공중위협 객체 탐지와 오경보 검증/OPS01_정답코드.md', encoding='utf-8') as f:
|
|
code_md = f.read()
|
|
|
|
parts = re.split(r'##\s+미션\s+(\d+)\.\s*', code_md)
|
|
missions_code = {}
|
|
for i in range(1, len(parts), 2):
|
|
m_num = int(parts[i])
|
|
m_body = parts[i+1]
|
|
lines = m_body.strip().split('\n')
|
|
m_title = lines[0].strip()
|
|
code_matches = re.findall(r'```python\n(.*?)\n```', m_body, re.DOTALL)
|
|
output_matches = re.findall(r'```text\n(.*?)\n```', m_body, re.DOTALL)
|
|
missions_code[m_num] = {
|
|
'num': m_num,
|
|
'title': m_title,
|
|
'code': code_matches[0] if code_matches else '',
|
|
'output': output_matches[0] if output_matches else ''
|
|
}
|
|
return scenario, missions_code
|
|
|
|
scenario, missions_code = load_data()
|
|
print(f"Loaded scenario '{scenario['title']}' with {len(scenario['missions'])} missions and {len(missions_code)} code blocks.")
|