Если несколько условий относятся к одному и тому же блоку кода, можно объединить их с помощью логических операторов && (И) и || (ИЛИ). Это поможет сократить количество отдельных операторов if.
В бытность работы прогером, всегда начинал с чистых листков бумаги. ;-)
В приведенном примере расматриваеться простой код, но и в этом случае , лучше можно провести его рефакторинг и разбить на отдельные модули или функции. Это улучшит его структуру и облегчит дальнейшую поддержку.
По существу куча операторов if then друг за другом в программисткой среде считается плохим стилем программирования для кодера. А для алгоритмистов вообще глаза режет.
"Сначала всегда четко поставленное тех.задание." Ай-я-яй! Сначала - критиковали автора статьи, а когда Вам предложили исправить его "ошибки" - заговорили про техзадание! Автору статьи - техзадания никто не ставил!!!
ок. Если сами не хотите, но настиваете, сам свараганю, говорю это обреченно, заранее зная, что вы то "хотели на самом деле соовсем другое!" ;-) ------ Имеем множество (set) неупорядоченной коллекции уникальных элементов, связанной с массивом значений. При операции пересечения двух наборов результатом будет новый набор, содержащий только элементы, общие для обоих исходных наборов. Это позволяет получить выборку (подмножество) элементов, принадлежащих обоим наборам. *без if then
Главное уловили и, как я понял ,согласны - линейные алгоритмы if then менее эффективны и менее понятны, чем этот приведенный bitmasking, где определенные биты числа множества выделяются или сбрасываются с помощью логических операций (И, ИЛИ, НЕ) . Это ближе к тому алгоритму, который люди используют в своей жизни при принятии решений. Приведенный же в топике алгоритм , это не только , что просто неэффективное программирование, а еще и уводит , применительно к христианству, куда-то совсем не в ту сторону, и к очень странным выводам.
"Приведенный же в топике алгоритм , это не только , что просто неэффективное программирование, а еще и уводит , применительно к христианству, куда-то совсем не в ту сторону" Так бы и сказали сразу, что Вам не понравились идеи автора. Посему обвинять автора в непрофессионализме - с Вашей стороны нечестно.
Если несколько условий относятся к одному и тому же блоку кода, можно объединить их с помощью логических операторов && (И) и || (ИЛИ). Это поможет сократить количество отдельных операторов if.
Reply
Клавиатура Вам в руки!
Reply
В бытность работы прогером, всегда начинал с чистых листков бумаги. ;-)
В приведенном примере расматриваеться простой код, но и в этом случае , лучше можно провести его рефакторинг и разбить на отдельные модули или функции. Это улучшит его структуру и облегчит дальнейшую поддержку.
По существу куча операторов if then друг за другом в программисткой среде считается плохим стилем программирования для кодера. А для алгоритмистов вообще глаза режет.
Reply
Почему бы Вам не показать конечный результат рекомендуемых Вами улучшений?
Reply
Сначала всегда четко поставленное тех.задание.
Reply
Ай-я-яй!
Сначала - критиковали автора статьи, а когда Вам предложили исправить его "ошибки" - заговорили про техзадание!
Автору статьи - техзадания никто не ставил!!!
Reply
ок. Если сами не хотите, но настиваете, сам свараганю, говорю это обреченно, заранее зная, что вы то "хотели на самом деле соовсем другое!" ;-)
------
Имеем множество (set) неупорядоченной коллекции уникальных элементов, связанной с массивом значений. При операции пересечения двух наборов результатом будет новый набор, содержащий только элементы, общие для обоих исходных наборов. Это позволяет получить выборку (подмножество) элементов, принадлежащих обоим наборам. *без if then
на языке pyton.
# два множества
set_a = set(range(10)) # {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
set_b = set(range(5, 15)) # {5, 6, 7, 8, 9, 10, 11, 12, 13, 14}
# каждое ассоциировано с массивом значений
print("Set A:", list(set_a)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print("Set B:", list(set_b)) # [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
# Пересечение двух множеств получаем подмножество
intersection = set_a.intersection(set_b)
print("Intersection:", intersection) # {5, 6, 7, 8, 9}
Вывод будет выглядить так
Set A: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Set B: [5, 6, 7, 8, 9, 10, 11 ( ... )
Reply
Думаю, что логичнее было дать ответ в псевдокодах - как это сделано в стартовом сообщении.
Ну и, опять-таки, если код предназначен не только для исполнения, но и для чтения человеком, то лучше его писать более наглядно.
По мне, лучше $a = $a + 5, чем $a += 5 (правда, подобный оператор конкатенации я воспринимаю нормально).
Reply
Главное уловили и, как я понял ,согласны - линейные алгоритмы if then менее эффективны и менее понятны, чем этот приведенный bitmasking, где определенные биты числа множества выделяются или сбрасываются с помощью логических операций (И, ИЛИ, НЕ) . Это ближе к тому алгоритму, который люди используют в своей жизни при принятии решений.
Приведенный же в топике алгоритм , это не только , что просто неэффективное программирование, а еще и уводит , применительно к христианству, куда-то совсем не в ту сторону, и к очень странным выводам.
Reply
Так бы и сказали сразу, что Вам не понравились идеи автора.
Посему обвинять автора в непрофессионализме - с Вашей стороны нечестно.
Reply
Leave a comment