99国产精品欲av蜜臀,可以直接免费观看的AV网站,gogogo高清免费完整版,啊灬啊灬啊灬免费毛片

網易首頁 > 網易號 > 正文 申請入駐

僅用8小時,用Vim編輯器手搓BadApple火了!

0
分享至

奇月 發自 凹非寺量子位 | 公眾號 QbitAI

老二次元/科技宅倒背如流的Bad Apple動畫,網友Nolen Royalty用Vim文本編輯器復現出來了!

而且僅耗時8小時、用了6500個正則表達式!

先來一起瞅瞅效果:

https://mp.weixin.qq.com/s/UaCpTGN6YAiIclorF4QhlA

可以看到,動畫基本還原了人物的所有動作,整體視頻也很流暢,畫風很有經典像素風游戲的味道。



繼終端、游戲引擎、ASCII碼各種 Bad Apple 整活之后,Vim 編輯器也出息了一回!

難怪有網友說,這就是我們喜歡 Bad Apple 的原因,它總是能帶給我們更多驚喜。





PS:如果你還不知道Bad Apple,它是來自《東方Project》中的一個音樂MV,已經成為動畫界和科技界的一個梗。不僅有各種二創視頻,大家還會在各種硬件和軟件上復現它,可以說“有屏幕的地方就有Bad Apple”。

怎么做到的

網友 Nolen Royalty 還熱心分享了用 Vim 制作Bad Apple的過程,主要分為以下4步:



1.提取畫面幀轉換成數組

第一步非常簡單,使用 GitHub 用戶 Felixoofed 的庫就可以獲取 Bad Apple 每一幀的數據。

這個倉庫里面包含了原始的視頻以及一個 ffmpeg 命令,可以將視頻轉換為約 6500 張 PNG 圖片,每張代表一幀。



然后 Nolen 編寫了一小段 Python 代碼,將每個 PNG 文件轉換為 0 和 1 的二維數組(其中 1 代表黑色像素)。

視頻最初是 480x360 分辨率,在測量了終端后 Nolen 將其縮小到 120x90。

from PIL import Image

import numpy as np

def process_image(path, target_width=120, target_height=90):

img = Image.open(path)

img = img.resize((target_width, target_height), Image.Resampling.LANCZOS)

if img.mode != "L":

img = img.convert("L")

pixels = np.array(img)

binary_pixels = (pixels < 10).astype(int) # 1 for dark, 0 for light return binary_pixels

def text_preview(binary_pixels):

chars = {0: ".", 1: "#"}

return "\n".join("".join(chars[px] for px in row) for row in binary_pixels)

2.用Vim的高亮匹配功能繪制任意矩形

那么如何在 Vim 中繪制圖形呢?

假設你在文本中創建了一個主要由 A 組成的網格,并在其中嵌入一個由 B 組成的繪圖,這樣如果你搜索 B,就會看到一個小的棍狀人物圖形:



使用這個方法就可以畫圖了,但是還存在2個問題:

a.藍色高亮(Vim 默認)看起來不太清晰。

Vim 允許用戶自行配置高亮功能,調用 hi Search cterm=NONE ctermfg=grey ctermbg=grey ,就可以讓它用相同的顏色高亮匹配字符的前景和背景,這樣就能得到漂亮的方塊:



b.第二個問題是,如何將矩形變為正方形像素。

Nolen 最終找到了Square 字體,這是一個正方形的字體,它最初是為了讓用戶在終端中玩 roguelike 游戲而設計的,在 Vim 中使用它可以繪制一個非常漂亮的網格:



接下來就是分析每幀畫面的信息,生成一個針對主要圖形的正則表達式優化文件。

然后作者發現,用Vim 自帶的搜索功能就可以生成連續的矩形。

/\%l /\%>l /\%

\%23l Matches in a specific line.

\%<23l Matches above a specific line (lower line number).

\%>23l Matches below a specific line (higher line number).

\%.l Matches at the cursor line.

\%<.l Matches above the cursor line.

\%>.l Matches below the cursor line.

Vim 搜索可以匹配特定的行號(和列號),你可以將多個這樣的搜索組合在一起。

例如, \%>5c\%<15c\%>4l\%<9l 可以匹配第 5 列和第 15 列之間以及第 4 行和第 9 行之間的矩形區域。

而且,這種匹配模式還可以和其他 Vim 搜索進行 OR 操作,比如將上面的式子和 - \%>5c\%<15c\%>4l\%<9l\|\%>12c\%<25c\%>10l\%<15l 進行OR操作,就可以繪制出之前的矩形以及位于列 12 和 25 以及行 10 和 15 之間的新矩形。

這樣,使用單個搜索式就可以輕松地在屏幕上繪制許多矩形。



3.將動畫幀的圖形轉換成矩形

接下來,就得把圖像的網格(90x120,約 10000 個像素)拆成一個個矩形。

Nolen 首先嘗試找出所有不一樣的矩形并生成長搜索字符串、或者把網格拆成最少可填滿的矩形,但兩種嘗試均以失敗告終。

最終他想出了一個很簡單的算法,它是這樣工作的:先在圖像的第一行里,把所有連續的“1”的部分找出來。找完第一行,再看第二行,找出和第二行找到的部分有重疊的地方。

要是把這個重疊部分和第一行合起來形成的矩形的面積,比單獨這兩行形成的矩形的面積都大的話,就把它們合并成一個矩形。然后就一直持續下去,盡量把新找到的部分合并到之前的矩形里

這個算法通常情況下表現得不錯。但當搜索字符串超過10000個字符,就會嚴重拉低每秒的幀數。



Nolen 于是又寫了兩個解決方案(從左到右構建矩形的算法版本和僅查看各個行的簡單 RLE),然后通過三種算法運行每個幀并選擇最短搜索模式,這個組合算法最終效果不錯。

# Number of times each approach was picked

original approach (top to bottom merging) - 1110

left to right merging - 2239

single-row RLE - 3300

4.設置好Vim宏就可以在編輯器中播放動畫了

分解好了圖形,最后的一個問題就是:如何在 Vim 中播放視頻。具體步驟如下:

1.Vim 設置:頂部中心窗口播放視頻,是一個包含 90 行每行 120 個空格的文件,左右兩側是用于圖像居中的空緩沖區,底部窗口是約 6500 個搜索模式列表。

2.使用 Vim 宏播放視頻:Vim 宏可以記錄一系列擊鍵操作,方便重播。宏命令為“”ay$:let @/=@a^M+”,具體來說,就是對寄存器 a 操作,拉動到行尾,將寄存器/的內容設置為寄存器 a 的內容,執行命令,然后移動到下一行開頭。這樣設置宏可以讓光標回歸到正確位置,反復迭代即可實現重播。

3.優化:最有趣的優化操作是“let @/=@a”,相比“/^Ra^M”操作,它避免了過長的查詢操作導致搜索窗口閃爍嚴重和幀率降低的問題。

4.運行宏:可以運行“1500@q”(假設宏記錄在寄存器 q 中)播放宏 1500 次,快速運行 1500 幀。



這樣一來,就終于能得到開頭的 Bad Apple 視頻啦!

,時長00:42

作者還表示,由于是在一天內完成的項目,還有很多可以完善的細節,比如可以創建結構良好的文件來使用傳統正則表達式而非 Vim 的行/列搜索功能,以及幀率的穩定性方面還可以繼續加強。

萬物皆可BadApple

除了用 Vim 編輯器,網友們在 Bad Apple 整活上一直都腦洞大開,可以說只有你想不到,沒有網友做不到的。(doge)

比如有人用馬里奧游戲復現:



還有在電腦終端中敲幾個命令就能運行的:



甚至包括一些奇奇怪怪的硬件,包括快被淘汰的老式電視機電磁顯示屏、甚至做實驗用的示波器都可以:









看來,人類對Bad Apple的開發可能還不到10%啊,期待以后能看到更多的整活視頻(搓手手)


[1]https://news.ycombinator.com/item?id=42674116
[2]https://eieio.games/blog/bad-apple-with-regex-in-vim/

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
伊朗要變天了

伊朗要變天了

戰爭研究所
2025-06-13 23:40:34
白峰美羽,90后,170大長腿,確定不是你夢中情人?

白峰美羽,90后,170大長腿,確定不是你夢中情人?

說真話的小陳
2025-06-16 14:45:42
以總理稱除掉哈梅內伊將結束沖突

以總理稱除掉哈梅內伊將結束沖突

財聯社
2025-06-17 12:40:32
足協官方作出決定!知名教頭成國足新帥熱門,5大理由或最佳選擇

足協官方作出決定!知名教頭成國足新帥熱門,5大理由或最佳選擇

璞玉話體壇
2025-06-16 21:10:23
伊朗的出路在哪里?

伊朗的出路在哪里?

難得君
2025-06-17 11:59:00
中超2大豪門交易曝光!克雷桑加盟申花,山東泰山得到潛力國腳

中超2大豪門交易曝光!克雷桑加盟申花,山東泰山得到潛力國腳

璞玉話體壇
2025-06-17 07:05:58
郭富城宣布方媛懷三胎!又是發紅包,又是敬酒,全是討好妻子一家

郭富城宣布方媛懷三胎!又是發紅包,又是敬酒,全是討好妻子一家

農村教育光哥
2025-06-17 08:59:32
53歲汪峰做夢也沒想到,自己9歲的三女兒,已經開始為他爭光了

53歲汪峰做夢也沒想到,自己9歲的三女兒,已經開始為他爭光了

陳意小可愛
2025-06-17 13:26:03
凱特嘉德日現身笑容滿面氣色好,腳踩針小跑,梅根同日接受采訪

凱特嘉德日現身笑容滿面氣色好,腳踩針小跑,梅根同日接受采訪

喜歡歷史的阿繁
2025-06-17 13:29:04
歐盟要狠壓俄油價,美國卻力挺俄羅斯回G7?烏克蘭急得直跳腳!

歐盟要狠壓俄油價,美國卻力挺俄羅斯回G7?烏克蘭急得直跳腳!

天氣觀察站
2025-06-17 13:20:13
悲劇了!具俊曄沒有兌現承諾!S媽:世間唯有太陽和人心不可直視

悲劇了!具俊曄沒有兌現承諾!S媽:世間唯有太陽和人心不可直視

扒星人
2025-06-17 11:38:55
13歲男孩手機成癮全過程曝光:廢掉一個孩子最好的辦法,就是你不停地管他、管他……

13歲男孩手機成癮全過程曝光:廢掉一個孩子最好的辦法,就是你不停地管他、管他……

窈窕媽媽
2025-03-28 21:27:54
現場視頻!外媒:以軍公布空襲伊朗核項目總部畫面

現場視頻!外媒:以軍公布空襲伊朗核項目總部畫面

環球網資訊
2025-06-15 21:00:51
最新!新西蘭總理訪華之旅啟程!第一站是這里!重要會晤就在本周五!

最新!新西蘭總理訪華之旅啟程!第一站是這里!重要會晤就在本周五!

新西蘭天維網
2025-06-17 13:46:08
跟中國開了場會,蒙古國新總理表態,要把中蒙邊境遺留問題解決掉

跟中國開了場會,蒙古國新總理表態,要把中蒙邊境遺留問題解決掉

一個有靈魂的作者
2025-06-17 14:25:43
杭州男子健身后與妻同房突然心臟驟停,妻子回應,一細節難以啟齒

杭州男子健身后與妻同房突然心臟驟停,妻子回應,一細節難以啟齒

博士觀察
2025-06-16 19:11:04
印度間諜落網,莫迪慌了!

印度間諜落網,莫迪慌了!

低調看天下
2025-06-16 17:35:58
范冰冰父親節「甜依偎爸爸」曬全家福! 70歲爸媽逆齡顏質網全看傻

范冰冰父親節「甜依偎爸爸」曬全家福! 70歲爸媽逆齡顏質網全看傻

ETtoday星光云
2025-06-16 18:21:13
里夫斯:我想在湖人度過我的整個職業生涯,這是籃球界最好的球隊

里夫斯:我想在湖人度過我的整個職業生涯,這是籃球界最好的球隊

懂球帝
2025-06-17 07:53:25
中國商飛公司與賽峰和克瑞等簽署C929項目合作諒解備忘錄

中國商飛公司與賽峰和克瑞等簽署C929項目合作諒解備忘錄

界面新聞
2025-06-17 09:25:22
2025-06-17 15:27:00
量子位 incentive-icons
量子位
追蹤人工智能動態
10680文章數 176167關注度
往期回顧 全部

科技要聞

日賺1億、存貨1544億,比亞迪的實力與枷鎖

頭條要聞

伊朗電視臺遇襲 堅持譴責以色列的主播獲贊"女英雄"

頭條要聞

伊朗電視臺遇襲 堅持譴責以色列的主播獲贊"女英雄"

體育要聞

FMVP之爭?杰倫40+6創紀錄 決戰連獻關鍵分

娛樂要聞

52歲楊坤戀情疑曝光,前女友已去世

財經要聞

618國補貼錢反漲價 美的深陷價格魔術漩渦

汽車要聞

高級感拉滿 極氪9X全新配色“極晝白”亮相

態度原創

本地
旅游
健康
公開課
軍事航空

本地新聞

最近的打工人,都在熬夜看這劇逐幀學習職場小技巧

旅游要聞

熱聞|清明假期將至,熱門目的地有哪些?

呼吸科專家破解呼吸道九大謠言!

公開課

李玫瑾:為什么性格比能力更重要?

軍事要聞

內塔尼亞胡:不排除干掉哈梅內伊

無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 岗巴县| 颍上县| 且末县| 孟连| 富阳市| 宜黄县| 长治县| 封丘县| 周至县| 刚察县| 家居| 贵港市| 宁南县| 泸西县| 托里县| 镇原县| 长阳| 互助| 黎城县| 马公市| 临西县| 沙田区| 德令哈市| 淮北市| 民丰县| 贡嘎县| 铜鼓县| 东丰县| 星座| 荔波县| 东兰县| 孝感市| 平湖市| 海伦市| 酒泉市| 芦溪县| 辛集市| 宣汉县| 拉萨市| 阿拉善左旗| 会理县|