เล่น Bad Apple ใน vim
-
Bad Apple คืออะไร?
- Bad Apple เป็นมิวสิกวิดีโอที่โดดเด่นด้านภาพ และถูกนำไปฝังไว้ตามที่ต่าง ๆ จนกลายเป็นมีม
- มักถูกมองว่าเป็นมีมในแนวเดียวกับการรัน DOOM บนตู้เย็นอัจฉริยะ
-
การดึงเฟรม
- เพื่อให้ได้ข้อมูลของแต่ละเฟรมของ Bad Apple จึงโคลนรีโพซิทอรีของ Felixoofed แล้วแปลงออกมาเป็นไฟล์ PNG ราว 6,500 ไฟล์
- ใช้โค้ด Python แปลงแต่ละ PNG ให้เป็นอาร์เรย์ 2 มิติที่ประกอบด้วย 0 และ 1
-
การวาดใน vim
- สามารถวาดภาพใน vim ได้โดยแทรกรูปลงในกริดข้อความ
- ใช้ความสามารถด้านไฮไลต์ของ vim เพื่อใส่สีเดียวกันให้กับตัวอักษรที่แมตช์
- ใช้ฟอนต์สี่เหลี่ยมเพื่อทำให้พิกเซลเป็นสี่เหลี่ยมจัตุรัส
-
การวาดสี่เหลี่ยมตามต้องการ
- ใช้ความสามารถในการค้นหาของ vim เพื่อสร้างแพตเทิร์นที่แมตช์บรรทัดและคอลัมน์ที่ต้องการ
- สามารถรวมหลายแพตเทิร์นด้วยการดำเนินการ OR เพื่อวาดหลายสี่เหลี่ยมได้ในครั้งเดียว
-
การแปลงเฟรมเป็นสี่เหลี่ยม
- แยกกริดขนาด 90x120 ออกเป็นสี่เหลี่ยมเพื่อสร้างสตริงค้นหา
- ใช้อัลกอริทึมหลายแบบเพื่อเลือกแพตเทิร์นการค้นหาที่เหมาะสมที่สุด
-
การรันใน vim
- ใช้ vim macro เพื่อเล่นวิดีโอ
- macro จะตั้งค่าแพตเทิร์นการค้นหา แล้วเลื่อนไปยังบรรทัดถัดไปเพื่อให้สามารถรันซ้ำได้
-
สรุป
- โปรเจกต์นี้ทำเสร็จภายในวันเดียว และถ้ามีเวลามากกว่านี้ก็ยังมีจุดที่น่าปรับปรุงอีกบางส่วน
- โปรเจกต์นี้ถูกนำไปนำเสนอในสัปดาห์แรกที่ Recurse Center และได้รับเสียงตอบรับที่ดี
- โค้ดค่อนข้างซับซ้อน แต่ถ้าสนใจก็สามารถไปดูได้บน GitHub
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เป็นปฏิกิริยาเชิงขำขันต่อความเชื่อมั่นของ Nolen เรื่องการเพิ่มประสิทธิภาพ 1,000 เท่า เคยใช้กลยุทธ์คล้ายกันมาก่อน แต่ไม่ได้ใช้ทั้งหมดภายในวันเดียว
รู้สึกทึ่งกับเดโมเชิงเทคนิคที่รัน Bad Apple บน NES พร้อมให้ลิงก์ที่แสดง Bad Apple ที่กำลังรันบน Everdrive
อธิบายวิธีทำให้ Vim macro “เล่นได้” โดยย้ายไปบรรทัดถัดไป พร้อมให้คำสั่งสำหรับรัน macro ทีละบรรทัด
ให้ข้อมูลเกี่ยวกับ Govee curtain lights ที่ขายเมื่อเดือนที่แล้ว ซึ่งสามารถอัปโหลด GIF แบบเคลื่อนไหวได้ และมีแผนจะทำ GIF ของ "bad apple"
แสดงความคิดเห็นเกี่ยวกับปัญหาการลดจำนวนสี่เหลี่ยมผืนผ้าให้ต่ำที่สุด พร้อมอธิบายโปรเจกต์ Vim ที่อนุญาตให้มีการซ้อนทับได้ ซึ่งต่างจากปัญหาที่พูดถึงใน StackOverflow
เห็นว่าตัวสร้างคำตอบแบบขนานที่เป็นไปได้เป็นไอเดียที่ดี และใช้เวลาสักพักกว่าจะตระหนักว่าไม่จำเป็นต้องสร้างอัลกอริทึมที่ดีที่สุด
แชร์ประสบการณ์ดูฟุตบอลโลกปี 2006 จากที่ทำงาน โดย SSH เข้าเซิร์ฟเวอร์ที่บ้านแล้วดูผ่านเทอร์มินัล เพราะแบนด์วิดท์ไม่พอจะใช้วิธีอื่น
ตอบรับเชิงบวกต่อไอเดียสร้างสรรค์นี้ เกมต้นแบบที่เป็นพื้นฐานก็ดีเช่นกัน และเกมแนว bullet hell ชวนสะกดมาก
ถามว่าโปรเจกต์นี้ใช้เวลาทำประมาณเท่าไร
อย่างที่ผู้เขียนยอมรับ นี่คือ Vim แต่ไม่ใช่ regular expression หากเป็นการ "ค้นหาพิกัดบนหน้าจอ" มากกว่า เป็นการวาดภาพใน Vim แต่ไม่ใช่การจับคู่แพตเทิร์น