Tuesday, September 21, 2004

โปรแกรมแก้ปริศนาแทนตัวเลขด้วยอักษร

สมัย ม.ต้น ครูวิชาเลขเคยเอาโจทย์ที่แทนตัวเลขด้วยอักษรแบบนี้มาให้คิด
------
  SEND
+ MORE
------
 MONEY
======
แล้วให้คิดว่า อักษรแต่ละตัว ต้องแทนด้วยเลขอะไร (0-9 ไม่ซ้ำ) สมการนี้จึงจะเป็นจริง ตัวอักษรซ้ายสุดของแต่ละแถวจะไม่เป็นเลขศูนย์

วันนี้เอาหนังสือ "Algorithm" เล่มเก่าๆ ภาษาญี่ปุ่นที่วางอยู่บนชั้นหนังสือมาเปิดๆดู มีโปรแกรมแก้โจทย์แบบนี้ด้วยแฮะ ไปค้นที่โฮมเพจของหนังสือ เจอซอร์สโปรแกรมให้ดาวน์โหลดด้วย

ในไฟล์ที่ดาวน์โหลดมาจะมีโปรแกรมที่ปรากฏในหนังสือเล่มนี้ทั้งหมด โปรแกรมสำหรับแก้โจทย์แบบนี้ชื่อ fukumen.c

$ ./fukumen 
行数? 3   
 1: SEND
 2: MORE
 3: MONEY

解 1
 9567
 1085
10652
ในหนังสือยังมีอีกตัวอย่างที่เด็ดกว่า
---------
     FIVE
    SEVEN
   ELEVEN
   TWELVE
  FIFTEEN
+  TWENTY
---------
  SEVENTY
=========
รู้สึกว่าเด็ด เพราะ 5+7+11+12+15+20 = 70 จริงๆด้วย ลองแก้ด้วยโปรแกรม จะได้
$ ./fukumen
行数? 7
 1: FIVE
 2: SEVEN
 3: ELEVEN
 4: TWELVE
 5: FIFTEEN
 6: TWENTY
 7: SEVENTY

解 1
   3209
  59094
 969094
 819609
3238994
 819487
5909487
ลองโจทย์อีกข้อนึงที่ Otto เพิ่งถามมา WWWDOT - GOOGLE = DOTCOM

ก่อนจะใช้โปรแกรมนี้ต้องแก้โจทย์หน่อย ย้ายข้างให้ลบกลายเป็นการบวกก่อน คือ GOOGLE + DOTCOM = WWWDOT

行数? 3
 1: GOOGLE
 2: DOTCOM
 3: WWWDOT

解 1
188103
589486
777589

解 2
188106
589483
777589
เก่งเหมือนกันแฮะ บอกได้ด้วยว่ามีสองคำตอบ

No comments: