2013-02-10 5 views
0

나는 나의 프로젝트를 위해 PHP로 작성된이 알고리즘이 있습니다이 알고리즘은 되돌릴 수 있습니까?

<?php 
$s = "abc"; //input -- string 


$n = strlen($s); 
$b = 0; 
for ($i = 0; $i < $n; $i++) 
{ 
$b += ord($s[$i]) * pow(31, ($n - ($i + 1))); 
} 


echo $b; //output -- int 
?> 

을하지만 지금은 정수에서 문자열을 가지고 그것을 반대해야합니다. 나는 시도했지만 실패했습니다, 거기에 그걸 반대로 방법은 무엇입니까?

편집 : "어떤 식 으로든"나는 원래 텍스트로 되돌릴 필요가 없지만 그 값을 제공하는 텍스트로 되돌릴 것을 의미했습니다.

+1

'$ b'만 가지고있을 때'$ i'와'$ n'은 알 수 없으므로 그렇게 생각하지 않습니다 (또는 매우 어려울 것입니다). – Petah

+0

은 (는) 당신의 캐릭터 세트가'31'입니까? – ogzd

답변

0

문자열에 소문자 만있을 수 있다고 보장 할 수있는 경우 ; 당신은 수학을 이해해야 할 것입니다. (알고리즘을 종이로 작성하고 글자를 변수로 남겨두고 방정식을 풀면 역순으로 보게 될 것입니다).

문자열이 임의이면 no입니다. 각 문자를 숫자의 기본 31 표현으로 변환하고이를 이동하고 결과를 추가하기 때문에이 추가 작업에는 많은 문자가 포함되어 있으므로 숫자만으로 원래 문자를 구할 수는 없습니다 (즉, 최종 결과입니다.)

편집 : 다음은 가능합니다. 그것은 약간 복잡 할 수 있습니다. - 나는 수학을 직접 풀어 둡니다.

2

없이, 그렇지 않은 ...

쉽게 예 ... A = 1, B = 2, C = 3, D = 4 등

여기를 :의 모든 문자에 값을 할당 할 우리는 "5"를 가지고 있습니다 - "광고"인지 "bba"인지 "bc"인지 알지 못합니다.

관련 문제