Квайн на 1С

23.12.16

Разработка - Математика и алгоритмы

Разминка для мозга и интересное времяпрепровождение. Находить и обдумывать решение задачи можно, практически не используя компьютер.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Квайн.epf
.epf 4,36Kb
2
2 Скачать (1 SM) Купить за 1 850 руб.

Как-то раз сидел за решением какой-то сложной проблемы, которую даже воспроизвести у себя не удавалось. Тут в голову приходит мысль "а не попробовать ли написать квайн на 1С?". Решение этой задачи помогло отвлечься и привести мысли в порядок, после чего с проблемой удалось разобраться. Рекомендую :)

Используется две переменные: одна - это собственно код программы, вторая используется для его построчного вывода, в конце применяется метод "Выполнить".

При этом первую переменную можно сколь угодно дополнять своим кодом, исключая объявление переменных, процедур и функций. В данном случае квайн дополнен кодом, выводящим дурацкий стишок в виде предупреждения.

А="
|Для Сч=1 По СтрЧислоСтрок(А) Цикл
|   ТекСтрока=СтрПолучитьСтроку(А,Сч);
|   ТекСтрока=СтрЗаменить(ТекСтрока,"""""""","""""""""""");
|   Если Сч=1 Тогда
|       ТекСтрока=""А=""""""+ТекСтрока;
|   ИначеЕсли Сч=СтрЧислоСтрок(А) Тогда
|       ТекСтрока=ТекСтрока+"""""";Выполнить(А);"";
|   КонецЕсли;
|   ТекСтрока=?(Сч=1,Лев(А,0),""|"")+ТекСтрока;
|   Сообщить(ТекСтрока);
|КонецЦикла;
|//Сюда вставляем произвольный код, заменив, разумеется, одинарные кавычки на двойные
|   Жгем=Новый Структура(""Раз,Два,Три"");
|   ТСбщ="""";
|   Для каждого Эл Из Жгем Цикл
|       ТСбщ=ТСбщ+Эл.Ключ+"" помидор,""+Символы.ПС;
|   КонецЦикла;
|   ТСбщ=ТСбщ+""Гори, помидор!"";
|   Предупреждение(ТСбщ);
|//Конец вставки произвольного кода"
;Выполнить(А);

PS

Любителям покритиковать решение. Конечно, я уже посмотрел "каноничный" способ написания квайна на 1С. Но после этого моя реализация квайна не стала нравиться мне меньше. Не обязательно лучший код - это самый краткий. Да и смысл решения от краткости не меняется. 

квайн куайн quine

См. также

Математика и алгоритмы Программист Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    3165    stopa85    12    

38

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    7556    user1959478    51    

36

Математика и алгоритмы Разное Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Расширение (+ обработка) представляют собою математический тренажер. Ваш ребенок сможет проверить свои знание на математические вычисление до 100.

2 стартмани

29.09.2023    3111    maksa2005    8    

26

Математика и алгоритмы Инструментарий разработчика Программист Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    10905    7    SpaceOfMyHead    18    

61

Математика и алгоритмы Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Три задачи - три идеи - три решения. Мало кода, много смысла. Мини-статья.

03.04.2023    4361    RustIG    9    

25

Механизмы платформы 1С Математика и алгоритмы Программист Платформа 1С v8.3 Россия Бесплатно (free)

В статье анализируются средства платформы для решения системы линейных уравнений в 1С. Приводятся доводы в пользу некорректной работы встроенных алгоритмов, а значит потенциально некорректного расчета себестоимости в типовых конфигурациях.

23.11.2022    3531    gzharkoj    14    

25

Математика и алгоритмы Программист Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    9042    7    kalyaka    11    

44
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. nSpirit2 05.08.15 17:49 Сейчас в теме
|   Жгем=Новый Структура(""Раз,Два,Три"");
|   ТСбщ="""";
|   Для каждого Эл Из Жгем Цикл


Вот это доставило а так прикольно кончено :)
2. mrbus 31.10.16 22:07 Сейчас в теме
Код, содержащий "Выполнить", квайном не считается, а вот настоящий квайн http://govnokod.ru/21614
3. testik_vzv 11 21.12.16 12:49 Сейчас в теме
(2)
Код, содержащий "Выполнить", квайном не считается

Это откуда взялось такое правило?
Каждая реализация имеет право на жизнь. Моя прикольна тем, что ее можно разбавить своим говнокодом (я заценил сайт по ссылочке :) ), который и выполнится, и выведется в тексте программы.
Оставьте свое сообщение