Sierpinski carpet: Difference between revisions

m
(Added Fennel.)
Line 327:
(ES5 Functional version)
 
<lang AppleScript>-- CARPET MODEL ----------------------------------------- CARPET MODEL ---------------------
 
-- sierpinskiCarpet :: Int -> [[Bool]]
Line 341:
-- inCarpet :: Int -> Int -> Bool
on inCarpet(x, y)
if (x0 = 0x or y0 = 0y) then
true
else
not ((1 = x mod 3 = 1) and ¬
(1 = y mod 3 = 1)) and ¬
inCarpet(x div 3, y div 3)
end if
Line 363:
 
 
-- TEST --------------------------------------------- TEST -------------------------
on run
-- Carpets of orders 1, 2, 3
Line 376:
end run
 
-- CARPET DISPLAY ---------------------------------------- CARPET DISPLAY --------------------
 
-- showCarpet :: Int -> String
on showCarpet(n)
 
-- showRow :: [Bool] -> String
script showRow
Line 403:
 
 
-- GENERIC FUNCTIONS -------------------------------------- GENERIC FUNCTIONS -------------------
 
-- enumFromTo :: Int -> Int -> [Int]
on enumFromTo(m, n)
if m > n then
set dxs to -1{}
repeat with i from m to n by d
set end of lstxs to i
end repeat
xs
else
set d to 1{}
end if
set lst to {}
repeat with i from m to n by d
set end of lst to i
end repeat
return lst
end enumFromTo
 
 
-- intercalate :: Text -> [Text] -> Text
on intercalate(strText, lstText)
set {dlm, my text item delimiters} to {my text item delimiters, strText}
set strJoined to lstText as text
set my text item delimiters to dlm
return lststrJoined
end intercalate
 
 
-- map :: (a -> b) -> [a] -> [b]
Line 431 ⟶ 440:
end map
 
-- intercalate :: Text -> [Text] -> Text
on intercalate(strText, lstText)
set {dlm, my text item delimiters} to {my text item delimiters, strText}
set strJoined to lstText as text
set my text item delimiters to dlm
return strJoined
end intercalate
 
-- Lift 2nd class handler function into 1st class script wrapper
9,655

edits