Pull to refresh

Comments 13

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

А почему цикл от нуля до 100 с проверкой остатков при целочисленном делении не считается хорошим решением задачи?
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here

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


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

UFO just landed and posted this here
Тут на каждой итерации происходит возведение в четвертую степень (можно за два умножения), одно взятие остатка, одно обращение к словарю из четырех элементов (допустим, одна операция). В сумме не меньше четырех элементарных операций, поэтому даже простой цикл с проверкой остатков будет не медленнее (два взятия остатков и два условия), и должен быть быстрее, потому что условия тут работают быстрее словаря уж точно.
А вообще, лучше всего использовать преподсчет массива до 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)]
?
Sign up to leave a comment.

Articles