                    ABCD
                    CABD
                    ACDB
                    DACB
                    BCDA
                    ACBD
                    ADCB
                    CDAB
                    DABC
                    BCAD
                    CADB
                    CDBA
                    CBAD
                    ABDC
                    ADBC
                    BDCA
                    DCBA
                    BACD
                    BADC
                    BDAC
                    CBDA
                    DBCA
                    DCAB

Listed above are   all-but-one   of the permutations of the symbols   A,   B,   C,   and   D,   except   for one permutation that's   not   listed.



Task

Find that missing permutation.



Methods

 Obvious method: 
        enumerate all permutations of   A,  B,  C,  and  D,  
        and then look for the missing permutation. 

 alternate method:
        Hint:  if all permutations were shown above,  how many 
        times would  A  appear in each position?     
        What is the  parity  of this number?

 another alternate method:
        Hint:  if you add up the letter values of each column, 
        does a missing letter   A,  B,  C,  and  D   from each
        column cause the total value for each column to be unique?



Related task

   Permutations)


PRMLEN: equ     4               ; length of permutation string
puts:   equ     9               ; CP/M print string
        org     100h   
        lxi     d,perms         ; Start with first permutation
perm:   lxi     h,mperm         ; Missing permutation
        mvi     b,PRMLEN        ; Length of permutation
char:   ldax    d               ; Load character
        ora     a               ; Done?
        jz      done
        xra     m               ; If not, XOR into missing permutation
        mov     m,a
        inx     h               ; Increment pointers
        inx     d
        dcr     b               ; Next character of current permutation
        jnz     char
        jmp     perm            ; Next permutation
done:   lxi     d,msg           ; Print the message and exit
        mvi     c,puts
        jmp     5
msg:    db      'Missing permutation: '
mperm:  db      0,0,0,0,'$'     ; placeholder
perms:  db      'ABCD','CABD','ACDB','DACB','BCDA','ACBD','ADCB','CDAB'
        db      'DABC','BCAD','CADB','CDBA','CBAD','ABDC','ADBC','BDCA'
        db      'DCBA','BACD','BADC','BDAC','CBDA','DBCA','DCAB'
        db      0               ; end marker  