Ruby의 Array # combination (n) 상당을 Elixir로 작성해보십시오.

14327 단어 Elixir

소개



  • 루비Array#combination 상당한 것을 Elixir로 해보고 싶습니다.

  • 자동차 경주 , 경마, 경정, 경륜의 도박식으로 말하는 곳의 2연복이나 3연복입니다

  • permutation에 대해서는 앞의 된장 Ruby의 Array # permutation (n) 상당을 Elixir로 작성해보십시오.을 참조하십시오
  • elixir: 1.10.4-otp-23 사용 중

  • Elixir built-in combinations method?
  • 이 글을 많이 참고로했습니다


  • 소스 코드


    defmodule Awesome do
      def combination(_, 0), do: [[]]
      def combination([], _), do: []
    
      def combination([x | xs], n) do
        for(y <- combination(xs, n - 1), do: [x | y]) ++ combination(xs, n)
      end
    end
    
    iex> IEx.configure(inspect: [limit: :infinity])
    :ok
    
    iex> Awesome.combination([1, 2, 3, 4, 5, 6, 7, 8], 3)
    [
      [1, 2, 3],
      [1, 2, 4],
      [1, 2, 5],
      [1, 2, 6],
      [1, 2, 7],
      [1, 2, 8],
      [1, 3, 4],
      [1, 3, 5],
      [1, 3, 6],
      [1, 3, 7],
      [1, 3, 8],
      [1, 4, 5],
      [1, 4, 6],
      [1, 4, 7],
      [1, 4, 8],
      [1, 5, 6],
      [1, 5, 7],
      [1, 5, 8],
      [1, 6, 7],
      [1, 6, 8],
      [1, 7, 8],
      [2, 3, 4],
      [2, 3, 5],
      [2, 3, 6],
      [2, 3, 7],
      [2, 3, 8],
      [2, 4, 5],
      [2, 4, 6],
      [2, 4, 7],
      [2, 4, 8], 
      [2, 5, 6],
      [2, 5, 7],
      [2, 5, 8],
      [2, 6, 7],
      [2, 6, 8],
      [2, 7, 8],
      [3, 4, 5],
      [3, 4, 6],
      [3, 4, 7],
      [3, 4, 8],
      [3, 5, 6],
      [3, 5, 7],
      [3, 5, 8],
      [3, 6, 7],
      [3, 6, 8],
      [3, 7, 8],
      [4, 5, 6],
      [4, 5, 7],
      [4, 5, 8],
      [4, 6, 7],
      [4, 6, 8],
      [4, 7, 8],
      [5, 6, 7],
      [5, 6, 8],
      [5, 7, 8],
      [6, 7, 8]
    ]
    
    iex> Awesome.combination([1, 2, 3, 4, 5, 6, 7, 8], 3) |> Enum.count
    56
    

    그래, 좋아 보인다.

    좋은 웹페이지 즐겨찾기