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 решил восполнить пробел.
Прошу ногами не пинать, помидорами не закидывать. Хотите свою интерпретацию - в комментарии. Будет интересно почитать.
Специальные предложения
См. также
[Шпаргалка] Программное создание элементов формы 338
06.09.2019 16718 rpgshnik 43
С 2020 года сервис «Продление поддержки конфигурации 1С:УПП» подорожает вдвое Промо
Успейте продлить поддержку УПП до повышения цен! Фирма «1С» предупредила об изменении цен на сервис «Продление поддержки конфигурации "1С:Управление производственным предприятием"». С 1 января 2020 года сервис подорожает в два раза.
Агрегатные функции СКД, о которых мало кто знает 386
05.09.2019 19822 ids79 45
Обмен данными. Консистентность vs Многопоточность 29
03.09.2019 5885 m-rv 1
Программы для исполнения 54-ФЗ Промо
С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.
Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив 285
08.08.2019 24640 ids79 34
Обработчики событий при записи объектов. Зачем и что за чем? 247
25.07.2019 18987 4 AlbinaAAA 24
Базовый курс по разработке мобильных 1C-приложений для Android-устройств. Третий поток. Онлайн-интенсив с 11 февраля по 05 марта 2020 г. Промо
Данный онлайн-курс предусматривает изучение базовых принципов создания приложений для операционной системы Android, работающих на мобильной платформе “1С:Предприятие”. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие” при разработке прикладных решений для “обычных” компьютеров, но пока ещё не занимался разработкой 1С-приложений, предназначенных для работы на мобильных устройствах.
7500 рублей
Создание отчетов с помощью СКД - основные понятия и элементы 225
25.06.2019 27714 ids79 17
Подсистема "Варианты отчетов". Используете ли Вы ее правильно? 228
04.06.2019 22562 YPermitin 49
Подборка программ для взаимодействия с ЕГАИС Промо
ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.
Выгрузка документа по условию 5
25.04.2019 8608 m-rv 2
Как настроить правильную техподдержку (helpdesk, service desk на коленке) 40
24.04.2019 10264 siddy 0
Подборка решений для взаимодействия со ФГИС «Меркурий» Промо
С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.
Преобразование EXCEL в таблицу значений без COM и других извращений 219
18.04.2019 16364 9 Eret1k 43
Как прикрутить ГУИД к регистру сведений 23
16.04.2019 11496 m-rv 16
Готовые переносы данных из различных конфигураций 1C Промо
Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.
Excel vs 1С: битва с неожиданным исходом 43
11.04.2019 29055 bolefirenko 109
Копирование числовых ячеек из 1С в Excel 26
15.01.2019 14238 itriot11 21
INFOSTART MEETUP Krasnodar. 14 февраля 2020 г. Промо
Краснодар станет первым в 2020 году местом, где пройдет региональная встреча IT-специалистов сообщества Инфостарт. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Стоимость участия - 5000 рублей. Цена действительна до 26.12.2019.
Разработка и сценарное тестирование с Vanessa-ADD. Концепция, теория и сквозной пример создания сценария 236
09.01.2019 32066 Vladimir Litvinenko 69
Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке 529
14.11.2018 44363 GeterX 94
Открыто голосование за доклады на INFOSTART MEETUP Krasnodar Промо
Выбирайте и голосуйте за самые интересные доклады, лучшие из них попадут в окончательную программу митапа. Голосование продлится до 30 января 2020 года.
Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С 132
10.11.2018 25020 ids79 40
Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git 285
18.10.2018 43453 stas_ganiev 72
Перенос документов, остатков и справочников КА 1.1 => КА 2 / УТ 11. Обновлено до КА 2.4.12.х и УТ 11.4.11.х! Промо
Более 130 компаний выполнили переход на КА 2 или УТ 11 с помощью нашей разработки! Позволяет перенести не только остатки и справочники (как типовая обработка), но и документы за нужный период времени. Предоставляем техподдержку, оперативно исправляем замечания, выпускаем обновления при выходе новых релизов программ 1С. Вы можете проверить разработку до покупки: сделаем бесплатный тестовый перенос из вашей базы КА 1.1 и предоставим доступ к базе-результату через веб-клиент!
29700 руб.
Вспомогательные инструкции в коде 1С 108
15.10.2018 22904 tormozit 100
Из Excel в 1С запросом 33
14.08.2018 15956 m-rv 5
Новый раздел на Инфостарте - Electronic Software Distribution Промо
Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.
- Низкие цены, без скрытых платежей и наценок
- Оперативная отгрузка
- Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
- Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)
Тестер: частые вопросы 159
25.07.2018 22852 grumagargler 24
Повышаем эффективность разработки правил обмена 127
25.06.2018 22434 olegtymko 47
1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо
Данный онлайн-курс предусматривает углубленное изучение языка запросов и возможностей системы компоновки данных, которые понадобятся при разработке отчетов, работающих на платформе “1С:Предприятие” в рамках различных прикладных решений. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей различных прикладных решений, которые используют в своей работе отчеты разного назначения.
6500 рублей
Как сделать запрос на изменение данных 76
01.06.2018 23952 m-rv 21
Строим графы средствами 1С (без GraphViz) 46
23.05.2018 19813 slozhenikin_com 20
Базовый курс для начинающих 1С-программистов. Пятый поток. Онлайн-курс с 12 февраля по 15 апреля 2020 г. Промо
Данный онлайн-курс является начальной ступенью по изучению базовых принципов программирования в системе “1С:Предприятие” и предназначен для обучения 1С-программированию “с нуля”.
4500/9500 рублей
Распределение расходов пропорционально продажам 9
13.05.2018 13939 Rustig 9
Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть І: Справочники 97
11.05.2018 18283 V.Stavinsky 11