Si te entiendo correctamente, entonces solo necesitas una tabla de 5 columnas que indique si un número está o no en un conjunto. Suponiendo que una salida de 1 es verdadera.
Set: {1, 2, 3, 5, 9, 11, 13, 14}
A/8 B/4 C/2 D/1 | N In Set
0 0 0 0 | 0 0/false
0 0 0 1 | 1 1/true
0 0 1 0 | 2 1/true
0 0 1 1 | 3 1/true
0 1 0 0 | 4 0/false
0 1 0 1 | 5 1/true
0 1 1 0 | 6 0/false
0 1 1 1 | 7 0/false
1 0 0 0 | 8 0/false
1 0 0 1 | 9 1/true
1 0 1 0 | 10 0/false
1 0 1 1 | 11 1/true
1 1 0 0 | 12 0/false
1 1 0 1 | 13 1/true
1 1 1 0 | 14 1/true
1 1 1 1 | 15 0/false
No tengo tanta experiencia en analizar la lógica que impulsa la última columna, pero espero que esto ayude. Dibujar la salida como cuadrados de diferentes dimensiones puede ayudar con la visualización de patrones. Mi proceso de pensamiento generalmente consiste en encontrar una expresión que haga que parte de la tabla funcione sin falsos negativos (sin trucos incorrectos) y luego hacer OR todas las partes juntas.
0 1 1 1 : 0- 3
0 1 0 0 : 4- 7
0 1 0 1 : 8-11
0 1 1 0 : 12-15
La primera y segunda columnas se destacan aquí; que corresponden a b0001, b0101, b1001, b1101 son verdaderas, el primer y segundo bits son irrelevantes y el tercero y el cuarto son puntos constantes hacia usted (bXX01)
!C & D
0 1 0 0
0 1 0 0
0 1 0 0
0 1 0 0
La reparación de la primera fila se podría hacer con C | RE; pero para capturar limitarlo a solo la primera fila requiere negar A y B
!A & !B & ( C | D )
0 1 1 1
0 0 0 0
0 0 0 0
0 0 0 0
OR together the parts.
(!C & D) | (!A & !B & ( C | D ))
0 1 1 1
0 1 0 0
0 1 0 0
0 1 0 0
Cerrar, pero 11 y 14 (b1011 y b1110) son los dos que quedan
- - - -
- - - -
- - 0 1
- - 1 0
Que se parece a una función XOR. B XOR D (cuando A y C son verdaderas).
A & C & (B xor D)
0 0 0 0
0 0 0 0
0 0 0 1
0 0 1 0
OR together the parts
(!C & D) | (!A & !B & ( C | D )) | (A & C & (B xor D))
0 1 1 1
0 1 0 0
0 1 0 1
0 1 1 0