is_even_generator.py
· 1.6 KiB · Python
Raw
import sys
def generate_subfunction(file, start, end):
file.write(f"int is_even_{start}_{end}(int num) {{\n")
conditions = ""
for i in range(start, end + 1):
even_check = "1" if i % 2 == 0 else "0"
conditions += f"(num == {i}) ? {even_check} : "
conditions += "0"
file.write(f" return {conditions};\n")
file.write("}\n\n")
def generate_c_file(max_number):
with open("is_even.c", "w") as file:
# Write the headers
file.write("#include <stdio.h>\n\n")
# Generate subfunctions in chunks of 10,000
for i in range(1, max_number + 1, 10000):
start = i
end = min(i + 9999, max_number)
generate_subfunction(file, start, end)
# Generate the main is_even function
file.write("int is_even(int num) {\n")
for i in range(1, max_number + 1, 10000):
start = i
end = min(i + 9999, max_number)
file.write(f" if (num >= {start} && num <= {end}) return is_even_{start}_{end}(num);\n")
file.write(" return 0;\n")
file.write("}\n\n")
# Write the main function
file.write("int main() {\n")
file.write(" for (int i = 1; i <= {0}; i++) {{\n".format(max_number))
file.write(" printf(\"%d is %s\\n\", i, is_even(i) ? \"even\" : \"odd\");\n")
file.write(" }\n")
file.write(" return 0;\n")
file.write("}\n")
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python generate_c.py <max_number>")
else:
max_number = int(sys.argv[1])
generate_c_file(max_number)
| 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) |
| 47 |