Last active 5 hours ago

A generator that spits out a massive amount of C for a useless task

is_even_generator.py Raw
1import sys
2
3def generate_subfunction(file, start, end):
4 file.write(f"int is_even_{start}_{end}(int num) {{\n")
5 conditions = ""
6 for i in range(start, end + 1):
7 even_check = "1" if i % 2 == 0 else "0"
8 conditions += f"(num == {i}) ? {even_check} : "
9 conditions += "0"
10 file.write(f" return {conditions};\n")
11 file.write("}\n\n")
12
13def generate_c_file(max_number):
14 with open("is_even.c", "w") as file:
15 # Write the headers
16 file.write("#include <stdio.h>\n\n")
17
18 # Generate subfunctions in chunks of 10,000
19 for i in range(1, max_number + 1, 10000):
20 start = i
21 end = min(i + 9999, max_number)
22 generate_subfunction(file, start, end)
23
24 # Generate the main is_even function
25 file.write("int is_even(int num) {\n")
26 for i in range(1, max_number + 1, 10000):
27 start = i
28 end = min(i + 9999, max_number)
29 file.write(f" if (num >= {start} && num <= {end}) return is_even_{start}_{end}(num);\n")
30 file.write(" return 0;\n")
31 file.write("}\n\n")
32
33 # Write the main function
34 file.write("int main() {\n")
35 file.write(" for (int i = 1; i <= {0}; i++) {{\n".format(max_number))
36 file.write(" printf(\"%d is %s\\n\", i, is_even(i) ? \"even\" : \"odd\");\n")
37 file.write(" }\n")
38 file.write(" return 0;\n")
39 file.write("}\n")
40
41if __name__ == "__main__":
42 if len(sys.argv) != 2:
43 print("Usage: python generate_c.py <max_number>")
44 else:
45 max_number = int(sys.argv[1])
46 generate_c_file(max_number)
47