Copyright | (c) OleksandrZhabenko 2020 |
---|---|
License | MIT |
Stability | Experimental |
Safe Haskell | None |
Language | Haskell2010 |
Maintainer : olexandr543@yahoo.com
Helps to order the 7 or less Ukrainian words (or their concatenations) to obtain (to some extent) suitable for poetry or music text. This module provides several different norms that allow to research the text and to create interesting sequences.
Synopsis
- norm1 :: [Int] -> Int
- norm2 :: [Int] -> Int
- norm3 :: [Int] -> Int
- norm4 :: [Int] -> Int
- norm5 :: [Int] -> Int
- norm51 :: [Int] -> Int
- norm513 :: [Int] -> Int
- norm54 :: [Int] -> Int
- norm6 :: [Int] -> Int
- norm6r :: [Int] -> Int
- norm8 :: [Int] -> Int
- splitNorm :: [Int] -> Vector ([Int] -> Int) -> [Int]
- flSplitNorms :: Vector ([Int] -> Int) -> [Int] -> [Int]
- normSplit :: Vector ([Int] -> Int) -> [Int] -> Int
- normSplitWeighted :: [Int] -> Vector ([Int] -> Int) -> [Int] -> Int
- normSplitShifted :: [Int] -> Vector ([Int] -> Int) -> [Int] -> Int
- normSplitWeightedG :: (Int -> Int -> Int) -> [Int] -> Vector ([Int] -> Int) -> [Int] -> Int
Different norms
norm1 :: [Int] -> Int Source #
The first norm for the list of non-negative Int
. For not empty lists equals to the maximum element.
norm2 :: [Int] -> Int Source #
The second norm for the list of non-negative Int
. For not empty lists equals to the sum of the elements.
norm3 :: [Int] -> Int Source #
The third norm for the list of non-negative Int
. For not empty lists equals to the sum of the doubled maximum element and the rest elements of the list.
norm5 :: [Int] -> Int Source #
The fifth norm for the list of non-negative Int
. For not empty lists equals to the sum of the elements quoted with sum of the two most minimum elements.
norm54 :: [Int] -> Int Source #
The fifth-fourth norm for the list of non-negative Int
. Tries to generate more suitable for poetry text.
Norms combining
splitNorm :: [Int] -> Vector ([Int] -> Int) -> [Int] Source #
Splits a given list of non-negative integers into lists of elements not equal to zero and then applies to them the norms from the Vector
starting
from the last element in the vector right-to-left.
flSplitNorms :: Vector ([Int] -> Int) -> [Int] -> [Int] Source #
The flipped variant of the splitNorm
(can be more convenient for applications).
normSplitWeighted :: [Int] -> Vector ([Int] -> Int) -> [Int] -> Int Source #
Using splitNorm
and given a group of norms (represented as a Vector
) returns the sum of their applications. The importance of these norms can be
easily controlled by the first function argument. The corresponding greater numbers in the first argument list signify the greater importance of the
norm in the Vector
of norms all being applied (so these numbers are multiplicative weights in the sum). If some of the numbers are equal to zero then
the corresponding norm is not taken into account. If some of the numbers are negative then the corresponding norms are weightly subtracted from the sum.
normSplitShifted :: [Int] -> Vector ([Int] -> Int) -> [Int] -> Int Source #
Similar to normSplitWeighted
, but uses more complex modification instead of multiplication.
Using splitNorm
and given a group of norms (represented as a Vector
) returns the sum of their applications. The importance of these norms can be
controlled by the first function argument. The corresponding greater numbers in the first argument list signify the greater importance of the
norm in the Vector
of norms all being applied. If some of the numbers are negative then the corresponding norms reduces the sum in some way.
normSplitWeightedG :: (Int -> Int -> Int) -> [Int] -> Vector ([Int] -> Int) -> [Int] -> Int Source #
Generalization for the normSplitWeighted
and normSplitShifted
with the possibility to define and use the volatile function that influences the
weights for the norms in the Vector
. This function used in the zipWith
is given as the first argument.