Cross + roads = danger ==> 대답은 ==> 96233 + 62513 = 158746암호 해독 문자 값을 찾는 방법은 무엇입니까?
다른 예를 더 쉽게 찾을 수있는 지침을 찾고 있습니다. 선생님 중 한 명이 트리를 사용해서 찾을 수 있다고했습니다. 그러나 때로는 나무를 사용하여 답을 찾는 것이 불가능합니다.
대개 어떻게 암호 해독 솔루션을 찾으십니까?
Cross + roads = danger ==> 대답은 ==> 96233 + 62513 = 158746암호 해독 문자 값을 찾는 방법은 무엇입니까?
다른 예를 더 쉽게 찾을 수있는 지침을 찾고 있습니다. 선생님 중 한 명이 트리를 사용해서 찾을 수 있다고했습니다. 그러나 때로는 나무를 사용하여 답을 찾는 것이 불가능합니다.
대개 어떻게 암호 해독 솔루션을 찾으십니까?
한 가지 간단한 방법 :
vars = Symbol[#] & /@ ("abc" <> ToString[#] & /@ Range[26]) ;
준 알파벳의 각 문자에 변수 :
alphabet = Transpose[{CharacterRange["a", "z"], vars}];
가 도우미 함수를 작성
가 (단지 편의를 위해) 변수를 정의 문자열을 표현식으로 변환 :
formDigits[astring_] := FromDigits[alphabet[[alphabet[[#, 2]] & /@
Position[alphabet[[All, 1]], #][[1, 1]] & /@ Characters[astring], 2]]]
,451,515,
예 :
formDigits["cross"]
(* abc19 + 10 (abc19 + 10 (abc15 + 10 (abc18 + 10 abc3))) *)
을 "크로스 + 도로 = 위험"대응 연립 방정식을 적는다
equation = formDigits["cross"] + formDigits["roads"] == formDigits["danger"]
마지막 명백한 제약을 추가로 시스템을 푼다
sol = [email protected][{equation, Sequence @@ Thread[Thread[0 <= vars <= 9]],
Not[Apply[And, Thread[vars == 0]]]}, alphabet[[All, 2]], Integers] ;
확인 :
formDigits["cross"] /. sol
formDigits["roads"] /. sol
formDigits["danger"] /. sol
(* 78644
86614
165258 *)
예, +1. 하지만 아마도 _Mathematica_ 태그가 실수로 사용되었습니다 –
@ belisarius 모든 변명은 재미있게하는 것이 좋습니다. –
+10 then ... :) –
이것은 자연스럽게 Prolog에서 풀립니다. 또한 Faster implementation of verbal arithmetic in Prolog 참조 :
이%% unique selection from narrowing domain
selectM([A|As],S,Z):- select(A,S,S1),selectM(As,S1,Z).
selectM([],Z,Z).
%% a puzzle
cryp([[C,R,O,S,S]+[R,O,A,D,S]=[D,A,N,G,E,R]]):-
Dom=[0,1,2,3,4,5,6,7,8,9],
selectM([S],Dom,D0),
N1 is S+S, R is N1 mod 10, R=\=0,
selectM([R,D],D0,D1), D=\=0,
N2 is (N1//10)+S+D, E is N2 mod 10,
selectM([E,O,A,G],D1,D2),
N3 is (N2//10)+O+A, G is N3 mod 10,
N4 is (N3//10)+R+O, N is N4 mod 10,
selectM([N,C],D2,_), C=\=0,
N5 is (N4//10)+C+R, A is N5 mod 10,
D is N5//10.
효율성의 핵심은 점진적으로 숫자의 인스턴스화를 선택하는 것입니다, 하나 하나를 최대한 빨리 잘못된 선택을 폐기하는 즉시 테스트. 이것이 Mathematica로 번역 될 수 있다고 확신합니다.
이 문제를 해결하는 방법이나 문제를 해결하는 프로그램에 대한 설명을 찾으십니까? http://s4.zetaboards.com/science/topic/7693756/1/ – user15741
예, 암호 해독 문제를 해결하기 위해 이러한 문제를 해결하는 방법과 모든 소스 코드에 대한 설명을 찾고 있습니다. 또한이 링크를 읽기 전에 ==> http://s4.zetaboards.com/science/topic/7693756/1/ –
귀하의 질문은 자매 사이트 인 http://mathematica.stackexchange.com/에 더 적합 할 수 있습니다. . –