Elixir에서 ABC163의 A, B, C 문제를 제어하십시오!
소개
Elixir 에서 해 보았습니다
문제
준비
Elixir 설치
$ mix new at_coder
$ cd at_coder
문제 A - Circle Pond
lib/abc_163_a.ex
defmodule Abc163A do
def main do
IO.read(:line) |> String.trim() |> String.to_integer() |> solve() |> IO.puts()
end
@doc ~S"""
https://atcoder.jp/contests/abc163/tasks/abc163_c
## Examples
iex> Abc163A.solve(1)
6.283185307179586
iex> Abc163A.solve(73)
458.67252742410977361942
"""
def solve(r) do
2 * :math.pi() * r
end
end
## Examples
에 쓰여진 것은 Docteststest/at_coder_test.exs
에 설정을 더해 둡시다 test/at_coder_test.exs
defmodule AtCoderTest do
use ExUnit.Case
doctest Abc163A
$ mix test
..........
Finished in 0.2 seconds
9 doctests, 1 test, 0 failures
제출의 경우 모듈 이름은
Main
이어야합니다 문제 B - Homework
lib/abc_163_b.exdefmodule Abc163B do
def main do
[n, _m] =
IO.read(:line) |> String.trim() |> String.split(" ") |> Enum.map(&String.to_integer/1)
IO.read(:line)
|> String.trim()
|> String.split(" ")
|> Enum.map(&String.to_integer/1)
|> solve(n)
|> IO.puts()
end
@doc ~S"""
https://atcoder.jp/contests/abc163/tasks/abc163_b
## Examples
iex> Abc163B.solve([5, 6], 41)
30
iex> Abc163B.solve([5, 8], 10)
-1
iex> Abc163B.solve([5, 6], 11)
0
"""
def solve(list, n) do
do_solve(Enum.sum(list), n)
end
defp do_solve(work_sum, n) when n >= work_sum, do: n - work_sum
defp do_solve(_, _), do: -1
end
defmodule Abc163B do
def main do
[n, _m] =
IO.read(:line) |> String.trim() |> String.split(" ") |> Enum.map(&String.to_integer/1)
IO.read(:line)
|> String.trim()
|> String.split(" ")
|> Enum.map(&String.to_integer/1)
|> solve(n)
|> IO.puts()
end
@doc ~S"""
https://atcoder.jp/contests/abc163/tasks/abc163_b
## Examples
iex> Abc163B.solve([5, 6], 41)
30
iex> Abc163B.solve([5, 8], 10)
-1
iex> Abc163B.solve([5, 6], 11)
0
"""
def solve(list, n) do
do_solve(Enum.sum(list), n)
end
defp do_solve(work_sum, n) when n >= work_sum, do: n - work_sum
defp do_solve(_, _), do: -1
end
제출의 경우 모듈 이름은
Main
이어야합니다 문제 C - management
lib/abc_163_c.ex
defmodule Abc163C do
def main do
n = IO.read(:line) |> String.trim() |> String.to_integer()
IO.read(:line)
|> String.trim()
|> String.split(" ")
|> Enum.map(&String.to_integer/1)
|> solve()
|> (fn map -> 1..n |> Enum.map(&Map.get(map, &1, 0)) end).()
|> Enum.join("\n")
|> IO.puts()
end
@doc ~S"""
https://atcoder.jp/contests/abc163/tasks/abc163_c
## Examples
iex> Abc163C.solve([1, 1, 2, 2])
%{1 => 2, 2 => 2}
"""
def solve(list), do: list |> Enum.frequencies()
end
Enum.frequencies/1
@QWYNG 님의 풀릭 감사합니다
|> solve()
|> (fn map -> 1..n |> Enum.map(&Map.get(map, &1, 0)) end).()
|> Enum.each(&IO.puts/1)
시간 초과 오류의 경우 모듈 이름은
Main
이어야합니다 Wrapping Up
Reference
이 문제에 관하여(Elixir에서 ABC163의 A, B, C 문제를 제어하십시오!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/torifukukaiou/items/00b5b0a8b8e81ad0ae46텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)