User:Roman Czyborra

[//en.wikipedia.org/wiki/Exact_cover#Exact_hitting_set Exact Covers and Hittings]
$c(s) = \{ r\subseteq s : \forall x \in \cup s : \exists! y \in r: y \ni x \}$

$h(s) = \{ r\subseteq \cup s: \forall x \in s : \exists! y \in r: y \in x \}$

exacthittings sets = if null sets then else [ pivot : extension | pivot <- minimumBy (comparing length) sets, let (deletables, undeletables) = partition (elem pivot) sets, extension <- exacthittings (map (\\ union deletables) undeletables) ] test0 = exacthittings (words "ab ef de abc cd de acef") == words "bdf" sudokus = exacthittings (concat [ [       row x >< [y],       col x >< [y],       [x] >< [y] >< [0..8],       box (divMod x 3) >< [y] ] | (x,y) <- [0..8] >< [0..8] ]) where (><) = liftM2 row i = [i] >< [0..8] col i = [0..8] >< [i] box (i,j) = map (3*i+) [0..2] >< map (3*j+) [0..2] test1 = sudokus

[//en.wikipedia.org/wiki/Sedenion Sedenion Multiplication]
$ \begin{bmatrix} +P0&-P1&-P2&-P3&-P4&-P5&-P6&-P7&-P8&-P9&-PA&-PB&-PC&-PD&-PE&-PF \\ +P1&+P0&-P3&+P2&-P5&+P4&+P7&-P6&-P9&+P8&+PB&-PA&+PD&-PC&-PF&+PE \\ +P2&+P3&+P0&-P1&-P6&-P7&+P4&+P5&-PA&-PB&+P8&+P9&+PE&+PF&-PC&-PD \\ +P3&-P2&+P1&+P0&-P7&+P6&-P5&+P4&-PB&+PA&-P9&+P8&+PF&-PE&+PD&-PC \\ +P4&+P5&+P6&+P7&+P0&-P1&-P2&-P3&-PC&-PD&-PE&-PF&+P8&+P9&+PA&+PB \\ +P5&-P4&+P7&-P6&+P1&+P0&+P3&-P2&-PD&+PC&-PF&+PE&-P9&+P8&-PB&+PA \\ +P6&-P7&-P4&+P5&+P2&-P3&+P0&+P1&-PE&+PF&+PC&-PD&-PA&+PB&+P8&-P9 \\ +P7&+P6&-P5&-P4&+P3&+P2&-P1&+P0&-PF&-PE&+PD&+PC&-PB&-PA&+P9&+P8 \\ +P8&+P9&+PA&+PB&+PC&+PD&+PE&+PF&+P0&-P1&-P2&-P3&-P4&-P5&-P6&-P7 \\ +P9&-P8&+PB&-PA&+PD&-PC&-PF&+PE&+P1&+P0&+P3&-P2&+P5&-P4&-P7&+P6 \\ +PA&-PB&-P8&+P9&+PE&+PF&-PC&-PD&+P2&-P3&+P0&+P1&+P6&+P7&-P4&-P5 \\ +PB&+PA&-P9&-P8&+PF&-PE&+PD&-PC&+P3&+P2&-P1&+P0&+P7&-P6&+P5&-P4 \\ +PC&-PD&-PE&-PF&-P8&+P9&+PA&+PB&+P4&-P5&-P6&-P7&+P0&+P1&+P2&+P3 \\ +PD&+PC&-PF&+PE&-P9&-P8&-PB&+PA&+P5&+P4&-P7&+P6&-P1&+P0&-P3&+P2 \\ +PE&+PF&+PC&-PD&-PA&+PB&-P8&-P9&+P6&+P7&+P4&-P5&-P2&+P3&+P0&-P1 \\ +PF&-PE&+PD&+PC&-PB&-PA&+P9&-P8&+P7&-P6&+P5&+P4&-P3&-P2&+P1&+P0 \\ \end{bmatrix} \begin{bmatrix} Q0\\Q1\\Q2\\Q3\\Q4\\Q5\\Q6\\Q7\\Q8\\Q9\\QA\\QB\\QC\\QD\\QE\\QF \end{bmatrix} =: \begin{bmatrix} P0\\P1\\P2\\P3\\P4\\P5\\P6\\P7\\P8\\P9\\PA\\PB\\PC\\PD\\PE\\PF \end{bmatrix} \begin{bmatrix} Q0\\Q1\\Q2\\Q3\\Q4\\Q5\\Q6\\Q7\\Q8\\Q9\\QA\\QB\\QC\\QD\\QE\\QF \end{bmatrix}$

sudo apt-get install open-axiom ; open-axiom octon(p0,p1,p2,p3,p4,p5,p6,p7)*octon(q0,q1,q2,q3,q4,q5,q6,q7)-conjugate(octon(q8,q9,qa,qb,qc,qd,qe,qf))*octon(p8,p9,pa,pb,pc,pd,pe,pf) octon(q8,q9,qa,qb,qc,qd,qe,qf)*octon(p0,p1,p2,p3,p4,p5,p6,p7)+octon(p8,p9,pa,pb,pc,pd,pe,pf)*conjugate(octon(q0,q1,q2,q3,q4,q5,q6,q7)) octon(p0,p1,p2,p3,p4,p5,p6,p7)*octon(q0,q1,q2,q3,q4,q5,q6,q7) )quit

tee --append PowerNum.lhs << 0 - partner (umbox - row) col where umbox = until (>row) (2*) 1 LT -> 0 - flip partner row col EQ -> row EOF

Graphemica
(🏭)=map; 囪=filter; 㪭=fold