/ 365วันแห่ง...

[365 วันแห่งโปรแกรม #day75] ฝึกใช้ Map Reduce Filter ด้วยเกม

สองสามวันที่ผ่านมาผมเห็นมีคนโพสต์ลิงค์ของเกมๆ นึงในกลุ่ม Thai Functional Programming Enthusiasts บน Facebook พอลองเล่นดูก็พบว่ามันเจ๋ง วันนี้ก็เลยขอเอามาแชร์ครับ


เกมที่ผมกล่าวถึงก็คือ cube composer นั่นเอง เดี๋ยวเรามาดูกันครับว่ามันคืออะไร

cube composer

cube composer เป็นเกม puzzle ที่ได้แรงบันดาลใจมาจาก functional programming ซึ่งในเกมนี้คุณจะได้ลองใช้คำสั่งยอดนิยมอย่าง Map Reduce Filter ในการแก้ puzzle

ตอนแรกที่เห็นผมก็คิดว่ามันจะน่าเบื่อ แต่พอลองเล่นจริงๆ แล้วกลับพบว่ามันสนุก ไม่ว่าจะเล่นเอารู้ หรือเล่นไปเฉยๆ ไม่คิดอะไร ไม่ว่าจะมีพื้นฐานด้านโปรแกรมหรือไม่ ก็เล่นได้ครับเกมนี้ ของเขาดีจริงๆ

เกมมันหน้าตายังไง?

เกมนี้จะมีโจทย์ให้ต่อ block ตามคำสั่งครับ โดยจะมีกอง block เริ่มต้นให้ แล้วเราก็ต้องเลือกคำสั่ง (Map, Reduce, Filter) ไปใช้เพื่อให้เกิดผลลัพธ์ตามที่โจทย์กำหนด โดยในแต่ละข้อก็จะมีคำสั่งให้ใช้งานได้ต่างกันบ้างเล็กน้อย

*คำสั่งแต่ละอันใช้ได้แค่ 1 ครั้งเท่านั้น

cube composer level 0.1

จะเห็นว่าถึงเราไม่รู้เรื่องโปรแกรมเลยก็สามารถเล่นได้ครับ เนื่องจากในแต่ละคำสั่งก็มีภาพประกอบชัดเจน

มองแบบโปรแกรม

เล่นแล้วก็ยังไม่ Get ว่ามันเป็นโปรแกรมมิ่งตรงไหน? เอาล่ะครับ ผมจะลองอธิบายให้อ่านกัน จริงๆ แล้วตรงโจทย์ที่เป็น Block นั่นไม่ใช่แต่ Block ธรรมดาครับ แต่มันเป็น list ของ list ของ Block \(◎o◎)/! ตามด้านล่างนี้เลยครับ

cube composer level 0.1 explain

จากภาพจะเห็นได้ว่าใน row ล่างสุดนั้นมีสมาชิกครบทุกตัว ไม่มีที่แหว่ง นั่นหมายความว่าแต่ละ column นั้นย่อมเป็นสมาชิกของ list แน่นอน เมื่อพิจารณาสมาชิกใน list จะพบว่ามีบางตัวที่มีหลาย Block ซ้อนกัน นั่นก็แสดงให้เห็นอีกว่า มันเป็น list ดังนั้นเราสามารถแทนภาพนี้ด้วยข้อมูลต่อไปนี้

*จริงๆ อาจจะมองเป็นโครงสร้างแบบอื่นก็ได้ครับ

ลอง Map ในโค้ดดู

ในข้อแรกนี้ค่อนข้างง่ายเพราะเป็นแค่การเปลี่ยนสี ถ้าในเกมก็คือใช้คำสั่งแรก (map Y -> R) แค่นั้นจบ อย่างไรก็ตามเราจะมาลองเขียนโค้ดกันครับ

พอรันเสร็จเราก็จะได้ผลลัพธ์ดังนี้

ซึ่งก็คือรูปนี้นั่นเอง

cube composer level 0.1 result

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

References

cube composer ผ่าน โพสต์ของคุณ Dungjit Os Shiowattana

#‎day75 #365วันแห่งโปรแกรม ‪#‎โครงการ365วันแห่ง‬...