Программа, печатающая свой код
-2Занимательное программирование
Описание
Прежде чем смотреть решение, попробуйте написать сами, проверьте свой уровень.
Мне понадобилось 20 минут, чтобы набросать костяк и еще 10 минут, чтобы добиться точного соответствия.
Можно, конечно, попробовать вариант с Выполнить, но и так неплохо.
Суть решения понятна.
Код = " |Для Инд = 1 По 2 Цикл | Если Инд = 2 Тогда | Сообщить(Код); | Иначе | Р = ""Код = """"""; | Для ИндС = 1 По СтрДлина(Код) Цикл | Символ = Сред(Код, ИндС, 1); | Если Символ = Символы.ПС Тогда | Р = Р + Символы.ПС + ""|""; | ИначеЕсли Символ = """""""" Тогда | Р = Р + """"""""""""; | Иначе | Р = Р + Символ; | КонецЕсли; | | КонецЦикла; | Р = Р + """""";""; | Сообщить(Р); | КонецЕсли; |КонецЦикла;"; Для Инд = 1 По 2 Цикл Если Инд = 2 Тогда Сообщить(Код); Иначе Р = "Код = """; Для ИндС = 1 По СтрДлина(Код) Цикл Символ = Сред(Код, ИндС, 1); Если Символ = Символы.ПС Тогда Р = Р + Символы.ПС + "|"; ИначеЕсли Символ = """" Тогда Р = Р + """"""; Иначе Р = Р + Символ; КонецЕсли; КонецЦикла; Р = Р + """;"; Сообщить(Р); КонецЕсли; КонецЦикла;
Идея написать такую программу возникла у меня, когда я прочитал про сборник программ "Hello World" на разных языках программирования, в том числе и на 1с.
А вы за сколько написали такую программу?
Может есть варианты покороче (кроме Выполнить - неспортивно), хотя для коллекции можете написать и с Выполнить - включу в статью.
Путем оптимизации у меня получилась вот такая программка в две строчки:
Код = "Сообщить(""Код = """""" + СтрЗаменить(Код, """""""", """""""""""") + """""";""); Сообщить(Код);";
Сообщить("Код = """ + СтрЗаменить(Код, """", """""") + """;"); Сообщить(Код);
Оценка сообщества
|
Плюсы (+5):
, , , , |
Минусы (– 7):
, , , , , , |
Добавить плюс Добавить минус
Комментарии (39)
не. мона проще. переменную одним символом.
к="Сообщить(Символ(1082)+Символ(61)+Символ(34)+к+Символ(34)+Символ(59)+к);";Сообщить(Символ(1082)+Символ(61)+Символ(34)+к+Символ(34)+Символ(59)+к);
(4) А зачем нужна программа "Hello world"?
данная программа - классическое упражнение по програмированию.
Применений два:
1. Тренировка мозгов.
2. Тест при приеме на работу.
(5) Тест говоришь? А може человека лучше спросить как источники данных бюджетирования настроить? Или что такое "suspect"?
Просто с трудом представляю себе работу где реально нужен человек умеющий писать такие программы...
(6) эта задача - "классика" programming-art
Другое дело, что 1снег - не совсем "программист"
(8) :)
трудно быть программистом в среде, которая выдает такие шедевры:
[code]Найти("PowerBoy","") = Найти("PowerBoy","P") = истина[code]
Не знаю, мне на тестировании иногда задавали как раз классические задачи (сортировки, перестановки) и т.п. проверяют интелект.
(10) имхо. это не нужно. для проверки интелекта достаточно спросить за что старушку процентщицу зарубили... ;-)
А вообще 1с-нег действительно не столько программист, сколько "конструктор бизнес-процессов"..
это вы в кофигураторе которые имеете в виду?
по жизни 1снеги могут только один бизнес-процесс - 1с:франчайзи.
но и 1снегом для 1с:франчайзи быть не обязательно
(12) Нет... не те которые в конфигураторе )))
Имею ввиду, что для программиста 1С знание прикладных решений и методов типовых реализаций прикладных задач, важнее чем знание методов пузырьковой сортировки или умения писать самопечатающиеся программы...
(13) это если повезло по жизни, работодатель попался толковый
чаще хочут держать за эникея, вот тут и вспоминаются "классические", как луч света в... ну, там где :)
(13) ну да, а потом и получаются дикие типовые конфигурации - потому что их програмистам в институке Кнута и Кернигана с Ритчи не показывали!
Я просто видел на одном сайте Хелло ворлд для разных языков программироавния, не нашел где сборник самопечатающихся программ для разных ЯП.
(16) Молчал бы уж про Кнута ;-) видел я твои обход метаданных: "девелопминг методом копипастенга"
ИМХО А зря вот так по автору прошлись: задачку-то все решить смогли? А на скольки языках? А сколько вариантов решения предложено?
Вот в посте вижу 2 варианта, причем до второго (действительно изящного) мне лень не позволила добраться... ;)
Автору плюс, что не дает засыпать мозгу
2 Luns (6): А зачем и кому нужен программист/постановщик задач, который НЕ умеет решать такие задачки (а ведь их много)?



код="Сообщить(Символ(1082)+Символ(1086)+Символ(1076)+Символ(61)+Символ(34)+код+Символ(34)+Символ(59)+код);";Сообщить(Символ(1082)+Символ(1086)+Символ(1076)+Символ(61)+Символ(34)+код+Символ(34)+Символ(59)+код);