Elixir에서 ABC161의 A, B, C 문제를 제기하십시오!
소개
Elixir 에서 해 보았습니다
문제
준비
Elixir 설치
$ mix new at_coder
$ cd at_coder
문제 A - ABC Swap
lib/abc_161_a.ex
defmodule Abc161A do
def main do
[x, y, z] =
IO.read(:line) |> String.trim() |> String.split(" ") |> Enum.map(&String.to_integer/1)
solve(x, y, z) |> IO.puts()
end
@doc ~S"""
https://atcoder.jp/contests/abc161/tasks/abc161_a
## Examples
iex> Abc161A.solve(1, 2, 3)
"3 1 2"
iex> Abc161A.solve(100, 100, 100)
"100 100 100"
iex> Abc161A.solve(41, 59, 31)
"31 41 59"
"""
def solve(x, y, z) do
[z, x, y] |> Enum.join(" ")
end
end
## Examples
에 쓰여진 것은 Docteststest/at_coder_test.exs
에 설정을 더해 둡시다 test/at_coder_test.exs
defmodule AtCoderTest do
use ExUnit.Case
doctest Abc161A
$ mix test
..........
Finished in 0.2 seconds
9 doctests, 1 test, 0 failures
제출의 경우 모듈 이름은
Main
이어야합니다 문제 B - Popular Vote
lib/abc_161_b.exdefmodule Abc161B 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(m)
|> IO.puts()
end
@doc ~S"""
https://atcoder.jp/contests/abc161/tasks/abc161_b
## Examples
iex> Abc161B.solve([5, 4, 2, 1], 1)
"Yes"
iex> Abc161B.solve([380, 19, 1], 2)
"No"
iex> Abc161B.solve([4, 56, 78, 901, 2, 345, 67, 890, 123, 45, 6, 789], 3)
"Yes"
"""
def solve(list, m) do
sum = Enum.sum(list)
Enum.sort(list, :desc)
|> Enum.take(m)
|> Enum.all?(fn a ->
a * 4 * m >= sum
end)
|> if(do: "Yes", else: "No")
end
end
defmodule Abc161B 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(m)
|> IO.puts()
end
@doc ~S"""
https://atcoder.jp/contests/abc161/tasks/abc161_b
## Examples
iex> Abc161B.solve([5, 4, 2, 1], 1)
"Yes"
iex> Abc161B.solve([380, 19, 1], 2)
"No"
iex> Abc161B.solve([4, 56, 78, 901, 2, 345, 67, 890, 123, 45, 6, 789], 3)
"Yes"
"""
def solve(list, m) do
sum = Enum.sum(list)
Enum.sort(list, :desc)
|> Enum.take(m)
|> Enum.all?(fn a ->
a * 4 * m >= sum
end)
|> if(do: "Yes", else: "No")
end
end
제출의 경우 모듈 이름은
Main
이어야합니다 |> if(do: "Yes", else: "No")
의 위치는 내 붐입니다.문제 C - Replacing Integer
lib/abc_161_c.ex
defmodule Abc161C do
def main do
[n, k] =
IO.read(:line) |> String.trim() |> String.split(" ") |> Enum.map(&String.to_integer/1)
solve(n, k)
|> IO.puts()
end
@doc ~S"""
https://atcoder.jp/contests/abc161/tasks/abc161_c
## Examples
iex> Abc161C.solve(7, 4)
1
iex> Abc161C.solve(2, 6)
2
iex> Abc161C.solve(1000000000000000000, 1)
0
"""
def solve(n, k) when rem(n, k) == 0, do: 0
def solve(n, k) do
[abs(n), abs(n - div(n, k) * k), abs(n - div(n, k) * k - k)]
|> Enum.min()
end
end
제출의 경우 모듈 이름은
Main
이어야합니다 Wrapping Up
=
를 넣지 않아서 WA (Wrong Answer)
Reference
이 문제에 관하여(Elixir에서 ABC161의 A, B, C 문제를 제기하십시오!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/torifukukaiou/items/8857daae1957cfff55c6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)