remixman's blog

Derangement การเรียงสับเปลี่ยนที่ไม่มีของชิ้นใดอยู่ที่เดิม

สมมติว่าคุณมีนิยายอยู่เรื่องหนึ่งที่มีความยาวทั้งสิ้น $n$ เล่มจบ แล้วคุณเกิดอยากลองสลับการวางแต่ละเล่มโดยที่ไม่มีเล่มใดอยู่แหน่งเดิมเลย (เช่น เล่ม 1 ไม่อยู่ตำแหน่งที่ 1, เล่ม 2 ก็ไม่อยู่ในตำแหน่งที่ 2 รวมถึงเล่มอื่นๆทุกเล่ม) ถามว่าคุณสามารถเรียงนิยายของคุณได้กี่วิธี?

Taxonomy upgrade extras: 

Zeal เครื่องมือสำหรับดู Document ภาษาต่างๆแบบ offline

สำหรับโปรแกรมเมอร์แล้ว การเปิด Document ของแต่ละภาษานั้นคงจะไม่ใช่เรื่องแปลกแต่ประการใด เพราะคงไม่มีใครที่จำ API หรือฟังก์ชันที่มีให้ได้ทั้งหมด ยิ่งในปัจจุบันที่มี framework และภาษาใหม่ๆออกมาให้เลือกใช้กันมากหน้าหลายตาแล้ว การเปิด Document ก็ยิ่งมีความสำคัญเข้าไปอีก

เครื่องมือที่หลายคนใช้สำหรับการเข้าถึง Document เหล่านั้นก็อาจจะเป็น Google ซึ่งสามารถค้นหาได้ทันใจ และสะดวกมากทีเดียว แต่เกิดถ้าตอนนั้นไม่มีอินเตอร์เน็ตหรือว่าไม่สะดวกที่จะเข้าล่ะ?

Taxonomy upgrade extras: 

แนะนำ C++11 - มีอะไรใหม่ มีอะไรดี

ก่อนอื่นหลายคนอาจจะมีคำถามที่ว่าแล้ว C++11 คืออะไร? ต่างจาก C++ ธรรมดายังไง? คำตอบก็คือว่า C++11 เป็นมาตรฐานของ C++ ตัวใหม่ครับ ซึ่งเป็นมาตรฐานที่ออกมาในปี 2011 คือหมายถึงเถียงกันเสร็จเรียบร้อยแล้วว่าจะให้มีหรือไม่มีอะไรบ้าง อย่างไร ซึ่งถ้าย้อนกลับไปตอนแรกเหมือนมาตรฐานนี้จะใช้ชื่อแบบลำลองว่า C++0x นั่นไม่แน่ใจว่าจะเสร็จในปีไหนแต่คงมี 200x นี่แหละ ซึ่งพอเอาเข้าจริงก็ลากยากมาถึงปี 2011 เลยทีเดียว ถึงขนาดมีคนเล่นมุกว่า 0x ที่ว่าคือ 0B (เลขฐาน 16) นั่นเอง (ฮา)

Taxonomy upgrade extras: 

Function Prototype ขาดไปได้หรือเปล่า?

ขณะที่ผมกำลังจะอธิบายเรื่อง function prototpye ในภาษา C ในคนอื่นฟัง ก็เลยเริ่มเกริ่นก่อนว่าฟังก์ชันใดๆที่เราจะใช้เนี่ย ต้อง declare มันขึ้นมาก่อนนะ ไม่งั้นเวลาเรียก (call) โปรแกรมจะไม่รู้จัก เสร็จแล้วผมก็ลองเขียนฟังก์ชันหน้าตาประมาณนี้ให้ดู เพื่อจะแสดงให้เห็นว่ามันจะพัง

Taxonomy upgrade extras: 

Generating Subsets

มีหลายปัญหาในการเขียนโปรแกรมที่เราจะต้องแก้ด้วยการสร้างซับเซตทั้งหมดที่เป็นไปได้ขึ้นมา เพื่อทดสอบวิธีที่เป็นไปได้ทั้งหมด ปัญหาที่เกิดขึ้นคือจะสร้างซับเซตได้อย่างไร?

ความรู้แรกที่ทุกคนน่าจะมีเกี่ยวกับซับเซตทั้งหมดของเซตหนึ่งๆคือ ซับเซตทั้งหมดจะมี $2^n$ แบบ (เมื่อเซตนั้นมีสมาชิก n ตัว) เช่น เซต $\{1, 2, 3\}$ มีซับเซตที่เป็นไปได้ทั้งหมด 8 ตัวได้แก่ $\{\}, \{1\}, \{2\}, \{3\}, \{1,2\}, \{1,3\}, \{2,3\}$ และ $\{1,2,3\}$

ทีนี้เราจะใช้เลขฐานสองเข้ามาช่วยในการสร้างซับเซตทั้งหมดแล้วครับ ลองดูเลขฐานสองของ 0 จนถึง 7 ดูครับ

Taxonomy upgrade extras: 

Unified Solution - โปรแกรมเดียวที่แก้ได้ทุกปัญหา

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

Taxonomy upgrade extras: 

CUDA Tutorial: ภาคติดตั้ง

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

Taxonomy upgrade extras: 

CUDA Tutorial: ภาคปฐมบท - CUDA คืออะไรหว่า

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

Taxonomy upgrade extras: 

Pages

Subscribe to RSS - remixman's blog