จะเติมตัวเลข 1 ถึง 9 ลงในช่องว่างที่กำหนดให้ได้ยังไง

พอดีมีคนถามในเวปhttp://www.pantip.com/cafe/wahkor/topic/X12094269/X12094269.html ว่าจะเติมตัวเลข 1 ถึง 9 ลงในช่องว่างที่กำหนดให้ได้ยังไง

ซึ่งถ้าใครใช้ Mathematica ก็สามารถเขียนง่ายๆได้ตามนี้ครับ

(* กรณีว่าห้ามใช้ตัวเลขซ้ำและต้องใช้ทุกตัว *)

Reap[If[#[[1]]/FromDigits@{#[[2]], #[[3]]} + #[[4]]/
FromDigits@{#[[5]], #[[6]]} + #[[7]]/
FromDigits@{#[[8]], #[[9]]} == 1, Sow[#]] & /@
Permutations[Range[9]]][[2, 1]]

ซึ่งMathematicaจะให้คำตอบคือ
{{5, 3, 4, 7, 6, 8, 9, 1, 2}, {5, 3, 4, 9, 1, 2, 7, 6, 8}, {7, 6, 8,
5, 3, 4, 9, 1, 2}, {7, 6, 8, 9, 1, 2, 5, 3, 4}, {9, 1, 2, 5, 3, 4,
7, 6, 8}, {9, 1, 2, 7, 6, 8, 5, 3, 4}}

มันก็คือการแทนตัวเลขที่แต่ละชุดลงตำแหน่งต่างๆตามนี้ครับ
(#1/#2 #3 )+(#4/#5 #6)+(#7/#8 #9)
โดย #n = ตำแหน่งของตัวเลขในแต่ล่ะชุดที่Mathematica ให้มาครับ

ดังนั้นคำตอบที่ได้คือ
5/34 + 7/68 + 9/12 = 1

%d bloggers like this: