เห็นมีคนโพสท์ถามกันใน FB ว่า INDIA + CHINA = JAPAN โดยที่ตัวอักษรอังกฤษแต่ละตัวแทนเลขโดด อักษรต่างกันแทนเลขต่างกัน
ผมก็เขียนด้วยภาษาวุลแฟรมแก้ปัญหานี้แบบง่ายๆได้ตามนี้ครับ
num = Range[0, 9]; bigls = Permutations[num, {8}]; outls = Reap[ (Clear[i, n, d, a, c, h, j, p]; {i, n, d, a, c, h, j, p} = #; If[ FromDigits@{i, n, d, i, a} + FromDigits@{c, h, i, n, a} == FromDigits@{j, a, p, a, n} , Sow[#]]) & /@ bigls][[2, 1]];
โดยคำตอบที่ได้คือ
((#1 -> #2 & @@@ ({{i, n, d, a, c, h, j, p}, #}\[Transpose]))&/@ outls)
{{i -> 6, n -> 8, d -> 3, a -> 4, c -> 2, h -> 5, j -> 9, p -> 0}, {i -> 8, n -> 4, d -> 6, a -> 2, c -> 0, h -> 7, j -> 9, p -> 5}}
หรือ
{"INDIA = " <> ToString@FromDigits@({i, n, d, i, a} /. #), "CHINA = " <> ToString@(FromDigits@({c, h, i, n, a}) /. #), "JAPAN = " <> ToString@(FromDigits@({j, a, p, a, n}) /. #)} & /@ ((#1 -> #2 & @@@ ({{i, n, d, a, c, h, j, p}, #}\[Transpose])) & /@ outls) {{"INDIA = 68364", "CHINA = 25684", "JAPAN = 94048"}, {"INDIA = 84682", "CHINA = 7842", "JAPAN = 92524"}}
วิธีการก็เพียงสร้างลิสของตัวเลข 8 ตัวตามจำนวนอักษรที่เป็นไปได้ทั้งหมด แล้วก็หาดูว่าชุดไหนที่มันตรงตามเงื่อนไข