結果
| 問題 | No.9001 標準入出力の練習問題(テスト用) |
| ユーザー |
|
| 提出日時 | 2015-07-11 06:47:23 |
| 言語 | Haskell (9.12.2) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 1,000 ms |
| コード長 | 1,528 bytes |
| 記録 | |
| コンパイル時間 | 7,381 ms |
| コンパイル使用メモリ | 174,464 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-08 02:47:00 |
| 合計ジャッジ時間 | 2,235 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 2 |
コンパイルメッセージ
Loaded package environment from /home/judge/.ghc/x86_64-linux-9.8.2/environments/default [1 of 2] Compiling Main ( Main.hs, Main.o ) [2 of 2] Linking a.out
ソースコード
-- <$>とか使う場合は必須。でも、7.10からはデフォルトで読み込まれるので不要。
import Control.Applicative
-- main、ここでIOモナドを完結させる。
main :: IO ()
-- do記法を使う。別に他の方法でもいいけど、読み込む物が多くなった場合は、
-- こっちの方がわかりやすいと思う。たぶん。
main = do
-- ----
-- 1行読み込んで、空白切りで配列に分割して、それぞれを数字に変換する。
-- readで変換される型は、main'での型指定によって決まる。
-- IO [a]
ab <- map read . words <$> getLine
-- ----
-- 単純に1行をStringとして読み込む。末尾改行は含まれない。
-- IO String
s <- getLine
-- ----
-- その他に、1行に数字一つだけであれば下記のようにする。
-- IO a
-- n <- read <$> getLine
-- ----
-- 読み込んだ値を別関数に渡して、戻り値を出力する。
-- 戻り値がIntの場合は、`print`を使う。
-- 戻り値がFloatの場合は、`Text.Printf.printf`を使う必要がある。
-- IO ()
putStrLn $ main' ab s
-- 実際に問題を解く関数main'、実際の名前は何でもいい。
-- ここの型指定でmainでのreadが何に変換されるが決まる。
-- IOモナドは持ち込まずに純粋な関数だけの世界にすると書きやすいと思う。
main' :: [Int] -> String -> String
main' ab s = (show . sum) ab ++ " " ++ s