M.Suzuki #6123(2008/03/31 09:56 GMT) [ Haskell ] Rating0/0=0.00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
-- -- 固定長データを参照する -- module Main where import System -- -- base length -- firstNameLen = 12 lastNameLen = 12 sexLen = 1 ageLen = 3 yearLen = 4 monthLen = 2 dateLen = 2 breakFastLen = 500 lunchLen = 500 dinnerLen = 500 -- -- base position -- firstNamePos = 0 lastNamePos = firstNamePos + firstNameLen sexPos = lastNamePos + lastNameLen agePos = sexPos + sexLen yearPos = agePos + ageLen monthPos = yearPos + yearLen datePos = 0 breakFastPos = datePos + dateLen lunchPos = breakFastPos + breakFastLen dinnerPos = lunchPos + lunchLen -- -- length -- userHeaderLen = firstNameLen + lastNameLen + sexLen + ageLen + yearLen + monthLen userDataLen = dateLen + breakFastLen + lunchLen + dinnerLen userLen = userHeaderLen + userDataLen * 31 -- -- position -- userPos n = userLen * n userDataPos n = userHeaderLen + userDataLen * n -- -- access utility -- cut d (pos, len) = take len $ drop pos d getUser d n = cut d (userPos n, userLen) getUserData user n = cut user (userDataPos n, userDataLen) getFirstName user = cut user (firstNamePos, firstNameLen) getLastName user = cut user (lastNamePos, lastNameLen) getSex user = cut user (sexPos, sexLen) getAge user = cut user (agePos, ageLen) getYear user = cut user (yearPos, yearLen) getMonth user = cut user (monthPos, monthLen) getDate user n = cut (getUserData user n) (datePos, dateLen) getBreakFast user n = cut (getUserData user n) (breakFastPos, breakFastLen) getLunch user n = cut (getUserData user n) (lunchPos, lunchLen) getDinner user n = cut (getUserData user n) (dinnerPos, dinnerLen) -- -- example -- main = do args <- getArgs contents <- if (not.null) args then readFile $ head args else getContents let user = getUser contents 0 putStrLn $ show $ getLastName user putStrLn $ show $ getFirstName user -- where -- user n = "Jyunichiro " ++ "Koizumi " ++ "F" ++ "66" ++ -- "2008" ++ "03" ++ days -- days = show $ map (\x -> (dayNo x) ++ foods) [1..31] -- dayNo n = reverse $ take 2 $ reverse $ "0" ++ (show n) -- foods = concat $ replicate 3 (replicate 500 ' ')
Rating0/0=0.00-0+
[ reply ]
M.Suzuki #6123() [ Haskell ] Rating0/0=0.00
Rating0/0=0.00-0+
[ reply ]