Нужен алгоритм создания хэша по заранее заданным значениям, с коллизиями по заданным значениям. На входе числа не более 255, на выходе не больше 2^32 (желательно 2^8 или хотя бы 2^16, но непринципиально).
Пример:
вход выход
1..4,25 9001
5,17,19 31337
8..12 100500
37 0
Естественно, входные диапазоны не пересекаются.
На ум пока приходит только построение КНФ, но может есть что-то с менее громоздким результатом?
UPD: Функция должна хорошо ложиться на C, хотелось бы обойтись без перечисления десятков «case x:» для диапазонов.