2012-03-14 4 views
4

파이 데이 (Pi Day)에서 Pi에 주어진 단어를 찾으려고하는 Java 프로그램을 작성하려고합니다. 나는 거의 모든 것을 끝내었지만, pi의 각 자리/숫자를 어떻게 문자로 변환해야하는지에 관해서 모순된다. 나는 A = 01, B = 02, C = 03 ... Y = 25, Z = 26이라고 생각했다.Pi를 문자로 변환 하시겠습니까?

그러나 "0"또는 "2"로 시작하지 않는 시퀀스가 ​​완전히 무시되므로 기회가없는 모든 빈약 한 시퀀스에 대해 나쁘다고 느꼈습니다. 이것은 서열의 80 %가 부적합하다는 것을 의미합니까?

베이스 26에서베이스 10 변환을 수행 할 수 있습니까? 이것이 실제로 적절한 해결책 인 경우 코드를 사용하여 수행하는 방법을 모르십니까?

감사합니다.

+0

항상 한 자리 숫자 * 및 * 유효한 두 자리 숫자를 확인할 수 있습니다. –

답변

5

Pi는 like this one이라는 방법을 사용하여 기본 -10 양식에서 다른 모든 기본 (즉, 알파벳 26에서 0-9 사이의 문자 만 사용하는 기본 26)으로 Pi를 변환 할 수 있습니다. 결과 "숫자"는 모든 문자가됩니다.

문자를 출력하도록 fromDecimalToOtherBase 메서드를 수정해야합니다. 그렇지 않으면 꽤 직설적이어야하며 10 진수와 임의의 기준 사이에서 변환하는 알고리즘은 동일합니다.

그냥 킥을 위해 임의의 기본 변환기가 포함 된 this page도 발견했습니다. 십진수없이 파이를 입력하고 대상베이스에 "26"을 입력하면 변환을 수행합니다 (그래도 숫자 0-9가 사용되기 때문에 원하는 방식으로 문제를 "해결"하지는 않습니다).).

+0

나는 숫자를 당신의 방법을 사용하여 글자로 변환 한 다음, 단어가 들어 있는지 확인한다. 문자열 내에 문자열을 찾는 Java 메소드가 있습니까? 나는 알아낼 것 같아요!? 모두에게 감사드립니다! :) –

+0

부분 문자열을 검색하는 가장 효율적인 방법은 아니지만 사용하려는 파이의 숫자와 사전 또는 단어의 길이에 따라 상당히 길어질 수 있습니다. 실행할 시간 : http://www.exampledepot.com/egs/java.lang/SearchString.html – jefflunt

+0

String.indexOf()가 O (N)의 최악의 동작을하지 않습니까? 나는 단지 주어진 단어의 첫 번째 인스턴스를 찾고 싶다. 나는 현재 100K 자리의 pi와 tau를 사용하고 있습니다. 배열에서 파일을 읽는 데 너무 오랜 시간이 걸리지 않았으므로 나는 현명한 시간이되어야한다고 생각합니다. –

3

알파벳을 줄 바꿈하고 모든 코드를 사용할 수 있습니다.

00 = A 
01 = B 
... 
24 = Y 
25 = Z 
26 = A 
27 = B 
... 

아니면 10 진법을 사용하면 어떨까요? 처음부터 숫자 26을 기본으로 표현하고 각 숫자는 문자를 나타냅니다.

pi = D,DRSQLOLYRTRCLRGGUKBJKPSRFVKRODHLJRFSZSOXNHXZ...