aabcccddef에서 2 글자 단어를 몇 개나 얻을 수 있습니까?


14

(aa는 많은 사람 중 하나 일 것이고, bb는 그렇지 않을 것입니다)

나는 그것이 10이라고 생각했다! / 8! 그러나 분명히 나는 ​​뭔가 잘못하고 있습니다. 내가 혼란스러워서 누구든지 나를 도울 수 있습니까?


6
당신이 시도한 것을 보여 주셔서 감사합니다. 10이라고 생각한 이유를 설명해 주시겠습니까? / 8! 이것이 당신이 가진 개념적 오해를 바로 잡는 데 도움이 될 수 있습니까? 또한 이것은 코스 나 교과서의 질문입니까? 그렇다면 [self-study]태그 를 추가 하고 위키를 읽으십시오 .
Silverfish

(이 질문의 저자는 원래 "자기 학습"태그를 추가하지 않았지만이 질문은 자기 학습 지침에 해당한다고 생각합니다. 예를 들어 그들이 시도한 것을 보여주기 위해주의를 기울였으며 질문 자체가 분명해 보입니다. RoryT의 답변은 아마도 10! / 8!에 대한 생각의 결함이 무엇 이었는지를 나타냅니다. 물론 원래 포스터가 이것을 확인할 수 있다면 좋을 것입니다.)
Silverfish

1
일부는 이것을 "불분명 한"것으로 폐쇄하기로 투표하고 있습니다. 나는 여기에 분명하지 않은 것을 볼 수 없으며 주어진 대답은 그 질문이 이해되고 명확하다는 것을 나타냅니다.
kjetil b halvorsen

2
2 글자로 된 단어를 만들 때 사용 가능한 문자 목록에 'c'가 3 번 나타나는 이유는 무엇입니까?

3
@statman 나는 또한 이것을 알아 차 렸지만 (아래 주석 참조) 회고하면 질문을 포함시키는 질문자의 독창성을 존경합니다. 잔인한 추가는 아니지만 추가로 생각해야합니다.
Silverfish

답변:


22

당신은 6 개의 다른 문자가 있습니다 : a, b, c, d, e, f 중에서 두 개의 다른 문자로 6 x 5 = 30 단어를 생성 할 수 있습니다. 또한 같은 글자로 두 단어 aa, cc, dd를 생성 할 수 있습니다. 따라서 총 단어 수는 30 + 3 = 33입니다.


17

Zahava의 방법에 대한 대안 : 두 글자 af의 방법이 있습니다. 그러나, 단어 수 만드는 것은 불가능 2 B, E 또는 F 문자이므로 "BB", "EE"및 "FF"가 아니다이다 (36) - (3) =는62=36 .363=33

당신이 문제에 접근하려고 시도한 방식은 10 개의 별개의 문자가 없다는 사실을 무시하는 것 같습니다. 10 개의 고유 한 글자가 있다면 답이 맞을 것입니다.


4
(+1) 실제로 열 개의 글자가 있다는 사실은 여기에 약간의 청어가 있는데, 그 중 세 개는 "C"이기 때문입니다! 두 글자로 된 단어 수는 "C"가 50 번 나타나는 경우 문제가되지 않습니다. 같은 글자가 두 번 이상 나타나면 중복됩니다.
Silverfish

7

당신이 그것을 "영리한"방식으로 추론 할 수 없다면, 종종 무차별적인 힘을 시도해 볼 가치가 있습니다. 알파벳순으로 정렬 할 수있는 모든 단어 목록을 작성한다고 상상해보십시오.

"A"로 시작할 수있는 사람은 몇 명입니까? "A"뒤에 A, B, C, D, E 또는 F가 올 수 있으므로 6 가지 방법이 있습니다.

"B"로 시작할 수있는 사람은 몇 명입니까? 두 번째 "B"가 없기 때문에 A, C, D, E 또는 F가 뒤따를 수 있습니다.

