回答編集履歴
4
tailsを使うように修正
test
CHANGED
@@ -6,18 +6,18 @@
|
|
6
6
|
|
7
7
|
import Control.Applicative
|
8
8
|
|
9
|
+
import Data.List (tails, isPrefixOf)
|
10
|
+
|
9
11
|
|
10
12
|
|
11
13
|
main = do
|
12
14
|
|
13
|
-
ls <- lines <$> getContents
|
15
|
+
ls <- map (map (read :: String -> Integer) . words . head) . takeWhile (not . isPrefixOf ["", ""]) . tails . lines <$> getContents
|
14
16
|
|
15
|
-
let ls' = map (map (read :: String -> Integer) . words . fst) $ takeWhile (/= ("", "")) $ zip ls $ tail ls
|
16
|
-
|
17
|
-
print ls
|
17
|
+
print ls
|
18
18
|
|
19
19
|
```
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
-
コツとしては`
|
23
|
+
コツとしては`tails . lines`とすることで1行ずつずれたリストを用意しておき、このリストの先頭が`["", ""]`となるところまで、つまり改行のみの行が2回連続で続くところまでを`takeWhile`で取得しています。
|
3
なんか勘違いしてたので修正
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
ls <- lines <$> getContents
|
14
14
|
|
15
|
-
let ls' = map (map (read :: String -> Integer) . words . fst) $ takeWhile (/= ("
|
15
|
+
let ls' = map (map (read :: String -> Integer) . words . fst) $ takeWhile (/= ("", "")) $ zip ls $ tail ls
|
16
16
|
|
17
17
|
print ls'
|
18
18
|
|
@@ -20,8 +20,4 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
-
コツとしては`zip ls $ tail ls`とすることで2行ずつに並んだリストを用意しておき、この要素が`("
|
23
|
+
コツとしては`zip ls $ tail ls`とすることで2行ずつに並んだリストを用意しておき、この要素が`("", "")`となるところまで、つまり改行のみの行が2回連続で続くところまでを`takeWhile`で取得しています。
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
また、`getContents`を使うと、入力が終了したら`Ctrl-D`を押さないと終了しないので注意してください。
|
2
s/getContent/getContents/
test
CHANGED
@@ -24,4 +24,4 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
-
また、`getContent`を使うと、入力が終了したら`Ctrl-D`を押さないと終了しないので注意してください。
|
27
|
+
また、`getContents`を使うと、入力が終了したら`Ctrl-D`を押さないと終了しないので注意してください。
|
1
色々と加筆
test
CHANGED
@@ -12,8 +12,16 @@
|
|
12
12
|
|
13
13
|
ls <- lines <$> getContents
|
14
14
|
|
15
|
-
let
|
15
|
+
let ls' = map (map (read :: String -> Integer) . words . fst) $ takeWhile (/= ("\n", "\n")) $ zip ls $ tail ls
|
16
16
|
|
17
|
-
print
|
17
|
+
print ls'
|
18
18
|
|
19
19
|
```
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
コツとしては`zip ls $ tail ls`とすることで2行ずつに並んだリストを用意しておき、この要素が`("\n", "\n")`となるところまで、つまり改行が2行連続で続くところまでを`takeWhile`で取得しています。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
また、`getContent`を使うと、入力が終了したら`Ctrl-D`を押さないと終了しないので注意してください。
|