Data Structure คืออะไร?
ผมเคยเรียน Data Structure เมื่อประมาณ 4-5 ปีก่อนครับ แต่ถ้าถามว่ามันคืออะไร ผมก็จะตอบว่ามันเป็นโครงสร้างที่ใช้ในการเก็บข้อมูล ซึ่งดูเป็นคำตอบที่ตรงไปตรงมาและขวานผ่าซากมาก แต่พอดีวันนี้ระหว่างที่คิดโปรแกรมอะไรเพลินๆก็เกิดปิ๊งขึ้นมาว่าจริงๆแล้ว Data Structure เนี่ยมันน่าจะเป็นยังไงแล้วเราจะสร้างมันขึ้นมาได้ยังไง ก็เลยมาขอบันทึกเอาไว้ที่บล็อกซะหน่อย
Unified Solution - โปรแกรมเดียวที่แก้ได้ทุกปัญหา
เคยรู้สึกกันมั้ยครับว่าทำไมเราต้องเขียนโปรแกรมซ้ำไปซ้ำมา ปัญหา (Problem) บางอย่างที่คล้ายๆกันก็มีออกมากมาย แต่เราก็ยังจำเป็นต้องใช้วิธีที่ต่างกันออกไปในการแก้ ไม่มีวิธีอะไรเลยหรือที่สามารถแก้หลายๆปัญหาได้ในคราวเดียว ผมเคยมีความรู้สึกนี้อยู่ช่วงนึง จนกระทั่งได้เรียนรู้เรื่องของการลดรูปของปัญหาว่ามีหลายปัญหาที่สามารถเปลี่ยนไปเป็นอีกปัญหานึงได้ อย่างเช่น Clique, Independent Set หรือ 3-SAT ฯลฯ

CUDA Tutorial: ภาคติดตั้ง
กลับมาพบกับภาคต่อของ CUDA Tutorial กันแล้วนะครับ จากตอนก่อนที่อธิบายถึงว่า CUDA คืออะไร ตอนนี้เราจะมาดูกันว่าถ้าอยากจะลองเล่นต้องเริ่มต้นติดตั้งอะไรบ้าง ถ้ายังไม่ได้อ่านตอนแรกแนะนำให้ลองอ่านดูก่อนนะครับ กับ CUDA Tutorial: ภาคปฐมบท - CUDA คืออะไรหว่า
CUDA Tutorial: ภาคปฐมบท - CUDA คืออะไรหว่า
คิดว่าหลายคนคงจะเคยผ่านหูผ่านตากับคำว่า CUDA กันมาบ้าง ไม่มากก็น้อย ซึ่งวันนี้ผมจะมาแนะนำกันครับว่า CUDA คืออะไร แล้วมันมีประโยชน์ยังไง ทำไมถึงมีหลายคนพูดถึงกันมากเหลือเกิน

ทำไมต้อง Case-sensitive
สองสามอาทิตย์ก่อนมีรุ่นน้องมาถามผมว่า ภาษาที่เป็น Case-sensitive มีข้อดียังไง โอ ผมฟังคำถามแล้วก็แอบอึ้งไปสักพักเหมือนกัน เขียนโปรแกรมมาห้าปี ไม่เคยสงสัยเหมือนกันว่ามันมีดีหรือไม่ดีต่างกันยังไง (แต่ผมเข้าใจว่าคำถามนี้น่าจะเป็นการบ้าน มากกว่าข้อสงสัยนะครับ)
ผมเลยลองค้นข้อมูลดูก็เลยได้คำตอบมาดังนี้ครับ
1. คอมไพเลอร์ทำงานได้เร็วกว่า เนื่องจากไม่ต้องเสียเวลามาคอยเปลี่ยนตัวอักษรก่อนที่จะเอามาเปรียบเทียบกัน ข้อนี้ก็ดู make sense ดีครับ แต่ก็มีหลายคนแย้งว่า จริงๆแล้วแค่เปลี่ยนตัวอักษรให้เหมือนกัน แล้วค่อยเอามาเทียบก็ไม่น่าจะยากแล้วก็ช้าลงมากมายไม่ใช่หรอ
N! มีกี่หลักกันหนอ
มีปัญหาของการเขียนโปรแกรมเพื่อหาจำนวนหลักของ N! อยู่ โดยที่ N นั้นมีค่าเป็นจำนวนมาก จะต้องเขียนโปรแกรมอย่างไรดี? วิธีการทั่วไปก็คือหาค่าของ N! แล้วก็มานับจำนวนหลัก ด้วยการหาร 10 ไปเรื่อยๆแล้วดูว่ามีทั้งหมดกี่หลัก ตามโค้ดด้านล่างนี้
ใช้ LaTeX บน Blog
ก่อนหน้านี้ผมพยายามลองใช้ LaTeX เพื่อเขียนพวกสัญลักษณ์คณิตศาสตร์บนบล็อก แต่เหมือนจะใช้ไม่ได้เพราะ มันต้องลงโปรแกรมเอาไว้ที่เครื่อง server แน่นอนว่าผมทำไม่ได้ ก็เลยลองหาตัวอื่นที่ใช้แทนได้ดู ก็ไปเจอเจ้า jsMath ที่เป็น JavaScript และหวังว่ามันจะเวิร์ค แต่จากที่ลองแล้วมันติดบ้างไม่ติดบ้าง (หลังๆมาไม่ขึ้นเลยด้วยซ้ำ) ก็เลยต้องเปลี่ยนตัวซะที ก็ไปเจอเว็บบริการ LaTeX สำหรับใช้บนเว็บนั่นคือ http://www.codecogs.com/latex/eqneditor.php
นับจำนวนที่หาร N ลงตัวแบบเร็วๆ ตอนที่ 2 (เร็วกว่าเดิม ง่ายกว่าเดิม)
พอดีเมื่อวานผมเปิดอ่านหนังสือ Combinatorics ก็เห็นตัวอย่างโจทย์นับจำนวนที่หารลงตัวก็เลยบ้าจี้ลองเขียนโปรแกรมตามดู ซึ่งจริงๆแล้วเรามีวิธีที่สามารถคำนวนจำนวนที่หาร N ลงตัวได้เร็วกว่า แล้วก็ง่ายกว่าด้วยครับ ไม่ต้องมานั่งหา prime ฮินดูอะไรนั่น เรียกได้ว่าสูงสุดคืนสู่สามัญจริงๆ ลองมาดูกันเลยครับ
วิธีนี้ก็จะประยุกต์จากเทคนิคที่ใช้หาค่า prime ในคราวก่อน นั่นคือวนรอบเท่ากับจำนวน sqrt(N) ลองดูตัวอย่าง จำนวนที่หาร N ลงตัวในแต่ละตัวดูครับ
