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

09.02.12

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

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

Скачать файлы

Наименование Файл Версия Размер
down.zip
.zip 1,46Kb
13
.zip 1,46Kb 13 Скачать

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

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

Мне понадобилось 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    1714    stopa85    12    

33

Алгоритм симплекс-метода для решения задачи раскроя

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

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

19.10.2023    4314    user1959478    50    

34

Регулярные выражения на 1С

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

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

1 стартмани

09.06.2023    7343    4    SpaceOfMyHead    17    

56

Модель распределения суммы по базе

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

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

1 стартмани

21.03.2022    7817    7    kalyaka    11    

44

Изменения формата файлов конфигурации (CF) в 8.3.16

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

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    4414    fishca    13    

36

Интересная задача на Yandex cup 2021

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

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    8793    John_d    73    

46

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

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

31.08.2021    7713    dusha0020    8    

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

Длина Вашего решения в два раза больше.
На хабре относительно недавно была статья об общем подходе к решению этой задачи (независимого от языка).
5. fixin 4252 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 4252 21.02.12 17:41 Сейчас в теме
(8)(9) она для программистов, у них таких вопросов не возникает.
9. Andrey12Andrey 21.02.12 17:22 Сейчас в теме
Непонятно как ее можно применить? Как с ним пользоваться? Чем его открывать (конфигуратором или 1С)? Как с ним пользоваться?
Оставьте свое сообщение