У меня есть функция, которую я называю тысячи раз. Он различает около 40 различных случаев, основанных на значениях около 25 переменных. Каждая переменная имеет от 2 до 10 возможных значений. Поскольку для каждого значения не так много возможностей, и только 40 случаев, которые меня интересуют, я думал сделать каждый ответ целым числом от 0 до 9 и объединить эти целые числа, похожие на побитовые операторы. После объединения они могут использоваться в качестве ключей к словарю для извлечения типов, которые я ищу. Кто-нибудь знает о существующей реализации этого решения, о том, что он называется, или где я могу больше узнать об этом? Я пытаюсь решить это на C++ или Python. Мотивация здесь заключается в том, чтобы избежать тонких логических высказываний, скрывающих код. Кроме того, поскольку каждая переменная полностью независима, используя только команды if/else и/или switch, мне приходится проверять каждую переменную для каждого возможного значения несколько раз, поскольку не все различные типы группируются в категории, которые разделяют большую часть их логики. Таким образом, это решение может сделать код более удобным для чтения и более эффективным. Вот пример Python из рода, что я пытаюсь сделать:Группировка memoized решений в словаре
type_dict = {111: 'Type 1',
112: 'Type 2',
113: 'Type 3',
# ...
537: 'Type 32'} # etc.
answers = []
for each_run in list_of_scenarios:
# Based on a bunch of logic, determine the value of each variable
var_a = 5
var_b = 3
var_c = 7
# Combine these variables to one key
this_key = 100*var_a + 10*var_b + var_c
answers.append(type_dict[this_key])
ответ на этот вопрос описывается, как реализовать подобное решение в C++: http://stackoverflow.com/questions/1842941/translating-python-dictionary-to-c – Alex
ли эта работа для вас? –
Да, это работает. – Alex