12萬行程式碼堆出來個「蔡徐坤」
魚羊 白交 發自 凹非寺
量子位 報導 | 公眾號 QbitAI
有個程式猿,用12萬行程式碼堆出來個「蔡徐坤」,編譯還能通過?!
它是這樣的:
不是簡單的灰度字元畫!也不是控制檯控制顏色!而是在唱、跳、rap的程式碼!
連肩帶,都是有靈魂的。
這樣的作品,來自B站UP主NyeJu。他利用程式碼編輯器為不同關鍵詞顯示不同的顏色的原理,生成程式碼,然後滑動形成視訊。
這項技術的關鍵在於:
在正確的位置上放上符合規範的程式碼,顯示不同的顏色。
也就是說,整個操作純人工打造!
並且,這份程式碼是可以編譯通過的,0 error:
一經發出,網友紛紛表示:希望編譯器沒事。
還有盆友說:希望肝沒事。
12萬行程式碼你太美
當然也有盆友發出了這樣的驚歎:純手敲?!UP太強了!
不過UP主雖是真·肝帝無疑,但還沒有魔鬼到這個地步。
UP主也簡單介紹了一下自己的操作思路。
首先,選擇一個配色主題,比如UP主用的是Code Blue,並且需要獲取每一種關鍵詞的顏色。
然後,把原視訊切分成一堆圖片,識別每張圖片的畫素,匹配到最相近的關鍵詞顏色上,記錄下(顏色,長度)。
根據(顏色,長度)生成對應的程式碼。這涉及到兩個步驟:
定義一系列的pattern,比如「粉、紅、白」就是宣告,「灰、透明」就是註釋;
用pattern去匹配(顏色,長度),匹配成功就進行轉換。
而UP主的這個視訊能做到如此流暢,是因為他為原視訊的每一幀都生成了程式碼。
最後,讓這12萬行程式碼滑動起來,開頭那般的唱、跳、rap視訊就製作成功了。
即便如此,B站現場的小夥伴們還是嗅到了爆肝的氣息,比如評論區就有5級號提供了一個清新的思路:沒用專業團隊當素材,可能是因為UP肝了一整年。
於是,量子位帶著小夥伴們的好奇採訪了一下UP主NyeJu本人。
NyeJu表示,整個專案的完成其實只用了大概一週多的時間,畢竟12萬行程式碼不是手敲,而是生成的。
另外,NyeJu也解釋說,沒有選擇現在更火的其他素材,是因為蔡徐坤的素材比較乾淨,顏色數量也比較適中。
其他的素材都不是很合適,比如像「黑人抬棺」顏色就有點多,「bad apple」的話又太少。(本人對蔡徐坤沒有任何惡意。)
評論區也有盆友補充解釋了一下其中的難點:可以編譯通過我驚了。
對此,NyeJu說,其實專案一開始的底線就是能夠編譯通過,否則的話,VS Code的程式碼高亮會抽風。原理還是基於語法規則,比如const和static可以無限疊加,識別符號和字串可以任意長,根據這些去構造想要的顏色的長度。
One More Thing
所以,為什麼會開這樣一個腦洞?
在採訪中,NyeJu也給出了答案:
是受「何同學」最新一個視訊——《我用一萬行備忘錄做了個動畫…》的啟發,想做一個更厲害一點的。
另外,雖然展示給大家的程式碼是C++,NyeJu本人其實在日常的coding中用Python多一點,這個專案的C++程式碼也是用Python生成的。
最後,奉上完整視訊~
作者系網易新聞·網易號“各有態度”簽約作者
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69971123/viewspace-2695042/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 有點厲害!用12萬行程式碼堆出來個"蔡徐坤",編譯還能透過!行程編譯
- 六百萬行程式碼行程
- ??Mybatis原始碼我搞透了,面試來問吧!寫了134個原始碼類,1.03萬行程式碼!MyBatis原始碼面試行程
- 微軟釋出2萬行Linux裝置驅動程式程式碼微軟Linux
- systemd 程式碼已超 120 萬行!五年間翻了一番
- 大神方案|如何重寫一個萬行程式碼的類檔案行程
- 阿里釋出安全基建大圖 實現萬行程式碼漏洞數下降56%阿里行程
- 發現了一個標籤可用來輸出html程式碼HTML
- 從 Java 程式碼到 Java 堆Java
- 12個Flex常用功能程式碼Flex
- 從300萬行到50萬行程式碼,遺留系統的微服務改造行程微服務
- 如何將三萬行程式碼從Flow移植到TypeScript?行程TypeScript
- 手寫 30 個主流機器學習演算法,程式碼超 3 萬行,全都開源了!機器學習演算法
- 虛擬地址空間,堆疊,堆,資料段,程式碼段
- vs快速註釋程式碼,vs程式碼行數調出來
- 身為程式設計師寫一百萬行程式碼的感覺程式設計師行程
- 12 個用得著的 jQuery 程式碼片段jQuery
- 我的天!這是史上最爛的專案:苦撐12年,600多萬行程式碼...行程
- 封裝DataBinding讓你少寫萬行程式碼封裝行程
- 程式碼12
- 提高程式碼質量的12個技巧
- 12 個非常實用的 jQuery 程式碼片段jQuery
- 程式碼複審1234跟我一起來
- 共計 37.9 萬行程式碼,Rust for the Linux kernel 第六版補丁釋出行程RustLinux
- 寫了 50 萬行 Go 程式碼後,我明白這些道理Go
- 微軟週二釋出12個漏洞補丁程式 4個為高危微軟
- 直接拿來用 10個PHP程式碼片段PHP
- 記一次百萬行WPF專案程式碼的重構記錄
- F-35 戰鬥機的程式碼量達到 800 萬行
- 好程式設計師寫出來的程式碼,就叫好程式碼嗎?你錯了!程式設計師
- 15個原始碼語法著色來美化你的程式碼原始碼
- 開源者的自我修養|為 ShardingSphere 貢獻了千萬行程式碼的程式設計師,後來當了 CEO行程程式設計師
- 未來程式設計趨勢的12個猜想 命令列永存...程式設計命令列
- 耗時9個月,1.34萬行程式碼,這套分散式微服務架構專案,完結啦!行程分散式微服務架構
- 寫了 100 萬行程式碼的程式設計師身上發生了什麼故事行程程式設計師
- 如何管理好10萬行程式碼的前端單頁面應用行程前端
- 程式碼來構建一個簡單的compilerCompile
- 可以直接拿來用的15個jQuery程式碼片段jQuery