Skip to content

Commit fccf644

Browse files
committed
feat: add codeforces solution reorganization script
1 parent 5f29ecd commit fccf644

File tree

1,249 files changed

+24597
-23686
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,249 files changed

+24597
-23686
lines changed

codeforces.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import shutil
2+
from pathlib import Path
3+
4+
def add_package_declaration(java_file, package):
5+
"""Add package declaration to the top of a Java file if not already present."""
6+
with open(java_file, 'r', encoding='utf-8') as f:
7+
content = f.read()
8+
9+
if not content.strip().startswith('package '):
10+
new_content = f'package {package};\n\n{content}'
11+
with open(java_file, 'w', encoding='utf-8') as f:
12+
f.write(new_content)
13+
print(f'Added package declaration to {java_file}')
14+
else:
15+
print(f'Package declaration already exists in {java_file}')
16+
17+
def reorganize_codeforces():
18+
# Define root paths
19+
root = Path.cwd()
20+
src_java = root / 'src' / 'main' / 'java' / 'com' / 'algorithm' / 'solutions' / 'codeforces'
21+
src_resources = root / 'src' / 'main' / 'resources' / 'codeforces'
22+
codeforces_root = root / 'codeforces'
23+
24+
# Create codeforces directory structure
25+
src_java.mkdir(parents=True, exist_ok=True)
26+
src_resources.mkdir(exist_ok=True)
27+
print('Created codeforces Maven directory structure')
28+
29+
if codeforces_root.exists():
30+
for problem_dir in codeforces_root.iterdir():
31+
if problem_dir.is_dir():
32+
problem = problem_dir.name
33+
target_java_dir = src_java / f'p{problem}'
34+
target_resource_dir = src_resources / f'p{problem}'
35+
target_java_dir.mkdir(exist_ok=True)
36+
target_resource_dir.mkdir(exist_ok=True)
37+
38+
# Handle all *.java files in src directory
39+
src_dir = problem_dir / 'src'
40+
if src_dir.exists():
41+
for java_file in src_dir.glob('*.java'):
42+
target_java = target_java_dir / java_file.name
43+
shutil.move(str(java_file), str(target_java))
44+
print(f'Moved {java_file} to {target_java}')
45+
add_package_declaration(target_java, f'com.algorithm.solutions.codeforces.p{problem}')
46+
else:
47+
print(f'No src directory found in {problem_dir}')
48+
49+
# Handle all *.in files in problem directory
50+
for input_file in problem_dir.glob('*.in'):
51+
target_input = target_resource_dir / input_file.name
52+
shutil.move(str(input_file), str(target_input))
53+
print(f'Moved {input_file} to {target_input}')
54+
55+
# Clean up src directory if empty
56+
if src_dir.exists() and not any(src_dir.iterdir()):
57+
src_dir.rmdir()
58+
print(f'Removed empty directory {src_dir}')
59+
60+
# Clean up problem directory if empty
61+
if not any(problem_dir.iterdir()):
62+
problem_dir.rmdir()
63+
print(f'Removed empty directory {problem_dir}')
64+
else:
65+
print('codeforces directory not found, skipping')
66+
67+
if __name__ == '__main__':
68+
reorganize_codeforces()
69+
print('Codeforces reorganization complete.')

codeforces/1003A/src/Main.java

Lines changed: 0 additions & 58 deletions
This file was deleted.

codeforces/1030A/src/Main.java

Lines changed: 0 additions & 26 deletions
This file was deleted.

codeforces/1077A/src/Main.java

Lines changed: 0 additions & 47 deletions
This file was deleted.

codeforces/1092B/src/Main.java

Lines changed: 0 additions & 49 deletions
This file was deleted.

codeforces/1095A/src/Main.java

Lines changed: 0 additions & 45 deletions
This file was deleted.

codeforces/1097A/src/Main.java

Lines changed: 0 additions & 47 deletions
This file was deleted.

codeforces/110A/src/Main.java

Lines changed: 0 additions & 22 deletions
This file was deleted.

0 commit comments

Comments
 (0)