세 가지 수단과 큰 기반

주간 도전 157



3주간의 공백기를 마치고 돌아왔습니다!

Challenge , My solution

작업 #1 › 피타고라스 평균





정수 집합이 제공됩니다.

세 가지Pythagorean Means, 즉 주어진 정수 세트의 산술 평균, 기하 평균 및 조화 평균을 모두 계산하는 스크립트를 작성하십시오.

내 솔루션



이것은 비교적 간단한 작업입니다. Wikipedia 페이지는 필요한 수식을 제공하며 sum reducelambda 함수를 사용하여 필요한 수치를 계산할 수 있습니다. 마지막으로 round 함수를 사용하여 결과를 소수점 첫째 자리까지 인쇄합니다.

Perl 코드는 Python 버전과 비슷하지만 List::Utils에서 product() 메서드를 사용합니다. Python의 math.product는 Python 3.8 이상에서만 사용할 수 있습니다.

한 가지 주의할 점은 정수의 합이 0인 경우 조화 평균을 계산할 때 0으로 나누기 오류가 발생할 수 있습니다. 나는 이것을 포착하지 않고 오류를 사용자에게 전달합니다.




$ ./ch-1.py 1 3 5 6 9
AM = 4.8, GM = 3.8, HM = 2.8

$ ./ch-1.py 2 4 6 8 10
AM = 6.0, GM = 5.2, HM = 4.4

$ ./ch-1.py 1 2 3 4 5
AM = 3.0, GM = 2.6, HM = 2.2


작업 #2 › 브라질 숫자




$n > 3이라는 숫자가 주어집니다.

주어진 숫자가 브라질 숫자인지 알아보는 스크립트를 작성하세요. 양의 정수N는 적어도 하나의 자연수B를 가지며 여기서 1 < B < N-1는 기수N에서 B의 표현이 [the] 같은 숫자를 가집니다.

내 솔루션



이것은 흥미로운 작업이었습니다. 단순히 문자와 숫자를 사용하여 숫자를 다른 진법으로 변환할 수 없습니다. 예를 들어 1282는 640진수로 22인데, 같은 진수인 639는 어떻게 표현할까요?

이 작업에서는 숫자 자체의 자릿수가 다르더라도 동일한 자릿수를 갖는 값을 고려했습니다. 예를 들어, 925는 36진수로 (25)(25)로 표현됩니다.

이 작업의 핵심은 10진법의 숫자n를 내가 b라고 부르는 지정된 염기로 변환하는 것입니다. 함수 이름은 same_digits 입니다. 나는 nb의 계수(나머지)를 취하고 이 값을 d로 만듭니다. 그런 다음 정수 나누기를 수행하고 n % bd임을 비교하는 이 프로세스를 반복합니다. 숫자가 같지 않으면 False를, 모두 같으면 True를 반환합니다.

그런 다음 2에서 n - 2까지 루프를 만들고 각 염기에 대해 same_digits 함수를 호출하기만 하면 됩니다. 일치하는 항목이 있으면 1 (및 기본)을 인쇄하고 그렇지 않으면 0를 인쇄합니다.

Perl 코드는 Python 코드의 음역입니다.




$ ./ch-2.py 6
0

$ ./ch-2.py 7
1 (base 2)

$ ./ch-2.py 8
1 (base 3)

좋은 웹페이지 즐겨찾기