


Как написать такой генератор случайного исходного кода?
Короче суть в чем я хочу написать программу на python которая генерирует случайный исходный код, и есть как бы условный образ как это сделать для полноценного понимание представьте себе что программирование это кубик рубик, и что блоки исходного кода это строки "if","while","break","def", и т.д. которые являются кубиками, и двигая блоки словно кубики в кубике рубике мы получаем исходный код, на вход программа получает массив чисел в котором нечётные числа это номер блока в кубике рубике, а четные числа это то насколько этот блок предыдущего числа блока перемещается, и в результате функция считывает все движение всех блоков по всем числам массива и завершается на последнем четном числе последнего перемещения которая является стороной кубика рубика в котором последовательно от самого верхнего кубика считывает все числа и возвращает строку общего исходного кода которую запускает через exec, и вот хочу я написать такой исходный код но не получается ничего существенного не получается реализовать общий посыл мысли, я писал ChatGPT но не особо помогло он меня неправильно понимает:
import random
def generate_random_source_code(moves):
# Создаем пустой список для хранения исходного кода.
source_code = []
# Получаем размер стороны кубика Рубика из последнего четного числа.
side_size = moves[-1] // 2
# Перебираем ходы.
for i in range(0, len(moves), 2):
# Проверяем, не выходим ли мы за пределы списка ходов.
if i + 1 >= len(moves):
break
# Получаем номер блока и количество его перемещений.
block_number = moves[i]
num_moves = moves[i + 1] // 2
# Создаем строку перемещений для блока.
move_string = ""
for j in range(num_moves):
move_string += f"block{block_number + j}.move()\n"
# Добавляем строку перемещений в исходный код.
source_code.append(move_string)
# Создаем строку чтения кубика Рубика.
read_string = ""
for i in range(side_size):
for j in range(side_size):
read_string += f"print(block{i * side_size + j}.value)\n"
# Возвращаем исходный код.
return "".join(source_code) + read_string
# Генерируем случайный список ходов.
moves = [random.choice([1, 3, 5, 7, 9]) for i in range(10)] + [random.choice([2, 4, 6, 8, 10])]
# Генерируем исходный код.
source_code = generate_random_source_code(moves)
# Выполняем исходный код.
exec(source_code)
Второй код:
import random
def generate_random_source_code(moves):
"""Генерирует случайный исходный код для кубика Рубика.
Args:
moves: Массив чисел, где нечетные числа - это номера блоков в кубике Рубика, а четные числа - это то, насколько этот блок перемещается.
Returns:
Строка исходного кода.
"""
# Создаем пустой исходный код.
source_code = ""
# Перебираем все ходы.
for i in range(0, len(moves), 2):
# Получаем номер блока и направление перемещения.
block_number = moves[i]
direction = moves[i + 1]
# Добавляем строку исходного кода для перемещения блока.
source_code += f"move_block({block_number}, {direction})\n"
# Возвращаем исходный код.
return source_code
# Генерируем случайный массив ходов.
moves = [random.randint(1, 9) for i in range(10)]
# Генерируем случайный исходный код.
source_code = generate_random_source_code(moves)
# Выводим исходный код на экран.
print(source_code)
Может есть идея как полноценно реализовать эту идею, как написать такой код? Нужно додумать посыл мысли оформить мысль как это сделать? Хотя бы какие-то зарисовки есть?
Привет. Напиши мне пожалуйста в тг @teamine
попросить гпт будет надёжнее