วิทย์ม.ต้น: หัดใช้ SymPy สำหรับโจทย์เลขสัญญลักษณ์, ใช้ Microsoft Math ช่วยแก้และสร้างโจทย์

วิทย์โปรแกรมมิ่งวันศุกร์นี้ สำหรับม.3 ผมให้ดูคลิปโจทย์นี้ก่อน:

โจทย์คือโทรศัพท์ต้องมีรหัสตัวเลขสี่หลัก มีรหัสกี่อันที่ไม่มีเลข 13 อยู่ในนั้น (ดูเฉลยในคลิปได้ครับ) แต่ผมให้เด็กๆเขียนโปรแกรมไล่นับดูด้วย หน้าตาโปรแกรมก็เป็นแบบนี้:

หลังจากทำอย่างนี้ได้ผมก็ถามว่าถ้านับจำนวนรหัสที่ห้ามมีเลข 1 แล้วมีเลข 3 อยู่ด้านหลังโดยอาจมีเลขอื่นๆคั่นอยู่จะนับอย่างไร เด็กๆก็เข้าใจว่าต้องไปเปลี่ยนเงื่อนไขว่าพบเลข 1 และ เลข 3 และเลข 3 ต้องอยู่ด้านหลังเลข 1 แต่เด็กๆไม่รู้ว่าคำสั่งที่ใช้หาตำแหน่งคืออะไร ผมจึงค้นหาในเว็บให้เด็กๆดู พบว่าใช้คำสั่ง find ได้เช่นที่เว็บนี้ พอเรารู้ว่าใช้ find อย่างไร โปรแกรมไล่นับของเราก็จะมีหน้าตาประมาณนี้ครับ:

จากนั้นเด็กๆม.3 ดูตัวอย่างวิธีใช้ SymPy ในโปรแกรมไพธอน ตามตัวอย่างที่หน้านี้ครับ สามารถใช้แก้ปัญหาคณิตศาสตร์แบบติดสัญญลักษณ์ได้ (แก้แบบ symbolic ) หน้าตาก็เป็นประมาณนี้:

ผมได้เล่าเรื่องจำนวนเชิงซ้อน (complex numbers) ให้เด็กๆฟังว่าจริงๆแล้วตัวเลขไม่ได้อยู่บนเส้นจำนวนเท่านั้น ระนาบรอบๆเส้นจำนวนก็มีตัวเลขเต็มไปหมด เลขเหล่านั้นถูกเรียกว่าจำนวนเชิงซ้อน แต่จริงๆมันก็มีตัวตนเหมือนเลขบนเส้นจำนวนนั่นแหละ มีกฎเกณฑ์การบวกลบคูณหารที่แน่นอน กฎเกณฑ์ทางธรรมชาติและคณิตศาสตร์หลายๆอย่างก็ใช้เลขเหล่านี้ และวิธีคิดถึงตัวเลขเหล่านี้ที่จินตนาการง่ายๆก็คือลากเส้นลูกศรจาก 0 ไปที่เลขต่างๆ การบวกก็เหมือนการเอาลูกศรมาต่อกัน การคูณเหมือนกับเอาทิศทางของลูกศรมาบวกกันแล้วยืดลูกศรลัพธ์ให้ยาวเท่ากับผลคูณของความยาวลูกศรที่เอามาคูณกัน

สำหรับเด็กม.1 ผมให้โหลดโปรแกรม Microsoft Math มาใช้ในโทรศัพท์ สามารถถ่ายรูปโจทย์ต่างๆ หรือเขียนโจทย์ต่างๆเข้าไปให้โปรแกรมแก้ และแสดงขั้นตอนการทำให้ดูได้ด้วย หน้าตาเว็บเขาจะเป็นแบบนี้ครับ:

https://math.microsoft.com

เด็กๆหัดเอา Microsoft Math ไปลองแก้ปัญหาต่างๆ และตอนหลังเขาตั้งโจทย์กันแล้วดูว่า Microsoft Math แก้ได้ไหมด้วยครับ ยกตัวอย่างเช่นโจทย์ว่ามีสัตว์ห้าชนิดคือ ไก่ วัว เต่าทอง แมงป่องพิษ งูพิษ มีสัตว์รวมกัน 80 ตัว มีปีกรวมกัน 120 ปีก มีสัตว์มีพิษ 25 ตัว และมีขารวมกัน 370 ขา ให้หาว่ามีสัตว์แต่ละชนิดกี่ตัว

เราก็เขียนสมการของโจทย์ไปบนกระดาษ แล้วใช้ Microsoft Math ถ่ายรูป จะพบว่าถ้าให้จำนวน ไก่ วัว เต่าทอง แมงป่อง และงู เท่ากับ x y z w v ตามลำดับแล้ว x = (110-8v)/3, y = (4v+20)/3, z = (4v+35)/3 , w = 25-v คือจำนวนไก่ วัว เต่าทอง แมงป่องขึ้นกับจำนวนงู v ที่เราใส่เข้าไป ผมจึงให้เด็กๆเขียนโปรแกรมไล่ว่ามีคำตอบทั้งหมดกี่คำตอบอีกทีครับ คำตอบที่เป็นไปได้คือ x, y , z, w, v ต้องเป็นจำนวนเต็มไม่น้อยกว่าศูนย์ และผมแนะนำให้เด็กๆรู้จักกับฟังก์ชั่น divmod ที่หาผลหารและเศษการหารออกมา เพื่อเราจะได้เช็คว่าผลการหารของเราได้เป็นเลขจำนวนเต็มหรือไม่ หน้าตาโปรแกรมก็เป็นประมาณนี้ พบว่ามี 5 คำตอบ (ตอนเด็กตั้งโจทย์ เขาสร้างตัวเลขขึ้นมาชุดเดียวคือ 10, 20, 25, 15, 10):

จริงๆถ้าเราจะใช้ SymPy แก้ก็ได้เหมือนกันครับ:

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.