module RealDice.Manipulate.GetValueFromRNGTable
( getBoolByIndex,
getIntByIndex,
)
where
getIntByIndex :: Int -> [Int] -> Int
getIntByIndex :: Int -> [Int] -> Int
getIntByIndex Int
index [Int]
l = [Int]
l [Int] -> Int -> Int
forall a. HasCallStack => [a] -> Int -> a
!! (Int
index Int -> Int -> Int
forall a. Integral a => a -> a -> a
`mod` [Int] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [Int]
l)
getBoolByIndex :: Int -> [Bool] -> Bool
getBoolByIndex :: Int -> [Bool] -> Bool
getBoolByIndex Int
index [Bool]
l =
if (Int
index Int -> Int -> Int
forall a. Integral a => a -> a -> a
`mod` ([Bool] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [Bool]
l Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
2)) Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< [Bool] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [Bool]
l
then [Bool]
l [Bool] -> Int -> Bool
forall a. HasCallStack => [a] -> Int -> a
!! (Int
index Int -> Int -> Int
forall a. Integral a => a -> a -> a
`mod` ([Bool] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [Bool]
l Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
2))
else Bool -> Bool
not ([Bool]
l [Bool] -> Int -> Bool
forall a. HasCallStack => [a] -> Int -> a
!! ((Int
index Int -> Int -> Int
forall a. Integral a => a -> a -> a
`mod` ([Bool] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [Bool]
l Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
2)) Int -> Int -> Int
forall a. Num a => a -> a -> a
- [Bool] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [Bool]
l))