FizzBuzz на 1С. Чем короче, тем веселее. Варианты принимаются...
Разработка - Практика программирования
Пояснение
Кто не знает, не помнит, вот содержание задачи.
Напишите программу, которая выводит на экран числа от 1 до 100. При этом вместо чисел, кратных трем, программа должна выводить слово «Fizz», а вместо чисел, кратных пяти — слово «Buzz». Если число кратно и 3, и 5, то программа должна выводить слово «FizzBuzz».
И так я сделал для себя 4 варианта.
Вариант 1 - в лоб
&НаКлиенте
Процедура Вариант1(Команда)
Для Индекс = 1 По 100 Цикл
Если Индекс % 15 = 0 Тогда
Т = "FizzBuzz";
ИначеЕсли Индекс % 3 = 0 Тогда
Т = "Fizz";
ИначеЕсли Индекс % 5 = 0 Тогда
Т = "Buzz";
Иначе
Т = Формат(Индекс, "ЧГ=");
КонецЕсли;
Сообщить(Т);
КонецЦикла;
КонецПроцедуры
Выглядит нормально, пишется за несколько секунд на бумажке ручкой, но занимает много строчек. Скучный вариант.
Вариант 2 - сократим ИначеЕсли
&НаКлиенте
Процедура Вариант2(Команда)
Для Индекс = 1 По 100 Цикл
Т = "";
Если Индекс%3 = 0 Тогда
Т = Т + "Fizz";
КонецЕсли;
Если Индекс%5 = 0 Тогда
Т = Т + "Buzz";
КонецЕсли;
Если ПустаяСтрока(Т) Тогда
Т = Формат(Индекс, "ЧГ=");
КонецЕсли;
Сообщить(Т);
КонецЦикла;
КонецПроцедуры
И тут я подумал, ведь FizzBuzz = Fizz + Buzz. А условие для FizzBuzz это %3*5. Ну значит берем и прибавляем к строке результат проверки условия на %3 и на %5. Если ничего нет - значит это число.
Вариант 3 - заменим Если на ?
&НаКлиенте
Процедура Вариант3(Команда)
Для Индекс = 1 По 100 Цикл
Т = ?(Индекс%3 = 0, "Fizz", "") + ?(Индекс%5 = 0, "Buzz", "");
Т = ?(ПустаяСтрока(Т), Формат(Индекс, "ЧГ="), Т);
ВывестиВЛог(Т);
КонецЦикла;
КонецПроцедуры
Ну это было как бы логичное продолжение. Убираем Если ... КонецЕсли, меняем на тернарный оператор ? становится короче и лучше.
Вариант 4 - короче, не значит лучше
&НаКлиенте
Процедура Вариант4(Команда)
Для Индекс = 1 По 100 Цикл
Т = ?(Индекс%15 = 0, "FizzBuzz",
?(Индекс%3 = 0, "Fizz",
?(Индекс%5 = 0, "Buzz",
Формат(Индекс, "ЧГ="))));
Сообщить(Т);
КонецЦикла;
КонецПроцедуры
Ну тут мы вообще все свели к одной строке используя только тернарный оператор ?. Однако читаемость этой строки уменьшилась, понимание (имхо) тоже стало хуже. А подсчет закрывающих скобок может заставить нажать пару раз выполнение синтаксис-контроля.
Конец
Поскольку дальше мне стало скучно, отведенное время для развлечений закончилось и пора было идти спать, я решил что продолжать не буду. Мне хватит. Написал тест ко всем 4-м вариантам, прогнал и закрыл этот вопрос. Ну, а поскольку на Инфостарт не нашел упоминания про FizzBuzz решил восполнить пробел.
Прошу ногами не пинать, помидорами не закидывать. Хотите свою интерпретацию - в комментарии. Будет интересно почитать.
Специальные предложения
См. также
Cashback 35% при покупке 1С лицензий на счет INFOSTART.RU с 27.11 по 04.12 Промо
Оформляете заказ на 1С лицензии или конфигурации. Получаете 35% от стоимости на счет в профиле INFOSTART.RU. Выбираете сервисы и продукты на сумму кэшбэка.
Перенос данных БП 2.0 => УТ 11 / КА 2 / ERP 2 (перенос остатков, документов и справочников из "1С:Бухгалтерия предприятия 8", ред. 2.0 в "1С:Управление торговлей 8", ред.11 / КА 2 / ERP 2). Обновлено до УТ 11.4.10.х, КА 2.4.10.х, ERP 2.4.10.х! Промо
Перенос позволяет загрузить в УТ 11 / КА 2 / ERP 2 документы за выбранный период, справочную информацию и остатки по счетам бух. учета. Переносятся остатки денежных средств, взаиморасчетов, остатки товаров и материалов на складах. Переносятся девятнадцать основных видов документов за выбранный период и вся нормативно-справочная информация. Есть фильтр по организации. Если нужно переносить что-то дополнительно, то обычно бесплатно дорабатываю правила (перед покупкой согласуйте необходимые доработки).
29700 руб.
Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив 262
08.08.2019 18079 ids79 31
Онлайн-интенсив "Бизнес-процессы для подготовки к экзамену 1С:Специалист по платформе" 12 декабря 2019 г. Промо
На интенсиве будут рассмотрены все теоретические вопросы, связанные с устройством механизма бизнес-процессов – это необходимо для успешной сдачи экзамена 1С:Специалист по платформе. Также, в качестве практического примера, будет решена задача, аналогичная экзаменационной.
777 рублей
1С:Предприятие через Интернет. 1С:Fresh Промо
Ведение бухгалтерского и налогового учет, сдача отчетности, управление бизнесом из любой точки мира. Привычные программы «1С» через Интернет без приобретения коробочных программ.
Как настроить правильную техподдержку (helpdesk, service desk на коленке) 38
24.04.2019 9035 siddy 0
Новый раздел на Инфостарте - Electronic Software Distribution Промо
Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.
- Низкие цены, без скрытых платежей и наценок
- Оперативная отгрузка
- Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
- Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)
Преобразование EXCEL в таблицу значений без COM и других извращений 213
18.04.2019 14489 9 Eret1k 43
Очный семинар по регулярному менеджменту Александра Фридмана "Вы или Хаос", 12 декабря 2019 г. , Санкт-Петербург Промо
Семинар по регулярному менеджменту от Александра Фридмана для собственников, первых лиц и топов. Технология управленческого планирования, комплексного управления временем и другими ресурсами, выполнением поручений, делами, информацией, контактами (встречи-звонки-почта).
от 11000 до 29000 рублей
Перенос данных БП 3.0 => УТ 11 / КА 2 / ERP 2 (ЕРП) (перенос остатков, документов и справочной информации из "1С:Бухгалтерия предприятия 8", ред.3.0). Обновлено до БП 3.0.73.х, УТ 11.4.10.х, КА 2.4.10.х., ERP 2.4.10.х! Промо
Переносятся документы за выбранный период, справочная информация и остатки по счетам бух. учета в программу УТ 11 / КА 2 / ЕРП 2 (ERP). Переносятся все возможные виды операций ввода остатков на нужную дату. Есть отбор по периоду переноса документов и фильтр по организации, доступен выбор даты ввода остатков. Если нужно переносить что-то дополнительно, то обычно бесплатно добавляем это в перенос . Смотрите видеодемонстрацию со звуком - советами по переносу и рекомендациями настройки программ.
29700 руб.
Разработка и сценарное тестирование с Vanessa-ADD. Концепция, теория и сквозной пример создания сценария 226
09.01.2019 29394 Vladimir Litvinenko 69
Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке 505
14.11.2018 38856 GeterX 94
Перенос данных КА 1.1 / УПП 1.3 => БП 3.0 (перенос остатков, документов и справочников из "1С:Комплексная автоматизация 1.1" / УПП 1.3 в "1С:Бухгалтерия 3.0"). Обновлен до версий КА 1.1.115.х, УПП 1.3.127.х! Промо
Разработка позволяет перенести остатки по всем счетам бух.учета в программу "1С:Бухгалтерия предприятия 8", ред. 3.0 на выбранную дату начала ведения учета. Также переносятся документы за период и вся необходимая справочная информация. Правила оперативно обновляю при выходе новых релизов. Рассылка обновлений правил бесплатно в течение 12 месяцев. Есть видеодемонстрация проведения переноса данных. Конфигурации при использовании обмена остаются полностью типовыми. Перенос данных возможен в Бухгалтерию 3.0 версии ПРОФ, КОРП или базовую.
24700 руб.
Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С 128
10.11.2018 23572 ids79 40
Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git 281
18.10.2018 39378 stas_ganiev 72
Программы для исполнения 54-ФЗ Промо
С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.
Перенос документов и справочников ERP 2 / КА 2 / УТ 11 => БП 3.0 Промо
Перенос позволяет настроить собственный обмен данными между указанными программами, альтернативный предлагаемому фирмой 1С. Предоставляем техподдержку по всем вопросам данного обмена. Можем подключиться к вам удаленно для разбора ситуаций. Оперативно обновляем при выходе новых релизов 1С. Бесплатные обновления в течение полугода.
19700 руб.
Перенос документов, остатков и справочников КА 1.1 => КА 2 / УТ 11. Обновлено до КА 2.4.10.х и УТ 11.4.10.х! Промо
Более 130 компаний выполнили переход на КА 2 или УТ 11 с помощью нашей разработки! Позволяет перенести не только остатки и справочники (как типовая обработка), но и документы за нужный период времени. Предоставляем техподдержку, оперативно исправляем замечания, выпускаем обновления при выходе новых релизов программ 1С. Вы можете проверить разработку до покупки: сделаем бесплатный тестовый перенос из вашей базы КА 1.1 и предоставим доступ к базе-результату через веб-клиент!
29700 руб.
Перенос данных УПП 1.3 => ERP 2 (ЕРП) / УТ 11 / КА 2.х (обработка переноса документов, остатков и справочников из "1С:Управление производственным предприятием, ред. 1.3" в ERP / УТ 11 / КА 2). Обновлен до УПП 1.3.127.х, КА 2.4.10.х и ERP 2.4.10.х! Промо
Обработка позволяет переносить из УПП 1.3 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления при выходе новых релизов конфигураций 1С.
29700 руб.
Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть І: Справочники 96
11.05.2018 17561 V.Stavinsky 11