1 คะแนน โดย GN⁺ 2025-01-13 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

เล่น 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 ความคิดเห็น

 
GN⁺ 2025-01-13
ความคิดเห็นจาก Hacker News
  • เป็นปฏิกิริยาเชิงขำขันต่อความเชื่อมั่นของ Nolen เรื่องการเพิ่มประสิทธิภาพ 1,000 เท่า เคยใช้กลยุทธ์คล้ายกันมาก่อน แต่ไม่ได้ใช้ทั้งหมดภายในวันเดียว

    • Bad Matrix: วิธีพิมพ์บล็อกลงในเทอร์มินัล
    • Animating Text Art in Javascript: วิธีสร้างเอฟเฟ็กต์แอนิเมชันด้วยการพิมพ์ข้อความลงบนกริดคงที่
    • oxo: วิธีพิมพ์กระดาน tic-tac-toe ลงในเทอร์มินัลและใช้ regular expression ตรวจผลลัพธ์
    • Bad Apple น่าประทับใจที่สุด
  • รู้สึกทึ่งกับเดโมเชิงเทคนิคที่รัน Bad Apple บน NES พร้อมให้ลิงก์ที่แสดง Bad Apple ที่กำลังรันบน Everdrive

    • มีเสียงด้วย และขนาดข้อมูลอยู่ที่ราว 1GB ทั้งที่รันบนระบบที่เกมทั่วไปมีขนาดเพียงไม่กี่ร้อย KB
  • อธิบายวิธีทำให้ Vim macro “เล่นได้” โดยย้ายไปบรรทัดถัดไป พร้อมให้คำสั่งสำหรับรัน macro ทีละบรรทัด

  • ให้ข้อมูลเกี่ยวกับ Govee curtain lights ที่ขายเมื่อเดือนที่แล้ว ซึ่งสามารถอัปโหลด GIF แบบเคลื่อนไหวได้ และมีแผนจะทำ GIF ของ "bad apple"

  • แสดงความคิดเห็นเกี่ยวกับปัญหาการลดจำนวนสี่เหลี่ยมผืนผ้าให้ต่ำที่สุด พร้อมอธิบายโปรเจกต์ Vim ที่อนุญาตให้มีการซ้อนทับได้ ซึ่งต่างจากปัญหาที่พูดถึงใน StackOverflow

  • เห็นว่าตัวสร้างคำตอบแบบขนานที่เป็นไปได้เป็นไอเดียที่ดี และใช้เวลาสักพักกว่าจะตระหนักว่าไม่จำเป็นต้องสร้างอัลกอริทึมที่ดีที่สุด

  • แชร์ประสบการณ์ดูฟุตบอลโลกปี 2006 จากที่ทำงาน โดย SSH เข้าเซิร์ฟเวอร์ที่บ้านแล้วดูผ่านเทอร์มินัล เพราะแบนด์วิดท์ไม่พอจะใช้วิธีอื่น

  • ตอบรับเชิงบวกต่อไอเดียสร้างสรรค์นี้ เกมต้นแบบที่เป็นพื้นฐานก็ดีเช่นกัน และเกมแนว bullet hell ชวนสะกดมาก

  • ถามว่าโปรเจกต์นี้ใช้เวลาทำประมาณเท่าไร

  • อย่างที่ผู้เขียนยอมรับ นี่คือ Vim แต่ไม่ใช่ regular expression หากเป็นการ "ค้นหาพิกัดบนหน้าจอ" มากกว่า เป็นการวาดภาพใน Vim แต่ไม่ใช่การจับคู่แพตเทิร์น