Last active 6 hours ago

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

myceliatrix's Avatar myceliatrix revised this gist 6 hours ago. Go to revision

1 file changed, 46 insertions

is_even_generator.py(file created)

@@ -0,0 +1,46 @@
1 + import sys
2 +
3 + def 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 +
13 + def 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 +
41 + if __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)
Newer Older