Magic squares of doubly even order: Difference between revisions

Content added Content deleted
m (→‎{{header|AppleScript}}: ( slight reordering ))
Line 602: Line 602:
limit = sqr + 1
limit = sqr + 1
series
series
-- For integer powers of 2, the (append not) 'magic' series directly
-- For powers of 2, the (append not) 'magic' series directly
-- yields the truth table that we need
-- yields the truth table that we need
| isPowerOf 2 n =
| isPowerOf 2 n =
magicSeries $ floor (logBase 2 (fromIntegral sqr))
magicSeries $ floor (logBase 2 (fromIntegral sqr))
-- where n is not an integer power of 2, we can replicate a
-- where n is not a power of 2, we can replicate a
-- minimum truth table, horizontally and vertically
-- minimum truth table, horizontally and vertically
| otherwise = (concat $ concat $ concat $
| otherwise = (concat . concat . concat .
scale $ fmap scale $ splitEvery 4 $ magicSeries 4)
scale . fmap scale $ splitEvery 4 $ magicSeries 4)
where
where
scale = replicate $ quot n 4
scale = replicate $ quot n 4