주간 챌린지 100
2901 단어 perlweeklychallengeperl
작업 #1 › 즐거운 시간
작업
시간(12시간/24시간)이 주어집니다.
주어진 시간을 12시간 형식에서 24시간 형식으로 또는 그 반대로 변환하는 스크립트를 작성하십시오.
이상적으로 우리는 한 줄짜리를 기대합니다.
내 솔루션
하나의 라이너부터 시작하겠습니다.
($h,$m,$a)=($ARGV[0]=~/^(\d+):(\d+)\s*([ap]m)?$/);printf $a?("%02d:%02d",($h%12+($a eq"pm"?12:0)),$m):("%02d:%02d %s",($h%12)||12,$m,$h>=12?"pm":"am")
예, 작동합니다. 그러나 실제로 내가 하고 있는 일을 아주 자세하게 설명하지는 않습니다. 따라서 실제 제출하는 솔루션은 위의 내용을 더 자세히 설명합니다.
이제 나는 그들이 수천 년 전에 컴퓨터가 꿈도 꾸지 못했다는 것을 알았을 때 확신합니다. 이것은 불행히도 디지털 시대에 시간을 다루기 어렵게 만듭니다. 구체적으로 12:00pm은 11:59am 이후 1분입니다. 그리고 Internet time 정말 고맙게도 이륙하지 않았습니다.
이 작업을 위해 문자열을 읽고 $hour
, $minute
및 $apm
(그 부분은 실제로 무엇이라고 합니까?)로 분할합니다. 그런 다음 $hour가 유효한지 확인합니다(am/pm이 지정된 경우 1-12, 지정되지 않은 경우 0-23).
그런 다음 변환된 시간을 표시하기만 하면 됩니다. 12시간에서 24시간으로 변경하는 경우 새 시간은 $hour%12
이고 표시기가 'pm'이면 12를 추가합니다. 다른 방향으로 가면 $apm
를 'pm' if $hour >= 12
로 설정합니다. 그런 다음 $hour%12
를 사용하고 새로운 시간이 0이면 12를 사용합니다. 모든 경우에 분 값은 변경되지 않은 상태로 유지됩니다.
내가 가진 한 가지 문제는 ./ch-1.pl 12:40 pm
내가 원하는 결과를 제공하지 않았다는 것입니다. @ARGV
는 실제로 12:40
와 pm
의 두 값이기 때문입니다. ./ch-1.pl "12:40 pm"
를 사용하면 이 문제가 해결됩니다(적어도 bash에서는).
예
» ./ch-1.pl "5:15 pm"
17:15
» ./ch-1.pl "19:15"
07:15 pm
작업 #2 › 삼각형 합
작업
삼각형 배열이 주어집니다.
위에서 아래로 최소 경로 합을 찾는 스크립트를 작성하십시오.
내 솔루션
몇 가지 기본 사항부터 시작하겠습니다.
($h,$m,$a)=($ARGV[0]=~/^(\d+):(\d+)\s*([ap]m)?$/);printf $a?("%02d:%02d",($h%12+($a eq"pm"?12:0)),$m):("%02d:%02d %s",($h%12)||12,$m,$h>=12?"pm":"am")
» ./ch-1.pl "5:15 pm"
17:15
» ./ch-1.pl "19:15"
07:15 pm
작업
삼각형 배열이 주어집니다.
위에서 아래로 최소 경로 합을 찾는 스크립트를 작성하십시오.
내 솔루션
몇 가지 기본 사항부터 시작하겠습니다.
[1], [1,2], [8,9,1]
를 예로 들어 보겠습니다. 이 경우 두 번째 행에서 1을 선택해도 합이 가장 작지 않습니다. 그러므로 우리는 모든 길을 걸어야 합니다. 작업은 세 부분으로 나눌 수 있습니다.
$i
가 있습니다. 각 반복에 대해 이진 산술을 사용하여 왼쪽으로 걸을지 오른쪽으로 걸을지 결정합니다. 예
» ./ch-2.pl "[ [1], [2,4], [6,4,9], [5,1,7,2] ]"
1 + 2 + 4 + 1 = 8
» ./ch-2.pl "[ [3], [3,1], [5,2,3], [4,3,1,3] ]"
3 + 1 + 2 + 1 = 7
Reference
이 문제에 관하여(주간 챌린지 100), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/simongreennet/weekly-challenge-100-4lf6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)