Submission #6445168


Source Code Expand

-- modules to import --

import qualified Data.ByteString.Char8
import qualified Data.Maybe
import           Prelude

-- functions for this task --

tuplify2 (x:y:_) = (x,y)
tuplify2 _       = Prelude.undefined

read_Integer      = Prelude.fst . Data.Maybe.fromJust . Data.ByteString.Char8.readInteger
read_TupleInteger = tuplify2 . Prelude.map read_Integer . Data.ByteString.Char8.words

get_Integer      = read_Integer      <$> Data.ByteString.Char8.getLine
get_TupleInteger = read_TupleInteger <$> Data.ByteString.Char8.getLine

wind_Direction_core :: Integer -> Data.ByteString.Char8.ByteString
wind_Direction_core degree
        | degree_scaled >=  1125 && degree_scaled <=  3374 = Data.ByteString.Char8.pack $ "NNE"
        | degree_scaled >=  3375 && degree_scaled <=  5624 = Data.ByteString.Char8.pack $ "NE"
        | degree_scaled >=  5625 && degree_scaled <=  7874 = Data.ByteString.Char8.pack $ "ENE"
        | degree_scaled >=  7875 && degree_scaled <= 10124 = Data.ByteString.Char8.pack $ "E"
        | degree_scaled >= 10125 && degree_scaled <= 12374 = Data.ByteString.Char8.pack $ "ESE"
        | degree_scaled >= 12375 && degree_scaled <= 14624 = Data.ByteString.Char8.pack $ "SE"
        | degree_scaled >= 14625 && degree_scaled <= 16874 = Data.ByteString.Char8.pack $ "SSE"
        | degree_scaled >= 16875 && degree_scaled <= 19124 = Data.ByteString.Char8.pack $ "S"
        | degree_scaled >= 19125 && degree_scaled <= 21374 = Data.ByteString.Char8.pack $ "SSW"
        | degree_scaled >= 21375 && degree_scaled <= 23624 = Data.ByteString.Char8.pack $ "SW"
        | degree_scaled >= 23625 && degree_scaled <= 25874 = Data.ByteString.Char8.pack $ "WSW"
        | degree_scaled >= 25875 && degree_scaled <= 28124 = Data.ByteString.Char8.pack $ "W"
        | degree_scaled >= 28125 && degree_scaled <= 30374 = Data.ByteString.Char8.pack $ "WNW"
        | degree_scaled >= 30375 && degree_scaled <= 32624 = Data.ByteString.Char8.pack $ "NW"
        | degree_scaled >= 32625 && degree_scaled <= 34874 = Data.ByteString.Char8.pack $ "NNW"
        | Prelude.otherwise                                = Data.ByteString.Char8.pack $ "N"
        where
                degree_scaled = degree * 10

wind_Direction :: Integer -> Integer -> Data.ByteString.Char8.ByteString
wind_Direction degree wind_force
        | wind_force == 0   = Data.ByteString.Char8.pack $ "C"
        | Prelude.otherwise = wind_Direction_core $ degree

calc_wind_force :: Integer -> Integer
calc_wind_force wind_run
        | wind_speed <=   2 =  0
        | wind_speed <=  15 =  1
        | wind_speed <=  33 =  2
        | wind_speed <=  54 =  3
        | wind_speed <=  79 =  4
        | wind_speed <= 107 =  5
        | wind_speed <= 138 =  6
        | wind_speed <= 171 =  7
        | wind_speed <= 207 =  8
        | wind_speed <= 244 =  9
        | wind_speed <= 284 = 10
        | wind_speed <= 326 = 11
        | Prelude.otherwise = 12
        where
                wind_speed = Prelude.truncate $ (realToFrac $ wind_run) / (6.0 :: Double) + (0.5 :: Double)

-- the main process is as follows --

main :: IO ()
main = do

        -- STEP.01
        -- read out the given data
        given_data <- get_TupleInteger

        -- STEP.02
        -- calculate the wind force
        let val_wind_force = calc_wind_force $ Prelude.snd $ given_data

        -- STEP.03
        -- detect the wind direction & output the answer of this task
        Data.ByteString.Char8.putStr $ wind_Direction (Prelude.fst $ given_data) (val_wind_force)
        Data.ByteString.Char8.putStr $ (Data.ByteString.Char8.pack $ " ")
        Prelude.print                $ val_wind_force

Submission Info

Submission Time
Task C - 風力観測
User DSCF_1224
Language Haskell (GHC 7.10.3)
Score 100
Code Size 3730 Byte
Status AC
Exec Time 1 ms
Memory 380 KB

Judge Result

Set Name all
Score / Max Score 100 / 100
Status
AC × 66
Set Name Test Cases
all 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, 00_sample_05.txt, 00_sample_06.txt, 00_sample_07.txt, 00_sample_08.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 1 ms 380 KB
00_sample_02.txt AC 1 ms 380 KB
00_sample_03.txt AC 1 ms 380 KB
00_sample_04.txt AC 1 ms 380 KB
00_sample_05.txt AC 1 ms 380 KB
00_sample_06.txt AC 1 ms 380 KB
00_sample_07.txt AC 1 ms 380 KB
00_sample_08.txt AC 1 ms 380 KB
test_01.txt AC 1 ms 380 KB
test_02.txt AC 1 ms 380 KB
test_03.txt AC 1 ms 380 KB
test_04.txt AC 1 ms 380 KB
test_05.txt AC 1 ms 380 KB
test_06.txt AC 1 ms 380 KB
test_07.txt AC 1 ms 380 KB
test_08.txt AC 1 ms 380 KB
test_09.txt AC 1 ms 380 KB
test_10.txt AC 1 ms 380 KB
test_11.txt AC 1 ms 380 KB
test_12.txt AC 1 ms 380 KB
test_13.txt AC 1 ms 380 KB
test_14.txt AC 1 ms 380 KB
test_15.txt AC 1 ms 380 KB
test_16.txt AC 1 ms 380 KB
test_17.txt AC 1 ms 380 KB
test_18.txt AC 1 ms 380 KB
test_19.txt AC 1 ms 380 KB
test_20.txt AC 1 ms 380 KB
test_21.txt AC 1 ms 380 KB
test_22.txt AC 1 ms 380 KB
test_23.txt AC 1 ms 380 KB
test_24.txt AC 1 ms 380 KB
test_25.txt AC 1 ms 380 KB
test_26.txt AC 1 ms 380 KB
test_27.txt AC 1 ms 380 KB
test_28.txt AC 1 ms 380 KB
test_29.txt AC 1 ms 380 KB
test_30.txt AC 1 ms 380 KB
test_31.txt AC 1 ms 380 KB
test_32.txt AC 1 ms 380 KB
test_33.txt AC 1 ms 380 KB
test_34.txt AC 1 ms 380 KB
test_35.txt AC 1 ms 380 KB
test_36.txt AC 1 ms 380 KB
test_37.txt AC 1 ms 380 KB
test_38.txt AC 1 ms 380 KB
test_39.txt AC 1 ms 380 KB
test_40.txt AC 1 ms 380 KB
test_41.txt AC 1 ms 380 KB
test_42.txt AC 1 ms 380 KB
test_43.txt AC 1 ms 380 KB
test_44.txt AC 1 ms 380 KB
test_45.txt AC 1 ms 380 KB
test_46.txt AC 1 ms 380 KB
test_47.txt AC 1 ms 380 KB
test_48.txt AC 1 ms 380 KB
test_49.txt AC 1 ms 380 KB
test_50.txt AC 1 ms 380 KB
test_51.txt AC 1 ms 380 KB
test_52.txt AC 1 ms 380 KB
test_53.txt AC 1 ms 380 KB
test_54.txt AC 1 ms 380 KB
test_55.txt AC 1 ms 380 KB
test_56.txt AC 1 ms 380 KB
test_57.txt AC 1 ms 380 KB
test_58.txt AC 1 ms 380 KB