주간 챌린지 079
README.md
파일을 작성하는 것보다 블로그를 제대로 해야 할 때라고 판단했습니다. 나는 내 자신의 블로그를 호스팅하고 싶지 않았기 때문에 dev.to를 언급한 Dave의 Blogging for Perl 게시물을 읽은 후 이것을 사용하고 있습니다.작업에.
작업 #1 › 세트 비트 카운트
Perl의 TIMTOWTDI 철학에 따라 두 가지 솔루션을 제시했습니다.
first solution은 숫자를 살펴보고 각 값을 이진 값으로 변환하고(sprintf '%b'
사용) 문자열에서 1의 개수(tr///
사용)를 계산합니다.
second solution에는 1에서 시작하고 각 실행을 두 배로 늘리는 이진 카운터가 있습니다. 그런 다음 숫자를 살펴보고 value & binary
이 참이면 카운터에 추가합니다.
첫 번째 숫자가 훨씬 더 빠릅니다. i7 NUC에서 천만으로 계산할 때 첫 번째 솔루션은 19초가 걸렸고 두 번째 솔루션은 79초가 걸렸습니다.
왜 1000000007의 계수를 계산해야 하는지 잘 모르겠지만 어쨌든 그렇게 했습니다.
예
» ./ch1a.pl 3
4 % 1000000007 = 4
» ./ch1a.pl 4
5 % 1000000007 = 5
» time ./ch1a.pl 100000000
1314447116 % 1000000007 = 314447109
real 0m19.881s
user 0m19.878s
sys 0m0.000s
» time ./ch1b.pl 100000000
1314447116 % 1000000007 = 314447109
real 1m19.270s
user 1m19.251s
sys 0m0.005s
작업 #2 › 갇힌 빗물
Solution
이것은 Challenge 075의 두 번째 작업과 매우 유사합니다. 사실 해당 작업에서 인쇄 히스토그램 코드를 복사하고 추가하여 ·
s로 채우기를 표시합니다.
논리도 이전 작업과 유사합니다. 이 작업을 위해 첫 번째와 마지막 열을 제외한 각 열을 통해 작업했습니다. 각 열에 대해 다음 방법을 사용하여 저장할 수 있는 물의 단위 수를 계산했습니다.
» ./ch1a.pl 3
4 % 1000000007 = 4
» ./ch1a.pl 4
5 % 1000000007 = 5
» time ./ch1a.pl 100000000
1314447116 % 1000000007 = 314447109
real 0m19.881s
user 0m19.878s
sys 0m0.000s
» time ./ch1b.pl 100000000
1314447116 % 1000000007 = 314447109
real 1m19.270s
user 1m19.251s
sys 0m0.005s
Solution
이것은 Challenge 075의 두 번째 작업과 매우 유사합니다. 사실 해당 작업에서 인쇄 히스토그램 코드를 복사하고 추가하여
·
s로 채우기를 표시합니다.논리도 이전 작업과 유사합니다. 이 작업을 위해 첫 번째와 마지막 열을 제외한 각 열을 통해 작업했습니다. 각 열에 대해 다음 방법을 사용하여 저장할 수 있는 물의 단위 수를 계산했습니다.
예
» ./ch2.pl 2 1 4 1 2 5
5 #
4 # · · #
3 # · · #
2 # · # · # #
1 # # # # # #
- - - - - - -
2 1 4 1 2 5
Result is 6
» ./ch2.pl 3 1 3 1 1 5
5 #
4 #
3 # · # · · #
2 # · # · · #
1 # # # # # #
- - - - - - -
3 1 3 1 1 5
Result is 6
Reference
이 문제에 관하여(주간 챌린지 079), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/simongreennet/the-weekly-challenge-079-1jel텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)