aboutsummaryrefslogtreecommitdiff
path: root/Math/Combinatorics/YoungTableaux.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Math/Combinatorics/YoungTableaux.hs')
-rw-r--r--Math/Combinatorics/YoungTableaux.hs11
1 files changed, 11 insertions, 0 deletions
diff --git a/Math/Combinatorics/YoungTableaux.hs b/Math/Combinatorics/YoungTableaux.hs
new file mode 100644
index 0000000..baa11c0
--- /dev/null
+++ b/Math/Combinatorics/YoungTableaux.hs
@@ -0,0 +1,11 @@
+isRowWord' :: Ord a => [a] -> [a] -> [a] -> Bool
+isRowWord' _ ys [] = ys == []
+isRowWord' [] [] zs = isRowWord' [head zs] [] (tail zs)
+isRowWord' xs [] zs = if last xs <= head zs then isRowWord' (xs ++ [head zs]) [] (tail zs) else isRowWord' [] xs zs
+isRowWord' xs ys zs =
+ if xs == [] || last xs <= head zs
+ then head ys > head zs && (isRowWord' (xs ++ [head zs]) (tail ys) (tail zs))
+ else ys == [] && isRowWord' [] xs zs
+
+isRowWord :: Ord a => [a] -> Bool
+isRowWord = isRowWord' [] []