Программа, печатающая свой код

09.02.12

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

Классическое упражнение по программированию. Проверьте свои силы.

Скачать файл

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

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

Классическое упражнение по программированию.

Прежде чем смотреть решение, попробуйте написать сами, проверьте свой уровень.

Мне понадобилось 20 минут, чтобы набросать костяк и еще 10 минут, чтобы добиться точного соответствия.

Результат с исходным кодом сравнивал с помощью сравнения файлов. Тексты действительно идентичны.

Можно, конечно, попробовать вариант с оператором «Выполнить», но и так неплохо.

Суть решения понятна.

Код = "

|Для Инд = 1 По 2 Цикл

|Если Инд = 2 Тогда

|Сообщить(Код);

|Иначе

|Р = ""Код = """""";

|Для ИндС = 1 По СтрДлина(Код) Цикл

|Символ = Сред(Код, ИндС, 1);

|Если Символ = Символы.ПС Тогда

|Р = Р + Символы.ПС + ""|"";

|ИначеЕсли Символ = """""""" Тогда

|Р = Р + """""""""""";

|Иначе

|Р = Р + Символ;

|КонецЕсли;

|

|КонецЦикла;

|Р = Р + """""";"";

|Сообщить(Р);

|КонецЕсли;

|КонецЦикла;";

 

Для Инд = 1 По 2 Цикл

Если Инд = 2 Тогда

Сообщить(Код);

Иначе

Р = "Код = """;

Для ИндС = 1 По СтрДлина(Код) Цикл

Символ = Сред(Код, ИндС, 1);

Если Символ = Символы.ПС Тогда

Р = Р + Символы.ПС + "|";

ИначеЕсли Символ = """" Тогда

Р = Р + """""";

Иначе

Р = Р + Символ;

КонецЕсли;

 

КонецЦикла;

Р = Р + """;";

Сообщить(Р);

КонецЕсли;

КонецЦикла;

Идея написать такую программу возникла у меня, когда я прочитал про сборник программ "Hello World" на разных языках программирования, в том числе и на 1с.

А вы за сколько написали такую программу?

Может есть варианты покороче (кроме Выполнить - неспортивно), хотя для коллекции можете написать и с Выполнить - включу в статью.

По здравому размышлению я подумал, что первый цикл в моем коде лишний. А второй цикл можно заменить на функцию "СтрЗаменить".

Путем оптимизации у меня получилась вот такая программка в две строчки:

Код = "Сообщить(""Код = """""" + СтрЗаменить(Код, """""""", """""""""""") + """""";""); Сообщить(Код);";

Сообщить("Код = """ + СтрЗаменить(Код, """", """""") + """;"); Сообщить(Код);

 

См. также

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

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

1 стартмани

30.01.2024    3164    stopa85    12    

38

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

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

19.10.2023    7555    user1959478    51    

36

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

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

2 стартмани

29.09.2023    3110    maksa2005    8    

26

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

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

1 стартмани

09.06.2023    10904    7    SpaceOfMyHead    18    

61

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

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

03.04.2023    4359    RustIG    9    

25

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

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

23.11.2022    3529    gzharkoj    14    

25

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

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

1 стартмани

21.03.2022    9042    7    kalyaka    11    

44
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Andreeei 50 09.02.12 15:57 Сейчас в теме
Не могу понять, это гениально или бесполезно?
2. Q-Q 30 09.02.12 16:08 Сейчас в теме
(1) kolubo, Это бесполезно, а вот программа печатающая код другой программы - это гениально. Подобные программы называются декомпиляторами.
3. fixin 4273 09.02.12 16:13 Сейчас в теме
4. ildarovich 7930 09.02.12 17:11 Сейчас в теме
Эта задача и решение здесь уже было Задача: Программа, выводящая на экран свой исходный код (куайн).
В этом комментарии приведен вариант решения, с использованием 90 символов
С="С="";Л=Лев(С,3);П=Сред(С,3);Сообщить(Л+Л+П+П)";Л=Лев(С,3);П=Сред(С,3);Сообщить(Л+Л+П+П)

Длина Вашего решения в два раза больше.
На хабре относительно недавно была статья об общем подходе к решению этой задачи (независимого от языка).
5. fixin 4273 09.02.12 17:48 Сейчас в теме
(4) блин, не нашел ее поиском. ;-)
однако у меня можно и почитать, а не только качать.
на усмотрение редакции... или пусть удаляют или пусть оставляют.
таки решение все же другое.
6. catena 110 16.02.12 07:10 Сейчас в теме
7. dumal 17.02.12 00:23 Сейчас в теме
Плюс однозначно. На заметку начинающим (и не очень) программистам
8. Andrey12Andrey 21.02.12 16:45 Сейчас в теме
Оно подходит всем конфигурациям 1С?
10. fixin 4273 21.02.12 17:41 Сейчас в теме
(8)(9) она для программистов, у них таких вопросов не возникает.
9. Andrey12Andrey 21.02.12 17:22 Сейчас в теме
Непонятно как ее можно применить? Как с ним пользоваться? Чем его открывать (конфигуратором или 1С)? Как с ним пользоваться?
Оставьте свое сообщение