"C"로 시작할 수있는 사람은 몇 명입니까? "C"가 목록에 3 번 나타나므로 "A"와 같이 6 가지 방법이있는 것처럼 그 뒤에 5 개 문자가 올 수 있습니다. "C"가 "A"보다 여러 번 나타나기 때문에 "추가"방법은 없습니다. 두 번째 외형은 중복되지 않습니다.

이제 목록에 한 번만 나타나는 각 문자가 다섯 단어의 시작 부분에 나타날 수 있고 두 번 이상 나타나는 문자가 여섯 단어의 시작 부분에 나타날 수 있음이 분명합니다. 한 번만 나타나는 문자는 "B", "E"및 "F"이며 각각 5 개 단어의 시작 부분에있을 수 있으므로 5 + 5 + 5 = 15 개 단어를 만듭니다. 두 번 이상 나타나는 문자는 "A", "C"및 "D"이며 각각 6 단어의 시작 부분에있을 수 있으므로 6 + 6 + 6 = 18 단어가됩니다. 총 15 + 18 = 33 단어가 있습니다.

이 방법은 다른 방법보다 훨씬 오래 걸리지 만이 체계적인 방식으로 답을 생각하면보다 빠른 방법 중 하나를 "발견"했을 수 있습니다.

이것이 확률 질문으로 표현 된 경우, 첫 번째 성향은 트리 다이어그램 을 그리는 것일 수 있습니다 . 첫 번째 글자는 6 개의 지점으로 시작했지만 두 번째 글자는 "A", "C"및 "D"에서 나오는 6 개의 지점이 있었을 것입니다. "B", "E"및 "F"에서 나오는 지점은 5 개뿐입니다 (자체를 따라갈 수 없기 때문). 이 분기 패턴은 실제로 내 대답과 동일하지만 나무에서 더 시각적으로 생각하는 것이 좋습니다.


1
매우 사실입니다. 무차별 대입 (포함 포함 제외 원칙과 함께 사용 가능)을 사용하여 답변에 대한 상한 또는 하한의 야구장 추정치를 구하십시오.
smci

3

수학적 접근

수학적 관점에서, 솔루션은 일단 대각선을 제거한 후에 목록과 그 자체 사이의 데카르트 곱의 요소 집합입니다. 이 알고리즘을 사용하여이 문제를 해결할 수 있습니다.

  • 목록과 자체 사이의 데카르트 곱 계산
  • 대각선 제거
  • 배열에서 세트를 생성

집합은 고유 한 개체의 잘 정의 된 모음이므로 개체가 반복되지 않습니다.

파이썬으로 번역

from itertools import product
import numpy as np

letters = list("aabcccddef")
cartesianproduct = np.array(["".join(i) for i in product(letters,letters)]).reshape(10,10)


cartesianproduct

