Professional Documents
Culture Documents
Week1 HackerRank
Week1 HackerRank
class FastReader() {
val br: BufferedReader = new BufferedReader(new InputStreamReader(System.in))
var st: StringTokenizer = _
trait Expression
object Expression {
val modulo = 1000000007
}
object Solution {
def main(args: Array[String]): Unit = {
val sc = new FastReader
val s = sc.nextLine
println(solve(s))
}
@scala.annotation.tailrec
def parseNumber(index: Int, number: Int = 0): (Int, Int) = if (index <
s.length) {
val c = s(index)
if (c.isDigit) parseNumber(index + 1, 10 * number + c - '0') else (index,
number)
} else (index, number)
@scala.annotation.tailrec
def eval(expressions: List[Expression]): Int = expressions match {
case Number(b) :: Nil => b
case Number(b) :: (op: Binary) :: Number(a) :: exs => eval(Number(op.eval(a,
b)) :: exs)
case _ => throw new Exception("Wrong expression")
}
@scala.annotation.tailrec
def simplify(expressions: List[Expression]): List[Expression] = expressions
match {
case Number(b) :: (op: Unary) :: exs => simplify(Number(op.eval(b)) :: exs)
case (nextOp: Additive) :: Number(b) :: (op: Multiplicative) :: Number(a) ::
exs =>
simplify(nextOp :: Number(op.eval(a, b)) :: exs)
case exs@_ => exs
}
@scala.annotation.tailrec
def inner(state: State): State = {
def withExpression(expression: Expression): State =
State(state.index + 1, expression :: state.expressions,
state.subexpressions)
inner(nextState.copy(expressions = nextExpressions))
} else state
}
eval(inner(State()).expressions)
}
}
#HASKELL - Expressions
import Control.Applicative
import qualified Data.Map as M
import Data.List
main :: IO ()
main = do
n <- readLn :: IO Int
ns <- map read . words <$> getLine
let result = foldl' f (M.fromList [(head ns, "")]) (tail ns)
f !m n = M.fromList $
concatMap (\(val, ops) ->
[ ((val+n)`mod`101, '+':ops)
, ((val-n)`mod`101, '-':ops)
, ((val*n)`mod`101, '*':ops)
]) $
M.toList m
ans = reverse $ result M.! 0
putStrLn $ unwords $ concat $ zipWith (\a b -> [a, b]) (map show ns) (map (\op
-> [op]) $ ans ++ " ")
main :: IO ()
main = do
n_temp <- getLine
let n = read n_temp :: Int
forM_ [1..n] $ \a0 -> do
x_temp <- getLine
let x = read x_temp :: Double
print (eee 9 x)
#Lambda Calculus
cube = lambda x: x ** 3
def fibonacci(n):
List = [0, 1]
for i in range(2, n):
List.append(List[i-1] + List[i-2])
return(List[0:n])