torus711 のアレ

主に競技プログラミングの問題について書きます

Codeforces #173, A : Bit++

概要

一つの変数 X とそれに対するインクリメント・デクリメントが可能な特殊な言語がある。
この言語のステートメントが n 行与えられるので、最終的な X の値を出力せよ。

解法

文字 'X' を取り除くと、ステートメントは "++" か "--" のいずれかになります。
"++" の数から "--" の数を引いたものが答えです。

コード

import Control.Applicative
import Control.Monad
import Data.List

main = do
	getLine
	statements <- lines . filter ( /= 'X' ) <$> getContents
	let
		plus = length $ filter ( == "++" ) $ statements
		minus = length $ filter ( == "--" ) $ statements
	print $ plus - minus