How to start Artificial Intelligence – number and operator

บทนำ (Overview)

จากบทความก่อนหน้า (How to start Artificial Intelligence) กล่าวถึงการติดตั้งและทดลองใช้ฟัง์ชัน + – * / ทางคณิตศาสตร์ ในบทความนี้จะอธิบายถึงค่าตัวเลข (number) ประเภทต่าง ๆ และตัวดำเนินการทางคณิตศาสตร์แบบอื่น (mathematics operator)



แต่ก่อนอื่นอธิบายโครงสร้างของภาษา “LISP” เสียก่อน โดยโครงสร้างจะเกิดจากกประกอบกันของ “object” หรือเรียกว่าอะตอม (atom) หลาย ๆ อะตอมที่รวมกันอย่างถูกโครงสร้างจะเรียกว่าลิสต์ (list)

โดย 1 อะตอมสามารถแบ่งออกเป็น 2 ชนิดคือ

  • ค่าตัวเลขที่สามารถคำนวนได้ทางคณิตศาสตร์ (number)
  • สัญลักษณ์ (symbol) ซึ่งยังแบ่งออกเป็นสองชนิด
    • ชุดอักขระ เช่น apple, password, sdd123 เป็นต้น
    • หรือเครื่องหมายต่าง ๆ เช่น + – * /

ที่นี้ “List” คือ การรวมกันของหลาย ๆ atom อย่างถูกโครงสร้าง นั้นหมายถึงจะต้องอยู่ภายใต้วงเล็บ () และเว้นวรรคสำหรับแยกกันแต่ละ “atom” หรือไม่มี atom ใน list เลยก็ได้ ยกตัวอย่างเช่น

  • (+ 1 2)
  • (apple password ssd123)
  • ()

ขั้นตอน (Steps)

  1. ตัวเลข (number) เป็นไปได้ทั้ง จำนวนเต็ม เศษส่วน และทศนิยม
      i i i i i i i       ooooo    o        ooooooo   ooooo   ooooo
      I I I I I I I      8     8   8           8     8     o  8    8
      I  \ `+' /  I      8         8           8     8        8    8
       \  `-+-'  /       8         8           8      ooooo   8oooo
        `-__|__-'        8         8           8           8  8
            |            8     o   8           8     o     8  8
      ------+------       ooooo    8oooooo  ooo8ooo   ooooo   8
    
    Welcome to GNU CLISP 2.49 (2010-07-07) <http://clisp.cons.org/>
    
    Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
    Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
    Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
    Copyright (c) Bruno Haible, Sam Steingold 1999-2000
    Copyright (c) Sam Steingold, Bruno Haible 2001-2010
    
    Type :h and hit Enter for context help.
    
    [1]> (+ 5 45)
    50
    [2]> (/ 5 45)
    1/9
    [4]> (/ 7 5)
    7/5
    [6]> (log 20)
    2.9957323
    [7]
    
  2. ส่วนตัวดำเนินการทางคณิตศาสตร์ (operators) โดยการใช้งานมีลักษณะเป็น “Prefix operator” คือตัวดำเนินงานอยู่หน้าพารามิเตอร์ที่ต้องใช้งาน ซึ่งตัวดำเนินงานของ LISP มีดังนี้
    ฟังก์ชัน ความหมาย
    (+ x1 x2 ... xn) บวกจำนวน x1, x2, …, xn
    (* x1 x2 ... xn) คูณจำนวน  x1, x2, …, xn
    (- x y) ลบ y จาก x
    (/ x y) หาร x โดย y
    (rem x y) หารเอาเศษ x โดย y
    (abs x) ทำ x ให้เป็น +
    (max x1 x2 ... xn) หาค่ามากสุด x1, x2, …, xn
    (min x1 x2 ... xn) หาค่าน้อยสุด x1, x2, …, xn
    (sin x), (cos x), (tan x), (asin x), (acos x), (atan x) ค่าตรีโกณมิติของ x
    (exp x) ค่า e ยกกำลัง x
    (expt x y)
    ค่า x ยกกำลัง y
    (log x 10)
    ค่า log x ฐาน 10
    (log x)
    ค่า log ฐาน e
    (sqrt x)
    ค่า square root
    (truncate x)
    ปัดค่า x เอาเฉพาะจำนวนเต็ม
    (round x)
    ปัดค่า x ขึ้นเมื่อสูงกว่า 0.5 นอกนั้นปัดลง
    (mod x y)
    หารเอาเศษ
    (floor x)
     ปัดลง
    (ceiling x)
     ปัดขึ้น
  3. ตัวอย่างการใช้งาน
    [1]> (rem 5 3)
    2
    [2]> (mod 5 3)
    2
    [3]> (abs -1)
    1
    [4]> (max 1 2 3 4 5)
    5
    [5]> (min 1 2 3 4 5)
    1
    [6]> (sin 45)
    0.8509035
    [7]> (cos 45)
    0.52532196
    [8]> (tan 45)
    1.6197752
    [9]> (exp 40)
    2.3538527E17
    [10]> (expt 2 3)
    8
    [11]> (log 10)
    2.3025851
    [12]> (log 10 10)
    1
    [13]> (sqrt 2)
    1.4142135
    [14]> (truncate 2.5)
    2 ;
    0.5
    [15]> (round 2.6)
    3 ;
    -0.4000001
    [16]> (round 2.5)
    2 ;
    0.5
    [17]> (mod 4 3)
    1
    [18]> (floor 4.6)
    4 ;
    0.5999999
    [19]> (ceiling 4.6)
    5 ;
    -0.4000001
    

ใส่ความเห็น