Как стать автором
Обновить

Комментарии 13

Сейчас в вакансия часто есть требование: умение читать (разбираться в) чужой(м) код(е). Когда появится требования: умение писать код, в котором не надо будет разбираться?

А почему цикл от нуля до 100 с проверкой остатков при целочисленном делении не считается хорошим решением задачи?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Полагаю, вас заинтересует эта статья: https://habr.com/ru/post/540136/


И особенно комментарии к ней. Там хоть и нет теоремы Эйлера, но хабр всё равно торт.

НЛО прилетело и опубликовало эту надпись здесь
Тут на каждой итерации происходит возведение в четвертую степень (можно за два умножения), одно взятие остатка, одно обращение к словарю из четырех элементов (допустим, одна операция). В сумме не меньше четырех элементарных операций, поэтому даже простой цикл с проверкой остатков будет не медленнее (два взятия остатков и два условия), и должен быть быстрее, потому что условия тут работают быстрее словаря уж точно.
А вообще, лучше всего использовать преподсчет массива до 15, после чего выводить его вообще не считая остатки.
до того, как n4 не переполнит тип integer, используемый в компьютере

Это легко решается через (n%15)**4%15.

по моему автор вообще не понимает суть задачи и придумывает какие-то «костыли» и «оверинжиниринг», осбенно это касается отдельной логики касающейся чисел делящийся и на 3 и на 5.
Для них не нужно выделять отдельное поведедение, достаточно посделорвательной проверки, например так(прошу прощения — из достпного только pl\sql):

declare
i integer;
n integer := 100;
begin
for i in 1..n loop
dbms_output.put(to_char(i)||' ');
if mod(i, 3)=0 then
dbms_output.put('Fizz');
end if;
if mod(i, 5)=0 then
dbms_output.put('Buzz');
end if;
dbms_output.put_line('');
end loop;
end;
/

В условии задачи суть в том, что если выводится текст, то само число не выводится.

А зачем в Питоновском коде лямбды и вызов функции, если можно так
[{1: n, 6: "Fizz", 10: "Buzz", 0: "FizzBuzz"}[n ** 4 % 15] for n in range(1, 101)]
?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации