Мне нужен вопрос FizzBuzz, в котором не используется оператор по модулю. Тем более, что я обычно беру интервью у веб-разработчиков, для которых оператор по модулю встречается не так часто. И если это не то, с чем вы сталкиваетесь регулярно, это одна из тех вещей, которые вы ищите несколько раз, когда вам это нужно.
(Конечно, это концепция, с которой в идеале вы должны были столкнуться на курсе математики где-то по пути, но это уже другая тема.)
Итак, я придумал то, что я без всякого воображения называю « тройки в обратном направлении» . Инструкция такая:
Напишите программу, которая выводит в обратном порядке каждые 3 числа от 1 до 200.
Выполнить это в обычном порядке очень просто: умножьте индекс цикла на 3, пока не дойдете до числа, превышающего 200, затем выйдите. Вам не нужно беспокоиться о том, сколько итераций нужно завершить после, просто продолжайте, пока не достигнете первого слишком высокого значения.
Но, возвращаясь назад, вы должны знать, с чего начать. Некоторые могут интуитивно понять, что 198 (3 * 66) является наибольшим кратным 3, и поэтому жестко запрограммировать 66 в цикл. Другие могут использовать математическую операцию (целочисленное деление или пол () для деления с плавающей запятой 200 и 3), чтобы вычислить это число, и тем самым предоставить что-то более универсальное.
По сути, это та же проблема, что и FizzBuzz (перебирать значения и распечатывать их с изюминкой). Это проблема, требующая решения, которая не использует ничего столь же (относительно) эзотерического, как операция по модулю.