![]() |
#21 |
Участник
|
Ну-ка, ну-ка...
![]() Цитата:
Цитата:
Цитата:
Цитата:
Применительно к Аксапте тут есть одно противоречие: оптимизация vs простота сопровождения и развития кода. Зачастую при написании кода, по-моему, лучше выбрать более "многословный" вариант, состоящий из отчасти избыточных блоков, в большей степени автономных и поддающихся кастомизации, нежели написать лаконичный "заоптимизированный" вариант, который, в случае чего, придется просто выкинуть и переписать с нуля. Это все, во многом, - брюзжание, но все же... не стоит делать из мухи слона: исходный вариант решения далек от идеала, были предложены более оптимальные варианты, но делать далеко идущие выводы на основе такой тривиальной задачи, по-моему, - перебор. |
|
|
За это сообщение автора поблагодарили: Lemming (1), S.Kuskov (1), Player1 (1). |
![]() |
#22 |
Участник
|
Мы все еще находимся в контексте Аксапты или перешли на разговор о "вообще"?
![]() если "вообще" - согласен. Цитата:
Сообщение от gl00mie
![]() Применительно к Аксапте тут есть одно противоречие: оптимизация vs простота сопровождения и развития кода. Зачастую при написании кода, по-моему, лучше выбрать более "многословный" вариант, состоящий из отчасти избыточных блоков, в большей степени автономных и поддающихся кастомизации, нежели написать лаконичный "заоптимизированный" вариант, который, в случае чего, придется просто выкинуть и переписать с нуля.
![]() |
|
![]() |
#23 |
Участник
|
![]() Цитата:
Я читал исходники и восхищался. Практически не к чему придраться, ну разве что я бы еще тестов добавил. Но само решение - высший класс.
настоящее erp-решение! |
|
![]() |
#24 |
Участник
|
Цитата:
Сообщение от mazzy
![]() Если честно, то чудовищная реализация, на мой взгляд.
Избыточное вычисление mod и куча лишнего кода. с точки зрения вычислений лучше уж так. X++: #define.FIZZ(3) #define.BUZZ(5) static void FizzBuzzImpl(Args _args) { int i; str fizz; str buzz; ; for (i = 1; i <=100; i++) { fizz = ((i mod #FIZZ) == 0) ? "Fizz" : ""; buzz = ((i mod #BUZZ) == 0) ? "Buzz" : ""; if( fizz || buzz ) { info(strfmt("%1%2 %3", fizz, buzz, i)); } } } Вот только результат не совпадает с указанным в задании. Считаю, что тест по выявлению "не умеющих писать код" работает как надо. Задание Цитата:
Напишите программу, которая выводит на экран числа от 1 до 100. При этом вместо чисел, кратных трем, программа должна выводить слово «Fizz», а вместо чисел, кратных пяти — слово «Buzz». Если число кратно и 3, и 5, то программа должна выводить слово «FizzBuzz»
Цитата:
Fizz 3
Buzz 5 Fizz 6 Fizz 9 Buzz 10 Fizz 12 FizzBuzz 15 Fizz 18 Buzz 20 Fizz 21 Fizz 24 Buzz 25 Fizz 27 FizzBuzz 30 Fizz 33 Buzz 35 Fizz 36 Fizz 39 Buzz 40 Fizz 42 FizzBuzz 45 Fizz 48 Buzz 50 Fizz 51 Fizz 54 Buzz 55 Fizz 57 FizzBuzz 60 Fizz 63 Buzz 65 Fizz 66 Fizz 69 Buzz 70 Fizz 72 FizzBuzz 75 Fizz 78 Buzz 80 Fizz 81 Fizz 84 Buzz 85 Fizz 87 FizzBuzz 90 Fizz 93 Buzz 95 Fizz 96 Fizz 99 Buzz 100 |
|
|
За это сообщение автора поблагодарили: mazzy (5). |
![]() |
#25 |
Участник
|
|
|
![]() |
#26 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: mazzy (5). |
![]() |
#27 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#28 |
Участник
|
Ай, хорошо. Ай, люблю...
Спасибо. исправленная версия X++: #define.FIZZ(3) #define.BUZZ(5) static void FizzBuzzImpl(Args _args) { int i; str fizz; str buzz; ; for (i = 1; i <=100; i++) { fizz = ((i mod #FIZZ) == 0) ? "Fizz" : ""; buzz = ((i mod #BUZZ) == 0) ? "Buzz" : ""; if( fizz || buzz ) { info(strfmt("%1%2", fizz, buzz)); } else { info(strfmt("%1", i)); } } } |
|
|
За это сообщение автора поблагодарили: S.Kuskov (1). |