초보자가 편성한 프로그램 설계

6994 단어 permutation정렬Ruby

개시하다


이번에는 순서대로 하는 거예요.
트위터에 문제가 생겨서 해답을 시도해봤어요
Rails 관계가 없어도 아래에 쓴 것은 이미 입버릇이다
또한 이 기술은 Rails에서 Mac의 개발을 전제로 합니다.
또한, 아직 어린 새이기 때문에, 완비되지 않은 곳이 있으면 지적해 주십시오
*예에 의하면 문제의 해석이 잘못되어 전체적으로 수정하였다.
처음 본 손님 50분 정도 죄송합니다.

카탈로그

  • 이른바 배열
  • 문제 해결 시도
  • 이른바 배열


    어떤 n개 중 k개를 선택하여 순서대로 배열하는 것을 가리킨다
    "조합"과 다릅니다. "조합"과 순서는 상관없습니다.
    실제로 배열을 한번 보도록 하겠습니다.
    여기 1, 2, 3 포커가 있어요.
    이 포커는 얼마나 진열되어 있느냐
    하면, 만약, 만약...
    그러면
    # 1,2,3
    # 1,3,2
    # 2,1,3
    # 2,3,1
    # 3,1,2
    # 3,2,1
    
    이 여섯 가지를 열거할 수 있다
    위에서 말한 바와 같이 순서가 다르면 그것들을 각각 다른 것으로 간주하는 것이 바로 배열의 정의이다

    문제를 해결해 보다


    트위터에서 다음과 같은 문제가 발생했다

    ● 점수 3개를 더하면 1이라는 공식
    질문:
    상기 공식의 □(사각형)에 1~9의 문자를 하나하나 기입하여 방정식을 완성하십시오
    모르면 안 돼요.
    먼저 각 사각형을 구분한다

    이렇게 숫자를 각각 a~i에 응용한다
    일단 1~9의 배열을 만들어 보도록 하겠습니다.
    ★bc,ef,hi는 두 자릿수 정수
    제가 풀다가 여기를 잘못 풀었어요.
    array =[]
    1.upto(9) do |i|
      array << i
    end
    
    이것 괜찮아요?
    array = [1,2,3,4,5,6,7,8,9]
    
    이게 좋은지 안 좋은지 결과는 똑같아요.
    아래의 말은 지루하지 않아도 되지만 응용하기가 매우 어렵다(점수가 배가되면 상응하는 수정이 필요하다)
    그리고 아까 a~i에 숫자를 넣으세요.
    a~i에 숫자를 넣는 순서가 중요해요.
    그래서 여기에 배열을 사용합니다
    array =[]
    1.upto(9) do |i|
      array << i
    end
    
    pat = array.permutation.to_a
    
    퍼뮤테이션 방법이 나왔어요.
    이거 줄 설 수 있어.
    배치공식 참조
    이로써 모든 팀은 패치의 대열에 들어갔다
    말씀드리는 김에 362880개(9층승)가 있습니다.
    그 중에서 공식을 간단히 응용하여 해답을 하자
    array =[]
    1.upto(9) do |i|
      array << i
    end
    
    pat = array.permutation.to_a
    ans = []
    pat.each do |i|
    # 間違っていましたので訂正いたします コメント欄参照
      x = (i[0].quo(i[1]*10 + i[2])) + (i[3].quo(i[4]*10 + i[5])) + (i[6].quo(i[7]*10 + i[8]))
      if x == 1
        ans << i
      end
    end
    
    p ans
    # => [[5, 3, 4, 7, 6, 8, 9, 1, 2], [5, 3, 4, 9, 1, 2, 7, 6, 8], [7, 6, 8, 5, 3, 4, 9, 1, 2], 
    #     [7, 6, 8, 9, 1, 2, 5, 3, 4], [9, 1, 2, 5, 3, 4, 7, 6, 8], [9, 1, 2, 7, 6, 8, 5, 3, 4]]
    
    length를 넣지 않으면 1272584가지 결과가 반환됩니다. 주의하세요.
    일치하는 배열은 127854종이다
    확률이 30%도 안 되니까 숫자를 적당히 입력하는 것도 맞을 거야
    어디.. 여섯 가지밖에 없어요.
    그리고 더하기 점수 3개가'배열'이면 풀이가 6개,'조합'이면 풀이가 1개.
    (1+2+3=6, 2+3+1=6=6은 둘 다 6이므로 조합상 같은 생각)

    최후


    분명히 질문자인데 문제의 해석을 잘못해서 죄송합니다
    매번 보시는 @scivola님께 정말 감사할 뿐입니다.
    하지만 이런 부끄러운 말을 지적하지 않도록 노력하겠습니다.

    좋은 웹페이지 즐겨찾기