Пояснение
Кто не знает, не помнит, вот содержание задачи.
Напишите программу, которая выводит на экран числа от 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 решил восполнить пробел.
Прошу ногами не пинать, помидорами не закидывать. Хотите свою интерпретацию - в комментарии. Будет интересно почитать.
Вступайте в нашу телеграмм-группу Инфостарт