Out :
array([['aa', 'aa', 'ab', 'ac', 'ac', 'ac', 'ad', 'ad', 'ae', 'af'],
       ['aa', 'aa', 'ab', 'ac', 'ac', 'ac', 'ad', 'ad', 'ae', 'af'],
       ['ba', 'ba', 'bb', 'bc', 'bc', 'bc', 'bd', 'bd', 'be', 'bf'],
       ['ca', 'ca', 'cb', 'cc', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
       ['ca', 'ca', 'cb', 'cc', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
       ['ca', 'ca', 'cb', 'cc', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
       ['da', 'da', 'db', 'dc', 'dc', 'dc', 'dd', 'dd', 'de', 'df'],
       ['da', 'da', 'db', 'dc', 'dc', 'dc', 'dd', 'dd', 'de', 'df'],
       ['ea', 'ea', 'eb', 'ec', 'ec', 'ec', 'ed', 'ed', 'ee', 'ef'],
       ['fa', 'fa', 'fb', 'fc', 'fc', 'fc', 'fd', 'fd', 'fe', 'ff']], 
      dtype='|S2')

우리는 대각선을 제거

diagremv = np.array([ np.delete(arr,index) for index,arr in enumerate(cartesianproduct)]) 

diagremv

array([['aa', 'ab', 'ac', 'ac', 'ac', 'ad', 'ad', 'ae', 'af'],
       ['aa', 'ab', 'ac', 'ac', 'ac', 'ad', 'ad', 'ae', 'af'],
       ['ba', 'ba', 'bc', 'bc', 'bc', 'bd', 'bd', 'be', 'bf'],
       ['ca', 'ca', 'cb', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
       ['ca', 'ca', 'cb', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
       ['ca', 'ca', 'cb', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
       ['da', 'da', 'db', 'dc', 'dc', 'dc', 'dd', 'de', 'df'],
       ['da', 'da', 'db', 'dc', 'dc', 'dc', 'dd', 'de', 'df'],
       ['ea', 'ea', 'eb', 'ec', 'ec', 'ec', 'ed', 'ed', 'ef'],
       ['fa', 'fa', 'fb', 'fc', 'fc', 'fc', 'fd', 'fd', 'fe']], 
      dtype='|S2')

요소 집합의 길이를 계산합니다.

len(set(list(diagremv.flatten())))

Out: 33

1
나는 당신이 무차별 대입법을 공식화하고 자동화 한 것을 좋아합니다
Tim Seguine

2

나는 어떤 사람들이 그 질문이 불분명하다고 생각하는 이유는 그것이 "2 글자 단어"라는 용어를 사용하기 때문이다. 모두가 솔루션에 접근하는 방식을 고려할 때 모두 "문자 쌍"과 같은 의미로 "2 자 단어"를 해석합니다. 열렬한 스크래블 플레이어 인 저는 즉시 "이 편지에서 합법적 인 2 글자 단어를 몇 개나 만들 수 있습니까?" 그리고 대답은 - 12! 적어도 공식 Scrabble Players Dictionary (OSPD5) 최신판에 따르면. 단어는 aa, ab, ad, ae, ba, be, da, de, ed, ef, fa 및 fe입니다. (이 단어들에 대해 들어 본 적이 없다는 사실이 그 유효성을 부정하지는 않는다는 점을 명심하십시오!); o)

내 "2 감각".


1

무차별 대입없이 계산하는 또 다른 방법 :

첫 번째 문자가 a, c 또는 d 인 경우 두 번째 문자에 대해 6 개의 다른 선택 항목이 있습니다.

그러나 첫 번째 문자가 b, e 또는 f 인 경우 두 번째 문자에 대해 5 개의 뚜렷한 나머지 선택 사항이 있습니다.

36+35=33


0

질문하는 방식에 문제가 있습니다. 실제로 "aabcccddef"행에서 2 글자 단어를 사용할 수있는 작업은 무엇입니까? 후자를 교체 할 수 있습니까? 아니면 불필요한 것을 건너 뛸 수 있습니까? 이 조건에 따라 두 가지 가능한 답변을 찾았습니다.

1) 우리는 이전에 언급 한 것처럼 어떤 식 으로든 답을 33으로 바꿀 수 있습니다. 30 쌍의 다른 글자 (6 * 5)와 3 쌍의 비슷한 글자.

2) 글자 위치를 바꿀 수없고 교차 할 수만 있다면 훨씬 적은 답을 얻을 수 있습니다. 처음부터 끝까지 세어 보자. "a"로 시작하면 두 번째로 6 글자가 있으며 "b"로 시작하면 4입니다. "c"에는 4, "d"-3 및 "e"-1도 있습니다. 총 18 자입니다.


-1

질문에 대한 나의 대답 : aabcccddef에서 몇 자로 된 2 글자 단어를 얻을 수 있습니까?

  1. aa; 2. ab; 3. 광고; 4. ae; 5. 광고; 6. 바; 7 .; 8. 드; 9. fa; 10. fe

* // 요점은 "단어 조합"이 아니라 "단어"라는 질문입니다. 단어를 사용하여 단어를 두 번 이상 사용하려면 문자가 두 번 나타나야합니다. 예를 들어 문자 'a'중 두 개와 문자 'd'중 두 개가 있으므로 'ad'를 단어로 두 번 쓸 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.