สัปดาห์นี้เด็กๆม.1-3 หัดเขียนโปรแกรมไพธอนเพื่อสร้างโจทย์ตัวอักษร (ต่อเนื่องมาจากสัปดาห์ที่แล้วที่เขียนโปรแกรมไล่แทนค่าตัวอักษรเพื่อแก้โจทย์ทำนองนี้)
(โค้ดต่างๆแบบ Jupyter notebookโหลดได้ที่นี่ หรือดูออนไลน์ได้ที่นี่นะครับ)
เด็กๆพยายามแทนค่าตัวเลขแต่ละตัวด้วยตัวอักษร บางคนใช้ดิกชันนารี บางคนใช้สตริง วิธีที่ตรงไปตรงมาที่สุดอาจเป็นประมาณนี้สำหรับเด็กๆที่รู้จัก list comprehension แล้ว (ถ้าอยากรู้เรื่องไปดูที่ Comprehending Python’s Comprehensions หรือดูที่ส่วน “การสร้างลิสต์จาก for” ที่หน้านี้ นะครับ)
ถ้าไม่รู้จัก list-comprehension ก็ใช้ for loop ได้ประมาณนี้:
พอแปลงเลขเป็นตัวอักษรได้ ก็ใส่ตัวตั้งสองตัว x, y แล้วให้คอมพิวเตอร์คำนวณค่า x+y, x-y, x*y, x/y แล้วแปลงทั้งหมดเป็นตัวอักษร A-J แทนเลข 0-1 โดยระวังว่าถ้าผลลัพธ์มีตัวเลขที่ไม่มีอยู่ในพวกตัวตั้ง x, y เราจะต้องไม่แทนค่าตัวเลขด้วยตัวอักษร
เพื่อไม่ให้เดาคำตอบได้ง่ายเกินไป เราไม่ควรแทน 0 ด้วย A, 1 ด้วย B, …, 9 ด้วย J เสมอ เราจึงอาจสลับอักษร A-J ให้เป็นลำดับอื่นก่อนแทนค่า เราสามารถทำได้ด้วย random.shuffle( ) แล้วแทนค่าด้วย translate( ) ประมาณนี้:
หน้าตาฟังก์ชั่นสร้างโจทย์ตัวอักษรก็อาจมีหน้าตาประมาณนี้:
หน้าตาโจทย์ที่ได้ก็จะเป็นประมาณนี้:
สำหรับเด็กม. 1 ผมเอาภาพคอมพิวเตอร์ยุคแรกๆเช่น ENIAC ว่าเมื่อก่อนเขาโปรแกรมกันอย่างไร, ภาพเครื่องคำนวณสมัยกรีกโบราณ และภาพคุณ Katherine Johnson ที่เป็นนักคณิตศาสตร์ทำงานให้ NASA ที่เด็กๆรู้จักจากภาพยนต์เรื่อง Hidden Figures มาให้ดูด้วยครับ