서수 스파크라인
2983 단어 perlpythontheweeklychallenge
주간 도전 179
Challenge , My solution
작업 1: 서수 철자법
일
양수
$n
가 주어집니다. 서수를 철자하는 스크립트를 작성하십시오.내 솔루션
이것은 내가 생각했던 것보다 조금 더 복잡한 것으로 판명되었습니다. 특히 일부 극단적인 경우에 그렇습니다. 물론 이미 이 작업을 수행하는 Python 및 Perl 모듈이 있지만 이러한 문제를 완료하는 정신은 아닙니다.
네 개의 목록(Perl의 배열)을 정의하는 것으로 시작합니다.
numbers
에는 처음 19개 숫자에 대한 단어가 있으므로 1, 2, 3 등입니다. tens
에는 20, 30 등에 대한 단어가 있습니다. ordinal
목록에는 다음과 같이 처음 19개 숫자에 대한 서수 단어가 있습니다. 첫번째 두번째 세번째. 마지막으로 thousands
목록에는 우리가 천, 백만, 십억에 사용하는 단어가 있습니다. 1012 이상을 처리하지 않습니다.다음으로 숫자를 오른쪽에서 3개의 블록으로 나눕니다. 따라서 12345는
[345, 12]
가 됩니다.그런 다음 각 블록에 대한 단어를 인쇄할 시간입니다.
ordinal
목록을 사용하고 그렇지 않으면 numbers
목록을 사용하십시오. 솔루션을 100으로 나눌 수 있는 극단적인 경우도 있습니다. 이 경우에는
ordinal
목록을 사용한 적이 없습니다. 이런 일이 발생하면 문자열 끝에 'th'라는 문자열을 추가합니다.이 블로그를 작성할 때 숫자가 10으로 나누어 떨어지는 경우(100과 10 제외) 서수 단어도 인쇄하지 않았다는 사실도 깨달았습니다. 이를 처리하기 위해 몇 가지 코드를 추가했습니다. 고맙게도 모든
tens
단어에 대해 올바른 단어를 얻기 위해 'y'를 'ieth'로 바꿀 수 있습니다.그런 다음 최종 문자열을 생성하기 위해 함께 비트 조각의 문제입니다.
예
$ ./ch-1.py 11
eleventh
$ ./ch-1.py 62
sixty second
$ ./ch-1.py 99
ninety ninth
작업 2: 유니코드 스파크라인
일
양수 목록(
@n
)이 제공됩니다.주어진 숫자 목록에 대해 유니코드로 스파크라인을 인쇄하는 스크립트를 작성하십시오.
내 솔루션
먼저 솔루션의 속성을 Rosetta Code 라이센스에 따라 CC BY-SA 4.0에 부여합니다.
고맙게도 Python 3과 Perl은 유니코드를 기본적으로 지원하므로 이를 지원하기 위해 특별한 작업을 수행할 필요가 없습니다.
코드는 다음 변수를 정의합니다.
bar
문자열▁▂▃▄▅▆▇█
(필자는 Perl 솔루션에 목록을 사용함) 및 barcount
목록의 길이입니다. mn
및 mx
목록의 최소값과 최대값. extent
두 값의 차이입니다. 그런 다음
@n
의 각 값을 검토하고 방정식 (n - mn) / extent * barcount
을 사용하여 표시할 막대를 계산합니다.예
$ ./ch-2.py 1 2 3 4 5 6 7 8
▁▂▃▄▅▆▇█
$ ./ch-2.py 1 8 2 7 3 6 10
▁▇▁▆▂▅█
Reference
이 문제에 관하여(서수 스파크라인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/simongreennet/the-ordinal-sparkline-dn5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)