초보자가 편성한 프로그램 설계
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님께 정말 감사할 뿐입니다.
하지만 이런 부끄러운 말을 지적하지 않도록 노력하겠습니다.
Reference
이 문제에 관하여(초보자가 편성한 프로그램 설계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Ikuy_h/items/b15f4aeff1a3813f35f9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(초보자가 편성한 프로그램 설계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Ikuy_h/items/b15f4aeff1a3813f35f9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)