คลังเก็บป้ายกำกับ: algorithm

หมาป่า แกะ กะหล่ำปลี

เกมพาคนสัตว์สิ่งของข้ามแม่น้ำนี่มีหลายเวอร์ชั่นมาก เกมนึงที่น่าจะเคยเล่นกันคือ “เกมพาหมาป่า แกะ และกะหล่ำปีข้ามแม่น้ำ” ในเกมนี้ เราต้องพาของทั้งสามอย่างข้ามฝั่งแม่น้ำโดยมีกฎอยู่ว่า

  • พาของข้ามแม่น้ำได้ทีละ 1 อย่าง
  • ถ้าอยู่กันสองต่อสอง หมาป่าจะกินแกะ และ แกะจะกินกะหล่ำ

อ่านกฎ อ่านกติกาเข้าใจยาก… คลิกที่รูปเพื่อลองเล่นเลยดีกว่าครับ

 

wolf-sheep-cabbage-300x179
เกมหมาป่า แกะ กะหล่ำ

อ่านเพิ่มเติม หมาป่า แกะ กะหล่ำปลี

กลับลำดับ Bit ในตัวแปร Integer

วันนี้เขียน Micro C ลง dsPIC30 (เป็น Microcontroller ตัวนึงน่ะนะ) ต้องการเขียนโปรแกรมให้กลับลำดับ bit ในตัวแปร x

x = 01001111000000001010101011110000

ให้กลายเป็น

y = 00001111010101010000000011110010

(คือ เขียน bit ใน x จากหลังมาหน้านั่นแหละครับ)

ตอนแรกพยายามนึกวิธีเอง ได้วิธีถึกๆ แบบต้องวนลูป 32 ครั้งค่อยๆ ดึง bit ตัวท้ายออกมาใส่อีกตัวแปรนึงไปเรื่อยๆ (32 ครั้ง = 32 bit) พอไปค้นในเน็ตเจอ Bit Twiddling Hacks ซึ่งแข็งแกร่งมาก (ทำเสร็จในไม่กี่ operation) ขอเอาโค้ดมาแปะตามนี้
อ่านเพิ่มเติม กลับลำดับ Bit ในตัวแปร Integer