Enjoy Elixir #008 AtCoder 풀기

8210 단어 Elixir

소개



  • KFIE이라는 킨키 대학 산업 이공 학부의 정보계 커뮤니티가 있습니다.
  • 요즘은 매주 화요일에 LT회를 하고 있다고 합니다
  • 제가 학생이었던 것은 이미 옛날이지만 참가하게되었습니다.
  • 매주, 5분간 시간을 받고, Elixir 좋아! 말을 전하고 싶다고 생각합니다.
  • 2020/7/21(화)의 회

  • 오늘은 다음을 배웁니다.

  • AtCoder을 풀어보십시오.
  • 여러 가지 문제를 풀어 보면 여러 문법을 기억하거나 공식 문서의 확인에 저항이 없어진다고 생각합니다.

  • A journey of a thousand miles begins with a single step.
  • elixir 1.10.4-otp-23
  • erlang 23.0.1


  • 모쿠지



    Elixir
    |> 001 mix new, iex -S mix, mix format
    |> 002형
    |> 003 패턴 매칭
    |> 004 Modules and functions
    |> 005 Pipe operator and Enum module
    |> 006 HTTP GET!
    |> 007 Flow
    |> 008 AtCoder를 풀어보기

    준비


    $ mix new hello_at_coder
    $ cd hello_at_coder
    

    999 Where to go next


  • 문제문은 링크처를 확인해 주세요

  • lib/main.ex
    defmodule Main do
      def main do
        IO.gets("")
        |> String.trim()
        |> String.to_integer()
        |> solve()
        |> IO.puts()
      end
    
      @doc ~S"""
      Solve
    
      ## Examples
    
          iex> Main.solve(1900)
          100
          iex> Main.solve(3000)
          0
    
      """
      def solve(n) do
        1..10
        |> Enum.reduce_while(0, fn _, payment ->
          if payment < n, do: {:cont, payment + 1000}, else: {:halt, payment}
        end)
        |> Kernel.-(n)
      end
    end
    



    test/hello_at_coder_test.exs
    defmodule HelloAtCoderTest do
      use ExUnit.Case
      doctest HelloAtCoder
      doctest Main # add
    


  • 어리석게 n 엔 이상이되도록 천 엔 지폐를 모아 그 합계 금액에서 n 엔을 빼는 방법으로 풀었습니다.
  • Main.solve/1 의 코멘트는 A - Payment 라고 하는 테스트가 되고 있습니다
  • 해답의 키모 부분만 테스트를 만들고 그 전후에 입력과 출력을 Doctest 으로 연결하면 좋을 것입니다

  • 엔트리 포인트라고 말하면 괜찮습니까? |>


    실행


    $ mix test
    ...
    
    Finished in 0.07 seconds
    2 doctests, 1 test, 0 failures
    
    Randomized with seed 687098
    

    제출



    AtCoder
    Elixir

    Wrapping Up


  • 오늘의 포인트는 제출 #15335013 입니다

  • 을 풀 때 Main.main/0 를 준비합니다
  • 그건 그렇고, 나는 자랑스럽지 않지만이 문제를 해결하는 데는 시간이 걸리지 않았지만 C 문제 당시에는 엄청난 시간이 걸렸습니다.

  • 다음 번에, 무엇을 할까 (자료 검토중)
  • 다음 주를 기다릴 수 없는 분은, 자원이나 커뮤니티의 정보를 Doctest 에 정리하고 있으므로 다이브 해 주세요!

  • Enjoy!!!
  • 좋은 웹페이지 즐겨찾기