Чат GPT пишет Ханойские Башни на 1С
Версия 1. С выводом последовательности действий
Составил запрос:
напиши код для определения правила перекладывания дисков в игре "Ханойские башни" на языке 1С с тремя башнями
Процедура ПереместитьДиски(КоличествоДисков, ИсходнаяБашня, ВспомогательнаяБашня, ЦелеваяБашня) Если КоличествоДисков = 1 Тогда // Перемещаем диск с исходной башни на целевую Сообщить("Переместить диск " + КоличествоДисков + " с " + ИсходнаяБашня + " на " + ЦелеваяБашня); Иначе // Перемещаем n-1 диск с исходной башни на вспомогательную ПереместитьДиски(КоличествоДисков - 1, ИсходнаяБашня, ЦелеваяБашня, ВспомогательнаяБашня); // Перемещаем последний диск с исходной башни на целевую Сообщить("Переместить диск " + КоличествоДисков + " с " + ИсходнаяБашня + " на " + ЦелеваяБашня); // Перемещаем n-1 диск со вспомогательной башни на целевую ПереместитьДиски(КоличествоДисков - 1, ВспомогательнаяБашня, ИсходнаяБашня, ЦелеваяБашня); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура Запуск(Команда) КоличествоДисков = Дисков; // Укажите количество дисков ПереместитьДиски(КоличествоДисков, "Башня 1", "Башня 2", "Башня 3"); КонецПроцедуры
Версия 2. С выводом состояния
Уточнил задачу:
Доработай этот код чтобы на каждом шаге показывалось какие диски лежат на какой башне
И вот уже с этой задачей Чат GPT не справился:
В коде пришлось поправлять какие-то мелочи.
Например, в структурах чат GPT использовал пробелы и вызывал процедуру Удалить из массива как структуру. Также пришлось добавить оператор &НаКлиенте.
Но в итоге отобразить состояние дисков он не смог. А мне стало лень ковыряться в этом коде. Предоставляю это вам.
&НаКлиенте Перем Башни; // Объявление глобальных переменных для хранения состояния башен // Инициализация башен с дисками &НаКлиенте Процедура Инициализация(КоличествоДисков) Для i = КоличествоДисков По 1 Цикл Башни["Башня1"].Добавить(i); // Добавляем диски на первую башню КонецЦикла; КонецПроцедуры // Процедура перемещения дисков &НаКлиенте Процедура ПереместитьДиски(КоличествоДисков, ИсходнаяБашня, ВспомогательнаяБашня, ЦелеваяБашня) Если КоличествоДисков = 1 Тогда // Перемещаем диск с исходной башни на целевую //ОШИБКА ГПТ: Диск = Башни[ИсходнаяБашня].Удалить(Башни[ИсходнаяБашня].Количество() - 1); Диск = Башни[ИсходнаяБашня][Башни[ИсходнаяБашня].Количество() - 1]; Башни[ИсходнаяБашня].Удалить(Башни[ИсходнаяБашня].Количество() - 1); Башни[ЦелеваяБашня].Добавить(Диск); Сообщить("Переместить диск " + Диск + " с " + ИсходнаяБашня + " на " + ЦелеваяБашня); ВывестиСостояние(); Иначе // Перемещаем n-1 диск с исходной башни на вспомогательную ПереместитьДиски(КоличествоДисков - 1, ИсходнаяБашня, ЦелеваяБашня, ВспомогательнаяБашня); // Перемещаем последний диск с исходной башни на целевую //ОШИБКА ГПТ: Диск = Башни[ИсходнаяБашня].Удалить(Башни[ИсходнаяБашня].Количество() - 1); Диск = Башни[ИсходнаяБашня][Башни[ИсходнаяБашня].Количество() - 1]; Башни[ИсходнаяБашня].Удалить(Башни[ИсходнаяБашня].Количество() - 1); Башни[ЦелеваяБашня].Добавить(Диск); Сообщить("Переместить диск " + Диск + " с " + ИсходнаяБашня + " на " + ЦелеваяБашня); ВывестиСостояние(); // Перемещаем n-1 диск со вспомогательной башни на целевую ПереместитьДиски(КоличествоДисков - 1, ВспомогательнаяБашня, ИсходнаяБашня, ЦелеваяБашня); КонецЕсли; КонецПроцедуры // Процедура для вывода состояния башен &НаКлиенте Процедура ВывестиСостояние() Сообщить("Текущее состояние башен:"); Для Каждого Башня Из Башни.Ключи() Цикл Диски = Башни[Башня]; Сообщить(Башня + ": " + Диски.Представить()); КонецЦикла; Сообщить(""); // Пустая строка для разделения шагов КонецПроцедуры // Процедура запуска &НаКлиенте Процедура Запуск() КоличествоДисков = Дисков; // Укажите количество дисков Инициализация(КоличествоДисков); ПереместитьДиски(КоличествоДисков, "Башня1", "Башня2", "Башня3"); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) Дисков = 3; //Ошибка ГПТ: Использовалась структура с ключом через пробел: "Башня 1" Башни = Новый Структура; Башни.Вставить("Башня1", Новый Массив()); Башни.Вставить("Башня2", Новый Массив()); Башни.Вставить("Башня3", Новый Массив()); КонецПроцедуры
Скачать файлы обработок:
Свежие комментарии