Wednesday 2 October 2024

被青梅竹馬抓來(略) (11):蝙蝠可以獵但不能拿來吃

Character design: @kuonyuu, Illust: @mid commissioned by forretrio. Skeb
Editing and re-posting are prohibited // 無断転載、無断使用禁止です

這個週末是個長週末,庫里斯正在為這幾天往地下城跑一趟作準備。這是之前答應蓋伊老師以換取對方合作在地下城帶隊的事。地點是王都地下城。這個週末是個長週末,庫里斯正在為這幾天往地下城跑一趟作準備。這是之前答應蓋伊老師以換取對方合作在地下城帶隊的事。地點是王都地下城。

地下城都沿著地脈產生而王都又是在地脈要點上建立,所以王都裡面和附近其實不只一個地下城。但是被叫成王都地下城的就只有一個,就是王都裡面最大的地下城,記載中王都當初就是圍繞著這個地下城發展起來。整個王都裡最繁華的地方很可能就是在地下城旁邊蓋出來的高塔以及從高塔幅射出去的一片建築群。

地下城之所以成為人們發展的基石,是因它能一直產出糧食皮毛到含有魔力的素材到魔核這些人們發展所需的資源。地下城被攻破的話就會失去價值,但留著不攻破的話就能對其慢慢收割。不同地下城的產出都不一樣,但是產出的價值未必與攻略難度成正比。

王都地下城並不是特別容易出產某種資源的類型,但它足夠大,出產數量、種類和便利程度都完全壓倒其他地下城。地下城淺層的地方成為了另類的農場,有足夠人手巡邏下幾乎沒有危險性,再往下被稱作中層的地方才是冒險者們活躍的地帶。人們開發了一條垂直通道從地面一直往下,這樣就不需要慢慢地迂迴走下去了。所有大型運輸都透過這條通道進行,可以說這條通道是人們可以在地下城裡面大規模發展的原因。現在這條通道的運輸能力接近飽和,已經有人著手研究開發更多垂直通道的可能性。

這條垂直通道一直往下,一直到達普通冒險者會出沒的盡頭,從這裡開始是地下城的深處。沒了中立人員的駐守和救援,也沒了便捷的垂直通道,進入地下城的深處的需時和難度都直線上升。地下城深處更強大的魔物能產出各種稀有素材和魔核,甚至是一些現代人沒法理解的魔法器具,這使得不少人冒著風險前往深處。在出過太多意外後,王都地下城的管理者開始嚴格地限制著使用垂直通道前往深處的冒險者,只有完整的資深遠征隊伍才會被放行。至於王都地下城到底有多深?沒人知道,至今深處的地圖還在更新著,還沒發現見底的跡象。

庫里斯這次要去的當然不會是這種遠征,否則他寧願欠上人情也只能拒絕。遠征花費的時間從一星期起跳而且風險也大,不報備偷偷去的話可能被當成失職。這次的目標是中層的一種暗屬性蝙蝠,因為有垂直通道的關係理論上只是一兩天就能搞定的事情,出了甚麼意外要回地面也很方便。

他有想過對方為何不對外發個委託或者收購單呢?最直接的可能性就是這玩意過於雞肋,用市價略高的價錢發委託根本沒人會接。急著用的話只能自己來。雖然蓋伊看上去比華萊里安、京士頓那種人老實多了,但他也可能想試一下自己的能力和風格。這一點都不意外,在大公會待過的蓋伊對合作對象應該很挑,包括即將合作帶隊的自己。不過他並不介意這樣「被測試」,不如說這在冒險界是非常常見的事情。實際來一遍可以看到的東西比單純名聲、等級這些豐富多了。

王都地下城旁邊的高塔就是冒險者公會總部,功能上可以說是其他支部的威力加強版。該有的功能比如任務大廳和訓練空間這些不用多說也有,而且還開發了專門照顧進出王都地下城的人們需求的業務,像住宿、餐飲、商店街等都可以在高塔裡找到。雖說外面也有不少此類服務,但高塔的地利優勢過於巨大,冒險者公會當然不會放過這塊肥肉。垂直通道就在高塔的後門外面,地下城的天然入口則在高塔的正門旁邊。一些全職冒險者在高塔裡租了個房間,不是在高塔裡休息就是往地下城跑,這一小片地方完全可以照顧他們的起居需要。

穿過大廳來到住宿區,那種冒險者們聚在一起的喧鬧完全消失不見。這裡跟「篝火」的豪華配置完全相反,處處透著實用的氣息,非常符合冒險者的風格。庫里斯拿出蓋伊給他的房卡,接待人員檢查過後很快就放行。嘛,冒險者要硬闖的話應該不是難事,不過大概沒人敢在這裡撒野吧。

「咚咚。」他在指定房間前輕輕敲了兩下門,房門應聲而開。探出頭來的是一個高大的男性和一嬌小的女性。

庫里斯舉起房卡表明身份,另一隻手伸出來作握手狀:「庫里斯,前冒險者,現於魔法學園……工作。」

男子握手道:「科尼,來自公會『銀雪兔』,冒險者,擔任前衛。」

女性則躲在男子後面怯生生地道:「梅莉……在『銀雪兔』擔任研究員,有時支援探險工作。」

三人從玄關進到房間裡面。房間本身空間不大,但是該有的設施都在。浴室比外面的旅館要大上不少,床也特別寬躺,很明顯就是為了冒險者而設計的。房間裡面倒是頗亂,一箱箱的東西堆在了房間角落,桌子上則散落著紙張和書本。

科尼搬開一些雜物,拿著三把椅子過來招呼著庫里斯坐下:「謝謝你今天來幫我們跑一趟。你應該知道蓋伊以前在『銀雪兔』當教官吧?這裡是『銀雪兔』在高塔的駐點之一。沒有小隊駐紮的話這裡就會被梅莉當成私人空間用,所以有點亂呢。」

庫里斯擺擺手說沒事:「每個公會都會這樣包下房間長駐在高塔嗎?啊、我都在王都以外的地方當冒險者,不太清楚這裡的做法。」

科尼稍稍皺眉但很快回到原樣:「因為方便嘛。即使公會總部就在地下城附近,在高塔多一個據點還是比較方便。這種基本房型的房租對我們來說也不是甚麼問題,而且梅莉很喜歡在這裡獨處就是。」

梅莉也插了一句:「這裡、很安靜……沒人打擾我做研究。」

「這次需要的魔石也是研究用途嗎?」

「嗯……每種魔物掉落的魔石都有點不同。這種魔石正好是我需要的。」

別人公會的研究細節他也不好追問下去。一輪寒暄過後他轉頭問科尼:「我已經看過蓋伊給我的資料了。時間有點緊逼,算上今天我只有三天時間。你們打算今天出發嗎?還是明天一早出發?」

「我們這邊隨時可以,梅莉也會一同前往,她只會負責檢驗掉落的素材。這個層數我們已經去過幾次了,由我來護著梅莉就好。到時抓捕的任務可以交給你嗎?」

「可以啊。如果你信得過我的話,讓我站前面也可以。」庫里斯提議道。普通的魔法師其實不一定會接受科尼的安排。要分心護著梅莉這個非戰鬥人員的話誰來保護同樣脆弱的魔法師呢?科尼本來覺得這樣把魔法師曝露在前方不太穩妥,但在知道庫里斯擅長風屬性魔法後就放心讓他頂上去。

「還有一個問題。蓋伊說你是個很優秀的魔法師,但我才知道你沒有在王都地下城活動過。這樣會有一點麻煩。」

「嗯?麻煩?」

「垂直通道你知道吧?用那個出入較深樓層需要許可,我帶上梅莉的話已經很勉強了。他們好像會另外記錄冒險者在王都地下城活動紀錄的樣子,你沒有在這裡活動過的話不知道會不會被擋下來。」

他掏出自己的冒險者卡片問:「如果這樣可以嗎?」

金閃閃的卡片讓科尼愣在原地。卡片上的資料和其他冒險者的卡片並無不同,無非是名字、性別、年齡、照片和註冊地。庫里斯的卡片真正不同之處在於那金色本身--那代表了註冊地的冒險者公會分部願意為其實力背書的證明。而且他的註冊地是身處前線的波恩,這張金色卡片的意義非同小可。

他笑著收起卡片:「那就好。還有其他問題嗎?」

「庫里斯先生……」科尼搖搖頭,但梅莉遞過一張紙來:「這是蝙蝠的構造和魔核的位置。可以的話請留手盡量不要打到魔核。我標示了其他能賣錢的位置……但大多都不太值錢。」

「嗯。」紙上標記著魔核在其背部往下一點的地方。不是在頭附近這點很有趣,但他的專長並非研究這種生物問題,不值得花時間胡思亂想。

科尼補充道:「這種蝙蝠平常都躲在非常陰暗的地方,在外面非常罕見。平時群居在巢穴穴裡不會隨便襲擊人,可是瘋起來就會整群出來攻擊。這些蝙蝠衝起來飛快,進巢穴打了就跑的難度也很高。牠渾身上下除了魔核以外根本不值錢。個頭太少沒有肉,爪子之類也沒有被當成素材的價值,所以根本沒有人跑去專門捕獵牠們。一直以來這種魔核的供應都是靠其他隊伍偶然打來的,每次缺貨都不知要等多久。我們公會倒是直接發了補貼讓我們在外面找找看,要不就委託冒險者幫忙。正好我跟蓋伊提起的時候他說他那邊有人很適合這個委託。所以拜托了,我們會按公價把報酬算給你的。」

「你太客氣了。我也是第一次接王都地下城的委託,請你多多指教才是。」

*

垂直通道並非如同字面般一個大型空心的通道,畢竟人們不可能靠飛的出入。這個通道由一堆可以推車的斜坡和一條螺旋樓梯組成。斜坡那邊只連接了會大量出產的淺層地帶,而樓梯才是一開始建成的捷徑,一直通到地下城的深處。兩條通道都被把守著,出入斜坡需要工作證,通過樓梯想去中層的則需要冒險者卡片。審核通過後繳交過路費就能拿到一個特定樓層的通行證,只能在指定出口離開。這都是為了防止樓梯被濫用的措施。

如同科尼預料一般,庫里斯用金閃閃的冒險者卡片補上了在王都毫無活動紀錄的不足。過路費並不便宜,看來也是防止被濫用的一環。他們拿到通行證便沿著樓梯走下去。樓梯兩側散發著幽暗的光芒,剛好足夠讓人看清前方的階梯。他們這次的目的地是27層,屬於中層中間的地方。這個深度並沒有到冒險者人跡罕至的地步,但是沒有賺頭的生意沒人接倒也可以理解。只要看到樓層的實際樣子大概就連在這裡狩獵的心思都沒有了吧:附近暗屬性的魔力特別濃厚,對冒險者的行動造成全方位的障礙,各樣非暗屬性的魔法的威力都打上了折扣。更重要的是光源比一般樓層更為微弱,依靠眼睛的話很容易被躲在暗影裡的魔物偷襲。駐守在27層外面的人員把樓梯出口處弄得特別光亮,使得魔物不敢靠近樓梯。只是這些光芒也只能照亮樓梯出口附近的範圍,只要轉個彎光芒就消失得一乾二淨。

在正常的地下城空間裡一些石頭會把魔力轉化成光,成為地下城的唯一光源。但是在這個充滿暗屬性魔力的樓層,這些石頭只能發出極為微弱的螢光,甚至不足以讓人看清前方的道路。帶路的庫里斯倒是沒所謂,風魔法讓他能夠隨時感知附近的空氣流動,相當於不用光的第三眼睛。但是總不能叫身後二人摸黑向前走吧?所以他也點起了亮光讓二人跟著走。

庫里斯想了一下,如果二人的搭檔真是單純輸出型魔法師的話又會用甚麼陣型前進呢?要同時保護兩人的話前進速度就會拖慢許多。考慮到這個樓層的魔物強度,應該會讓魔法師暴力開路吧?科尼只知道自己是魔法師但沒有任何覺得委託不能成立的表示,說明哪怕是這種配置對他來說也不成問題,頂多就真的慢一點。

在這種樓層主要威脅並不來自前方而是左右牆壁和天花板的角落。受暗屬性魔力干擾他的感知沒有辦法伸太遠,集中防範其他方位威脅的性價比更高。庫里斯的感知沒有放過任何一個死角,每次發現正在埋伏的魔物只要用風刃在影子上狠狠地劃上一下的話牠們便不敢跑出來。

「科尼,你還好嗎?」

「我很好,你集中在前面探路就好。前面第三個路口轉左,我們離蝙蝠巢穴還有二十分鐘。」

「嗯。」

一路上唯一一隻跟三人對上的魔物是一隻渾身漆黑的惡犬,眼睛閃著危險的紅色。牠沒有躲在暗處,而是直接趴在轉角處埋伏。庫里斯發現牠後通知科尼,後者很自覺地把梅莉塞到庫里斯旁邊並上前對付牠。

惡犬貼在地上作蓄力狀並發出低沉的警告音,但右手持著大劍已經擺好陣勢的科尼不為所動,一人一犬對峙良久,牠終於按奈不住突然張開嘴巴撲過來。牠的速度力量比一般的惡犬更快更強,黑色的身軀在陰暗的環境中難以看清,但科尼臉上不見絲毫慌亂。只見他橫起大劍攔截惡犬,「碰」一聲惡犬的鼻子撞在大劍上,科尼雙手發力一推便把惡犬推得老遠。

牠一個閃身從地上爬滾起來,轉眼又從另一個角度向科尼撲去。科尼一次次利用大劍格檔,不是正中牠鼻子就是把劍卡在牠嘴裡,總之就是完全不給牠咬人的機會。惡犬又嘗試繞過科尼攻擊另外兩人,但以身作牆正是前衛的基本功。每次把惡犬撞回去,科尼都有意把惡犬推向遠離兩人的方向。如果惡犬直線衝過來就只能一頭撞上科尼的大劍,繞彎又會花上更多時間讓他從容應對。

一大輪搶攻不果又發現科尼牢牢地站在二人前方堅決不上前進攻後,惡犬終於改變了策略。牠張開嘴巴卻不像要咬人倒是發出了奇異的嚎叫聲。這叫聲持續了不到兩三秒--不時何時科尼已衝到惡犬面前,在牠反應之前把大劍自牠嘴巴插入,終結了叫聲也終結了牠的性命。

「那狗狗的叫聲會引來更多同類,最好就是趕快把牠解決掉。」梅莉小聲說道。

科尼已經蹲下來熟練地剖開惡犬尋找有價值的東西,梅莉則在一邊點算:「這層的魔物皮毛都染上暗魔力……沒法拿去做衣服,而且狗皮也太小了。牙齒……可以用。肉……可以吃,但我們不需要。最值錢的魔核……咦?」發現魔核崩掉的她開始流利地抱怨:「就叫你那一下不要太大力了啦。都快崩成兩半,這樣根本賣不出去嘛。」不只是魔核,她清楚每一個部位的價值。難怪作為非戰鬥人員也會被帶去地下城。

「庫里斯,你不覺得今天很順利嗎?我們都快到目的地了卻只直面過一隻魔物。」科尼回到後方,一邊檢查地圖一邊問道。

梅莉點頭認同:「很多會偷襲的魔物……今天都沒出現。」

「有嗎?」庫里斯裝作甚麼都不知道:「說不定我們比較幸運?或者剛好有隊伍在我們前面掃蕩過了吧。」

「我比較擔心魔物跑光光會不會是頭目要出來了。」

「放心,BOSS出來的話我第一時間帶你們立刻逃跑。」

「剛才的惡犬……不太像是躲頭目的樣子。」

「也對,我們繼續看看吧。下個路口直行就是目的地了。」

眼前是一條非常狹窄的通道,本來就陰暗的環境變得更暗而且非常潮濕,天花板不時有水或者其他不知名液體滴下。科尼示意三人停下,地圖標著前方的死胡同是那些蝙蝠的巢穴之一。前方隱約傳來一陣陣怪聲,不時有一兩隻蝙蝠在三人頭頂飛過。如果進到死胡同裡面抬頭一看就能看到駭人的畫面:一大堆蝙蝠群居在天花板上,黑色的身驅掛在黑色天花板看上去就像一團團蠕動中的黑色物體。一層濃到濃到彷彿扭曲了空間的魔力保護了在蝙蝠們附近,若非梅莉一口咬定庫里斯甚至看不出那些蠕動的生物為何。

科尼:「這裡就是蝙蝠巢穴了。貿然動手抓捕會惹怒牠們,但如果只是站在牠們下方的話是安全的。其實在牠們老巢直接動手難度不低,你有甚麼想法嗎?如果不行的話我們可以先退出去來個守株待兔。」

庫里斯笑道:「放心,我已經想過辦法了。看我的~」

他向前走了幾步,確定自己能看到堆滿蝙蝠的天花板後舉起右手。隨著他唸唸有詞,一團能量在他手上逐漸成形。科尼和梅莉是是站在後方看著那團能量以可見的速度變得凝實,但他們完全感覺不到那團能量給外界帶來了甚麼影響。上面的蝙蝠同樣毫無反應,只把下面的庫里斯當作以奇怪姿勢觀察牠們的傻子。他手上的能量從霧氣般的白色慢慢變成液體狀,再變成淡藍色彈珠般大小的光球。當他感覺已經凝聚得差不多時,庫里斯伸出左手食指姆指成環把光球給彈了出去。

從科尼和梅莉在後方看到的景象是這樣的:蝙蝠本來發出的怪聲一瞬間就消失了,然後被別一種叫聲取代。叫聲聽起來更尖了,而且帶有一些慌亂。

--噗。

一隻蝙蝠毫無預警地掉了在地上。奇怪的是這個掉落的聲響很沉,完全不像飛行生物掉到地上的聲音。

噗噗噗噗。

一連串的悶聲響起,蝙蝠們像果實般落在地上。還在上面的蝙蝠叫得更大聲了。

庫里斯招手著二人快點進來收割。科尼和梅莉剛進去就感受到這裡明顯比外面冷,而且溫度還在快速下降著,一陣陣寒氣從上方傳過來。很快他們就理解到剛剛的光球是威力強大的冰魔法,地上的蝙蝠是直接被凍成冰塊而墜落。再抬頭看看天花板那群蝙蝠已經被一層白霜覆著著,之前的蠕動也大幅減少,大概是因為爪子被牢牢冰住了。

庫里斯滿意地欣賞著自己的傑作,但也不忘提醒二人:「把地上的撿走,去安全地方把脖子折斷確保牠們死掉。還沒掉下來的就不要想了,那些都沒凍死估計緩過來後肯定要暴走。我們撿完快點走吧。」

趁著二人在撿蝙蝠的時間他偷偷把手套脫了下來,手套左手食指和右手掌心位置的皮革已經凍得失去彈性。要知道這種物料的魔抗性已經特別高,他幾天前才示範過一般的火焰對這手套根本不痛不癢,說明了剛才那冰魔法的威力。

「還是有點勉強了啊。」

*

從地下城出來的時候外面已是晚上。地下城裡本來就不分晝夜,這裡晚上就跟白天一樣熱鬧。三人再次進入樓梯前同樣要領一個通行証,直接回到地面離開的話才不會被追加過路費。

三人回到高塔的旅館房間裡,庫里斯正看著梅莉精準地挑出魔核。那些凍僵的蝙蝠已經被去了頭,梅莉把牠們放進熱水裡泡軟,只要輕輕一刀劃在背上便能輕易找出魔核。當時一共有十隻蝙蝠掉了下來,只有一隻的魔核有所破損,大概是摔下來摔壞的吧。她從這堆魔核中挑出四顆最大的自用,剩下則是可以賣掉的。

科尼看梅莉已經把戰利品處理好便開始結算:「27層的一隻惡犬和十隻蝙蝠,加上今天的出勤費用……庫里斯先生,如果你信得過我們的話不如現在我就用我們的收購價把戰利品折成現金給你?」

「可以啊。」這點報酬不值一提,但是該收的錢還是要收。

「公會只補貼了我們請一個可以應付27層的冒險者兩天份的出勤費用,這份都留給你吧。這些魔核的品相都不錯,我在收購價上再加百分之二十給你如何?真是不好意思……先不說你的正職,我猜以前你光是出勤費用就比今天總報酬還要多得多吧?」

「毋須介意,我是抱著幫蓋伊一個忙的心態過來的。我也很久沒逛地下城了,該感謝你們給我機會才是。」

「蓋伊當我們公會教官的時候就經常強調魔法師心態上不能只會輸出,但能做到的都是少數。不愧是拿到金卡的人,今天跟你合作非常舒服。如果你有興趣回鍋的話務必請你考慮我們『銀雪兔』,我們算是王都有名的大公會,肯定會盡力提供讓你滿意的機會和價錢。」科尼遞上名片,職位是『銀雪兔』第二小隊前衛:「說起來,你說你在魔法學園教書對吧。可以透露一下你在教甚麼東西嗎?跟蓋伊一樣帶那幫公主少爺們去冒險嗎?啊對了,聽說學園來了個灸手可熱的新人一上來就教魔法科,你認識他嗎?」

「那就是~我啊。」

***

蝙蝠是不能拿來吃的的。(笑)

這篇算是對地下城的簡介吧,一個很簡短的委託。說到地下城,不知道有沒有人想過為甚麼地下城都要分層,而且每一層的地形都是人類可以通行的呢?這很不合理對吧?只要在Youtube上找一下就能找到許多在山洞遇難的故事,當中大部分遇難的原因都是進了不該進的狹窄地方而進退不得。

不論如何解釋,地下城也很難天然地長成適合人類開發的樣子,所以這都只能推給魔法了吧。長出來的環境都是模擬某一類生物的生長環境,而這些環境的大小至少容許人類出入,我只能這樣想了。其實這有點像寵物小精靈(Pokemon)?每條道路都有著完全不同的精靈出沒率而且非常清楚(clear cut),這隻只能在這邊抓到,另外一隻就只能在那邊抓到。雖然我完全不能理解草地和草地之間的環境差異為何大到精靈出沒率截然不同就是了。至於樓層問題,只能說每個地下城的約定俗成都不同。像王都地下城垂直通道能到達的深度,第27層就是指樓梯向下的第27個出口,並不代表27層的天花板向上必然就是26層。有些地下城每個地區被明顯分隔開來,那也會被當成一種分層。至於構造像大樓那樣有清晰分層的地下城當然也有,這種地方的樓層划分就簡單多了。

說到地下城的參照物不能不提地錯「在地下城尋求邂逅是否搞錯了甚麼」這本作品,那種超巨大地下城而且每層都自成一方世界的世界觀可算是業界的標桿。但是從現實的角度來看的話那種高難度戰鬥的頻率和往後的戰力通漲都高到讓人費解。縱然這一切都有眾神在推動的關係(祝福加上驅策),那真的是人類可持續地發展的地方嗎?比如說升級所需要的「自我突破」aka渡劫,從大數據來看假設在整個等級N的冒險者有一定機率在職業生涯期間升到等級N+1好了。用原作的話來說大半冒險者都是Lv.1,那我們假設升級的機率是20%好了。那Lv.2升Lv.3呢?應該沒20%吧?在維基上我隨便搜就有10位Lv.6和兩位Lv.7,已知歐拉麗只有兩位Lv.7,說明Lv.6升Lv.7的機率可能還不到20%。為了簡化計算我們假設升級機率都是20%好了,那艾絲的Lv.6出現機率就是萬分之三。這比例聽上去合理嗎?合理。但問題是我們看不到底層那幾萬位Lv.1和近萬位Lv.2呀!

當然我心中的參照物遠不只地錯這本,但如果要我點名的話我會推「嘆息的亡靈想要引退」吧。這本作品裡面的「迷宮」也跳脫出傳統認知的框架,描繪出各樣性質完全不同特色鮮明的迷宮,只能說不愧是馬斯塔。嘆靈這本作品正好讓我們思考另一個問題:冒險者的等級合理嗎?新人就一定要從E級或都等級一開始拔藥草嗎?我的看法是不會不合理,就像現實的技能檢定一樣。不過再往上冒險者的分工變得精細下價值難以估量,用往績去評級又不代表當下實力。我覺得官方機構沒必要背這個鍋,讓市場自己解決這問題就好。

最後我還想點名「泛而不精的我被逐出了勇者隊伍」這本。非常非常毒的退隊流,但拋開這點不談我覺得這本作品所描繪的公會系統頗為合理,可說是整本作品毒性最少的部分了。關於公會架構這一點日後有機會可能會更詳細的寫一下。其實道理很簡單:在這種金字塔裡面高等人材才是最值錢的,組織的發展都應該圍繞著這一點展開。

本章描述的冒險很短也很平淡。在我看來這才是冒險者的常態--大家是來賺錢過活的,不是來在死亡邊緣尋找未知和剌激的。後者可能有,但必然是少數。地下城裡的確埋藏了各種危機,所以充分的準備、隨時警惕的心態和危機處理都是對冒險者來說非常重要的特質。一趟旅程不出意外不單是因為運氣足夠,而是因為大量的準備把出意外的機會壓了下去。正如庫里斯上面所示範的一樣,在路上非常順利是因為他把路上的魔物偷襲的機會都不動聲息地排除了。有沒有可能除此以外他還下了更多連我都不知道的功夫呢?至少我們看到他的其中一面,也解釋了為何他作為冒險者受歡迎的原因。

其實大家可以想一下:這一趟之所以才會跑得如此輕鬆其實是因為科尼和庫里斯的規格都遠遠超出了「可應付27層」的等級,根本是用大砲打蚊子,如果想用合理價錢請這兩人來抓蝙蝠的話絕對要虧死。其中的證據就是科尼覺得只要有魔法師幫忙這一趟便能成事,沒想到蓋伊請來了一尊大神。如果把這個三人組合換成兩名普通「可應付27層」的冒險者,這個委託又會以何種形式進行呢?

最後又是委託圖的環節。大家有發現本章庫里斯的大招很像第9章裡いのた老師的插畫嗎?我的確以是那張插圖為參考把場景給寫下來的。頁首的是mid老師的委託圖,他施放風魔法的時候大概就是這樣子的吧!這次就只放一張好了,因為最近委託的頻率變低了(望)。

Sunday 22 September 2024

Thoughts on CTWC2024


I watched 2020-2022 CTWC finals live. In 2023, I was 2 months late before Youtube started pushing videos to me.

On 2024 September Youtube started pushing videos to me again. hmmm...CTWC? The grand one not regionals or masters? I look into it and it really was CTWC. The videos were like 8 days old and had 40K views, contrasting to some of the greatest finals with millions of views. What happened?

It seems like they are finally not a part of another retro gaming event in Portland. I guess it is not easy to find a venue at affordable price, so they had to change the time as well. CTWC 2024 was actually held in CA early June, so I am late by almost 4 months.

Questions immediately arose: why didn't I know the changed schedule from the end of CTWC 2023 all the way up to now? And did the attention really dropped by a lot?

2023 CTWC final accumulated 350K+ views in 9 months and semis got 50K+ and 100K+ views. 2024 finals got 55K in 2 weeks and the semis got 12K and 17K in 3 weeks. Granted the livestream on 2024 day 3 accumulated 140k+ views, but it does not seem like that CTWC 2024 surpasses the 2023 one -- before you realize the 2023 one was actually much worse than all the previous ones. 

Look at the viewcount for the finals of each year. 2022 got 800k+, both 2020 and 21 at around 400k. Then further way back? They were all counted in million. 2019 at 3.6M, 2018 at 19M, 2017 at 1.4M, 2016 at 13M. 

Instead of asking "is the popularity been dropping recently", we know the drop has been there for a few years already. But why?

My understanding is the fast growing period of classic tetris, has come to an end. It did not start during the pandemic, but way back from 2016 where top rankers shifted to the next generation as well as play style (DAS to hypertapping). Lots of memes (Jeff/boom/neck and neck etc) entered social media drawing large attention, and every final match-up is a story-teller. 

The pandemic is an unique booster to the growth. Covid really brought players into the game instead of just watching the top rankers play. It applies on all game categories including retro gaming, speedrunning, and of course classic tetris despite the drop in views. The surge caused another shift in generation by another shift in play style (hypertapping to rolling), and the result really wow'd the general public including the news when Blue Scuti 'defeated' the game.

When all the growing factor finally faded out, the decay is then inevitable. One observation is the lack of new challengers to the top rank. Look at how we have different challengers every year from Jones to Joseph to Eric/Fractal to AlexT. New names like Blue Scuti immediately jumped to the top. One may argue that this is the result of new play style coming up but new, in particular young, players do have the ability to do that -- look at Osu! as an example. 

When you check the 2024 participants list, do you spot any new top players? Not really at the top level. A possible reason behind is the short separation between the last and current CTWC, but it does give a warning sign.

Together with the stagnation of player base growth is the stagnation of play style when "the game is solved".

I gave the warning long ago because it's simply there. They avoided solving the hypertapping meta by rolling, but there is surely nothing superior to rolling right? The physical limit is always the ultimate constraint after all. When I looked at the highlights this year, top players are more optimized -- more aggressive to the point that they are still safe most of the time. But to non-professional audiences it's nothing new, and an exhaustion in interest is the problem.

Another problem with classic tetris is, the game is still mostly solo even in a PVP set up right now. It is about you performing better more than beating your opponent -- think about speed climbing. Would you aim for 5.00 seconds just because your opponent's personal record is 5.05 seconds? No you would go for your best possible time.

In the distant past (DAS/early hypertapping era), players decide their aggressiveness by watching the opponent's progress. This is however less significant now. Players are so aggressively optimized at Level 18 anyway. Then in higher levels the same thing happens where they know they can keep the stack up to a certain height and is still mostly safe. Extreme aggressiveness only occurs in desperate situations and they still ended up losing the game 99% of the time playing too aggressively. You can take that as an equilibrium point in game theory. Players have found the best action regardless of what your opponent is doing. 

Another reason for a mostly solo play is, player can hardly react to the opponent's screen post Level 29 where score matters the most. Some players still manages to give a peek, but reacting is another matter. They can perform more than just survival now in Level 29, but the speed leaves them very few choices in general and it's just too hard to adjust to the opponent's score. 

What's the consequence of that? Less interaction means exponentially less variation. It's just like two players playing at the same time, and it wouldn't make a difference if the two are playing independently on their Twitch channel. At the same time, there are monthly events, masters events, and loads of around the world event each year. With similar content coming up again and again...it's fair to say spectators just got bored.

Things are not looking well for the Classic Tetris circle but there is no need to be too pessimistic. The community is still growing and well you know, retro gaming fans are super loyal especially when there isn't much competition from other retro games. Look at the early days of CTWC, those players lasted very long even when they drop in ranks. I see CTWC or classic tetris in general a sustainable communities and will be around for very long.

Remember the suggestions I proposed last year? To widen variety and bring fresh tastes to the game new formats shall be developed. Multiple game rulesets and multiple tournament rulesets. They have been hosting 2 matchups at a time. How about a 4-way battle each time? Top 2 of each battle gets a heart subjected to 1v1 deciders. I don't know if it works, but I think it is time for a change.

Classic tetris is something I enjoy watching. It's fun and immensely deep. However one must understand that lots of games, or retro games, can be very fun and deep as well. It is fortunate that the community took their chance to flourish, but the future is not so obvious.

Tuesday 10 September 2024

Tax and players' behavior in games

It's been a long time since I last (seriously) tried a MMORPG. Games like MapleStory, Fantasica, AventureQuest (does that even count as multiplayer?)...all sound like distant memories. But if there is a single thing that always trigger my curiosity that would be the economy inside a game. 

I want to talk about trading models.

Free trading is often too much to ask for, not only because game developers are greedy, but also in consideration of barring unfair advantages from unintended ways of gaming. Newbie perks for example, are usually untradable or otherwise players simply register loads of new account and trade all the perks into the main. Another common limitation is that accounts can't trade before a certain level/requirement is met. This is also to increase the cost of creating multis (multiple accounts). 

We always talk about the cost, because in the world of economics that decides whether a trade would happen or not. We know we can't stop all multis however the restrictions we imposed, but we can increase the cost of doing so. A real example is the embargo to Russia. While countries like Hungary and India still sneaks electronics through, the total cost of going that way is much higher than the usual route inside EU. It is not going to destroy Russia's economy overnight, but it's slowly wearing it down. 

Level requirements are temporary. In a longer term the cost is lifted by a simple way: tax. Tax is one of the three unavoidables in one's life, and you can't even avoid that in games. Some tax is indirect like equipments are fixed onto you once you first equipped it that costs either in-game currencies/items, or items requiring real money to clear the status before the equipments can be resold. A more universal approach is to tax every trade though.

Why tax though? Several reasons are clear:

To reduce arbitrage. The lower the trading tax is, the more profitable trading would be, defeating the purpose (supposedly) of the game. With the tax imposed people facilitate trades only if it is profitable enough, so they can focus on other more meaningful things in the game. Trading will be less frequent with a larger spread, but it won't go away because the price is limited to where arbitrage exists after the tax. 

To encourage players to try themselves. Market is put in secondary position and players can earn what's in the market by themselves, knowing that the market price is at least the tax amount higher than the market (agreed) value. If we are making a RPG there is no point having players stuck with a toxic market (but to be fair there will still be market makers even with tax).

To tighten money supply. There is a steady influx of currencies from battles, but demand for some items are likely one per players only hence constant over time. It is necessary to reduce money supply to keep items affordable and steady. Of course depending on the market it may not be the most effective way but certainly part of the plan.

The next part is how do we value so as to tax a trade? This is a fundamental reason why accounting exists and there is no way for us to answer that in full.

Luckily, game economics is much simpler not only because a failed system isn't likely to cause a collapse other than reduced trading activity (unless you creates a hyperinflation). 

Another reason is that in-game items are homogeneous. If a monster drops a certain item, your drop yesterday would be the same as my drop today. Every single item of the same type is equal regardless of ownership and time. Remember one of the important role of the government? It's standardization. It is costly to run a council regulating dentists but it is worth it if all citizens only visit chartered dentists that probably won't kill you in operations. Inside a game there is no need for standardization because it is automatic. The value of items does not depreciate over time and trade. All we need to consider is that finitely many item types and the corresponding market.

Very long time ago when I was playing Fantasica I wondered if it is possible to measure imbalances in trades so to catch trades involving real money. That was such a naive thought because (1) the devs probably like these trades although in theory they should not allow so (2) it is much harder to value items than one may have thought.

Below let us dive into a few models of trade taxing, and we will see how it works in each one. One very important note is that for each of the models I mentioned, there are existing games running in that way. 

(Apology for using $as dollar sign because the regular one would trigger the LaTeX script...)

1) Purely money based tax

If the game taxes monetary transaction only, players would go back to bartering. In a real society this might be complicated but in a game things are much simpler. The value of each item can explicitly be calculated with the only uncertainty being human effort input (or imperfect information for players who don't bother).

For example, a certain sword takes 200 pieces of copper to craft with 50% chance of success. The average cost would then be 400 pieces of copper, and we expect the price to be above 400. If the market price is at 500 pieces of copper it represents that the market agrees the effort is worth 100 pieces of copper.

Suppose now a piece of copper is worth $10 in-game (if recycled) and the tax is 10% on currencies. What is the expected market price of the sword? 

First the copper is likely to be sold at $12 or above because $11 yields zero profit. If the sword price is above $6666 players may as well buy copper directly from market, craft themselves and sell the sword because $6666 is $6000 post-tax equivalent to 500 pieces of copper. 

At the same time, there will be players who prefers to gather the copper by themselves. Assuming their valuation on copper to be $10-11 (post-tax revenue by selling copper), they are likely to sell their sword at $5500-6100. We expect the market price of the sword to hold within the range of $5500-6700 then. 

On the other side...you will see traders on the side, selling you the sword at the price of 500 copper. You can either gather them by yourselves, or buy that amount from the market at $5500 which is cheaper than any monetary deal out there. Furthermore you could even counteroffer maybe 480 pieces of copper because if he sells the sword on the market at say, $6000, then the copper-equivalent he receives post tax is 450-490, both less than the market value of 500. By trading with you at 480 pieces of copper, he is effectively buying copper from the market at $11.25 apiece, which is not bad of a deal. 

What I illustrated above is a typical example of understanding surpluses on both sides. The idea is that bartering is beneficial to both parties and there is no reason not to do that. For more complicated production chain or interactions between multiple items we could see chaotic oscillations, but in overall the general behavior is clear: bartering clearly avoids all tax. 

2) Items taxed at fixed valuation

The devs ("government") isn't happy because bartering avoids all taxes. They decide to tax on every items traded at the given valuation -- the vendor price.

Players are of course free to sell items to NPC. Guaranteed, this is the lowest price they can find elsewhere. If an item is sold lower than the vendor price, they will be bought and sold to vendor for arbitrage. Therefore we know the market price is always above the vendor price (+tax in fact).

Trash items with no further added value, the market price is likely to be pinned merely above the vendor price. However valuable items that are traded high already, wouldn't be affected by this taxation much. For example a ruby may worth $100 upon recycling, but it is also a key material to craft a highly sought necklace with magical effects so it is sold at $1000 in the market. Upon trading a tax if $100 * 10% = $10 per ruby occurs which gives an effective rate of 1%. Sounds bad to be positive but not really significant most of the time.

In fact, the existence of such item helped us to avoid taxes in general. Now that we know trading ruby as above gives an effective tax rate of 1% we might as well just use ruby as a trading medium. Suppose I am selling you the sword worth $6000 pre-tax. I may as well pay using 6 rubies. What about the $60 tax? Just like the example in (1), it's even better to ask the sword seller to return $200 pre-tax and it's still beneficial to both parties.

Do you still remember the definition of money? Can I take ruby a type of money in-game? Let's check the the list one by one. Fungible, durable and portable? Check. Acceptable? In a liquid market yes. Divisible? Partially, but the small increase in transaction cost won't harm. But the last one...scarcity failed. Ruby is an item that can be generated in-game over and over again and limited supply is not guaranteed.

Yes, we know ruby will be consumed in the form of turning into necklace, but the supply is unknown. It is possible that more players go and grind rubies at higher price, but other reasons are well possible like associated supply or simply because more players joined the game. The unpredictability of price makes it hard to become an alternate currency.

Like rubies, there are so many candidates as money but players only need one or two of them. They look for the best substitution where supply is really limited. One possible approach is real money associated items -- remember Fantasica? Time Elixir and Potions are the de facto money in game (forget about coins that are useless), but it can be bought at the rate of 1:1 USD. Points, memberships,...these are the ideal currencies. One problem though: players are often not allowed to trade these because devs don't want to get into trouble of money laundering. 

So, another approach is to choose items that are hard to craft, meaning there is no arbitrage by crafting the item. Like, if you can craft a ceremonial sword that is useless in battle but can be shown on your character's back using 1000 pieces of copper ($10 each from our above example). We estimate the market price of the ceremonial sword to be something like $12000-14000, but no. The observed price of the sword is pinned at around $10000-10500. The lack of incentive to craft and recycle makes sure that the price is rather stable. In case the price goes out of the range, market makers will swiftly produce or recycle them to restore the balance.

Does it sound like stable cryptocurrencies? It's because they works in an almost identical principle as well.

3) Item taxed at average market price

Can you imagine your local tax authorities knocking your door asking you why are you undervaluing your item sold? Yes, the devs are now upset and wants to make sure everyone gets taxed fairly. 

Now other than the vendor price there is also a market average price, possibly a VWAP over the past n days. Now ruby with a market price of $1000 is taxed at $100, possibly more because upward spike is usually much higher. But the players are ready to strike back.

Remember, players observe the market but they trade personally. That means, trades are not necessarily following the highest bid and lowest ask. They did so because that's the most market efficient way, but since the devs are making them unhappy they are going to do the same thing to the devs too.

We pick a rarely traded item and create enormous amount of cheap trades, by such we can fake the market price and the taxing system. To be honest, at this stage most players would choose to go with the tax anyway. The game must be pretty generous to keep players around despite the harsh tax, no?


How about setting a clearing center out of the game? Instead of using risky in-game currencies, we just put the money into one central bank. Any monetary transaction is accounted in the clearing system but not in-game until they withdraw from the bank. In that way the money is only taxed in depositing and withdrawing but not in transactions. Items are still taxed -- this is unavoidable because the item must from one side to the other.

It surely works, but for what motivation would you do that? If it charges real money then instead of game devs the tax authorities is coming for you now...

4) Shut down personal trades, market with ask-bid pairing

Sounds harsh but look at steam, many games are already doing that.

Is there any loophole left? In theory not because the market is efficient, but in practice, it depends on how competitive (or in gamer's perspective, toxic) the market is. 

In the world of option trading, you may find an option with bid/ask of $3 and $7 when the fair price is $5. What if you sell at $4? Your order will be filled immediately and market makers won't even thank you.

There must be many independent markets in the game where no one ever visited. For example a sword can be upgraded 20 times, each of the 21 tiers are treated as different goods. The most popular ones must be the 0/20 one and the 20/20 one, followed by 1/20 then 2/20 etc. But what about 14/20? It is likely that no one ever crafted a 14/20 one for sell, and no one is going to buy a 14/20 one. 

In an efficient market, there will be bots watching at every single item at any time. If you makes a silly offer it will immediately be filled. But in reality, games are likely not that competitive and that 14/20 sword market will be up to you to transform. 

Large scale trading may not be possible because (1) that may attract others to look into that market (2) items corresponding to these market must be very scarce that the supply does not support that, but it can be utilized to reduce tax involved.

If I want to get a 20/20 sword, it'd be nice if someone is selling a 14/20 one at low enough price where it's beneficial for you to upgrade the sword by yourself...and then the devs starts to appreciate the system where upgrading weapon comes with a risk of destroying the whole weapon.

*

And that's it!

Although we have discussed player behaviors against different models, I shall emphasize that just like our discussion in (4) what happens actually largely depends on whether players act collectively competitive. And, this is NOT the case in reality really.

What that means is, instead of reading above to learn about player behaviors, this is actually a guide to earn from those less sharp in trading! I hope you will enjoy that. :)

Thursday 5 September 2024

Kernel of inner products

Hello there. Welcome to the new semester. Here is a warm up question for those who aren't ready yet...

Q1. Consider two inner products $\langle \cdot , \cdot \rangle _1$ and $\langle \cdot , \cdot \rangle _2$. If $\langle x, y\rangle _1 = 0$ iff $\langle x, y\rangle _2 = 0$, show that $\langle \cdot , \cdot \rangle _1 = c \langle \cdot , \cdot \rangle _2$ for some $c>0$.

The question emerged when I was drafting an assignment for a course on intermediate linear algebra (with a funny coincidence that the biggest note project I have done here is precisely that). It comes from an old problem book but the moment I saw the question it caught my eyes firmly.

Have you figured the solution already? If so, reveal the answer as below.

Monday 2 September 2024

古早遊戲BGM巡遊(8): Morning Music

今天要介紹的又是一首嚴格來說不是遊戲BGM的樂曲。

Morning Music,有聽過嗎?或者說,有打過嗎?


現代遊戲玩家接觸這首的渠道多半來自Nostalgia,老一點的玩家也有可能從Keyboardmania聽來。

這首歌聽上去就像朝日的陽光柔和地照在玩家身上,用管風琴來表達的話那種巴洛克味道簡直濃到不行。可是這樂曲真的就只是作出來當音遊曲嗎?當然不是。

1985年不算是電子遊戲盤古初開的年代,但也算原始時代了。最古早的電子遊戲簡單到用一塊電路版就能搞定(試想想簡單遊戲其實小到一個boot sector就夠了),但隨著遊戲複雜化這種堆電路的方法開始不行了,他們必須用某種方法把資料給存起來。

當時Konami選擇的是磁泡(Bubble Memory),所以才有了Bubble System的名稱。可是為甚麼Bubble System要有專屬音樂呢?原因很簡單,讀取這種媒介很慢。把遊戲給抄出來要一到兩分鐘的時間,為了不要讓機台看上去當掉,Konami加了這樣一首歌和99數下去的倒數,這樣就能安心看著它開機了。這種媒介要預熱才能用。於是在天冷的時節裡你還能看到這樣的畫面,前面先花兩分鐘預熱,後面的morning usic才是讀取的環節。

光用聽的就覺得這個媒介有夠麻煩,當時的理由是「比磁帶好」……可是當ROM普及化的時候這個媒介就迅速從麻煩低效變成一文不值了。Konami在BS(嗯……)上面推了幾款遊戲便草草收場,不過Gradius和TwinBee等遊戲都頗受歡迎,可見Bubble System就只是系統設計的失誤罷了。

選錯硬件導致泥足深陷的事在當年並不罕見,Konami只是受害者之一罷了。單說遊戲界就有16/32/64-bit之爭、卡帶vs光碟之爭等等,每次做錯決定就會讓廠商輸到整個世代甚至直接倒掉。不過對玩家來說,硬體的多樣性反倒能滿足市場的各樣需求:不同位元數能做出不同樣式的遊戲、卡帶便於攜帶也能夾帶私貨做出像Gimmick!那樣音效炸裂的遊戲或者黃金太陽那樣外置硬件獨創另類玩法的遊戲;而光碟就主打標準化……還有易於複製(並沒有)。這是屬於那個年代玩家的浪漫。還記得可以透過焊接魔改的主機嗎?

言歸正傳,所以morning music不怎樣算遊戲BGM,至少元祖版本是這樣--它不是遊戲裡面的BGM。不過,要說它是遊戲系統裡的BGM的話它可說是實至名歸,甚至是獨一無二。很難想象,一家音樂如此內行的公司,到底為何可以在管理決策上面做得完全一塌糊塗。對,說你就是你Konami……

Sunday 18 August 2024

IMO 2024 quick thoughts

Wow I thought IMO is in August. Is that a sign showing high school math is no longer in my range?

Q1. I don't expect anyone else to notice that floor function related problems is one of the most frequent type of questions appearing on this site but this is indeed a fact, so naturally I like this question a lot.

The integral case is clear: $\sum i\alpha = \alpha n(n+1)/2$, so it works for even integral $\alpha$ but not odd -- note that it must hold for all $n$. Now what about the decimal case? Well, notice that there are $n$ floor functions which means the summands is at most $n$ away from $\alpha n(n+1)/2$. If we choose $n$ so that $\alpha (n+1)/2 \approx m $ is almost an integer -- some fractional approximation here -- we can show that
$|mn - \sum [i\alpha]|\leq |mn - \alpha n(n+1)/2| + |\sum (i\alpha - [i\alpha])| \leq \varepsilon + (n-1/2)$.

Scrolling through the AoPS solutions I feel like my approach is overly analytical (which again, is natural), because it is actually easy to find an explicit $n$ for that.

Q2. Oh...number theory that I can solve. It is fun that both Q1 and Q2 contain conditions to hold for all large enough parameters, then the key is to pick the critical number that actually works.

This is a nicely constructed question, but the "key" is clear when the motivation is grabbed: you want to reduce the power into something $n$-irrelevant. There are a few choices like reducing it to (1) power one but that is trivial (2) power zero which does not help... and (3) power minus 1. In that case we are looking at $(1/a+b, 1/b+a)$ which gives a common denominator of $ab+1$ where a nice characterization arises from here.

Many solutions started immediately proceed to show that $ab+1$ is a power of 2. It works of course but only in the refined final answer. To me it is still easier to start from the traditional Archimedean approach.

Consider a simpler version where $(a,b) = 1$. The key step is to notice that we can actually tweek the gcd terms as follows:
$(a^n + b, b^n + a) = (a^{n+1}+ab, b^n+a) = (a^{n+1}+ab, b^{n+1}+ab)$.
And now, the terms are ready to be subtracted each other:
$(a^{n+1}+ab, b^{n+1}+ab) = (a^{n+1}-b^{n+1}, b^{n+1}+ab)$.

Suppose the above equals $g$ for large enough $n$ and $g$ admits a prime factor $p$. The first term implies $a=b$ mod $p$. For the second term, choosing $n+1 = 2$ mod $p-1$ gives $b^2+ab = a+b = 0$ mod $p$. Since $(a,b) = 1$ the only possibility is $p=2$ with $a,b = 1$ mod 2. 

We now know that $g = 2^r$. i.e., $(a^n-b^n, b^n-ab) = 2^r$ for all large enough $n$, but that sounds counter intuitive because we could certainly expect some coincidences where the gcd is more than $2^r$, say $2^{r+1}$.

It turns out that you do not need to go very far away because mod 4 is enough. If $4\mid g$ we know that $a = b = 3$ mod 4 but then the GCD clearly oscillates between 2 and 4, so $g$ must be 1 or 2. From here the term $ab+1$ kicks in. Take $n = k\varphi (ab+1)-1$ which is of minimum 2, it follows that $ab+1=2$ and so $a=b=1$ is the only solution. The case where $(a,b)\neq 1$ is similar.

I really wonder if there is a reasonable solution without the use of $ab+1$. One possible approach is to argue mod $2^r$ for all $r$ to force $a=b=1$ mod $2^r$ for any $r$ which would lock them at $a=b=1$. Some field theory would be handy, but certainly not expected at this level.

The author says that the problem arose from a CS assignment. Although we do not observe any higher insight behind this is still an elegant number theory problem.

*Update: I suddenly realized my attempt of using alternate powers is not too bad at all. Taking $n = k\varphi (a+b)+1$ we actually reduced $a^n+b$ and $b^n+a$ to $a+b$ -- using the same argument we show that it must be a multiple of $a+b$ which is at least 2, locking $a=b=1$! Is that too clever to be correct...?

Q3. Wow, a combinatorial question hidden behind algebra. This is an interesting one and is probably the third question in a row I said that. The solution given in AoPS by mapping it on $\mathbb{N}^2$ to show boundedness hence periodicity is as elegant as you can get, and I managed to write down full solution the second I saw that. Anyone else?

Q4. Ohoho. A geometry Q1/4 means 7 less points for me.

Reading through the solutions I do have chance if I stare at the problem for 1 hour plus, but this is not going to happen right now. Complex bashing is still good up to this level of geometry questions...but what about harder ones?

Q5. I can't decide whether this is a combinatorial/game theory problem or just an algo problem, really. It lacks the taste of past questions where you find invariants/intrinsic structures that solves the problem. The question really is about finding a single, simple algorithm that works. It takes me longer to find prove lower bound than to find a solution.

It reminds me of SIMC which is also algo heavy but man this is IMO...

Q6. Functional equation is always amusing...and this time it returns stronger and harder. A family of functions based on an "OR" condition, and the question asks about a harsh character of the family. Definitely exceeds my ability to solve in a few hours, but this is something I am willing to try -- so no comment here I guess ;)

In overall I would say my solvable problems are very much to my taste and strength, but I would like to see a more balanced/classical setup. 

I asked for a NT Q6 but that did not happen in 2024 either -- even worse we are hit by a truckload of "easier" NT-algebra problems. I don't know what others might think but easier NT problems are usually disappointing than anything. Q5 is a huge upset, I entirely do not expect such question in IMO.

Oh well, we will see again in 2025.

Wednesday 7 August 2024

6/8/2024: Crossover

晚上十一點的機廳裡。

機廳坐落在熱鬧年輕的市中心裡,交通十分便利,到處都是餐飲店。只要到了下班時間--不,只要中午過後這裡便已經擠得水洩不通。可是只要到晚上十時半,所有人就像是約好了一樣陸續散去,留下空蕩蕩的大廳。明明這機廳一點才關門,為甚麼大家都急著走啊?那些在九點高峰期要排兩輪的玩意,現在不用排隊就能隨便玩。

背後的原因說起來也簡單,大家要趕著尾班車回家。可是反過來說的話,只要不用趕尾班車不是就不用趕著走了?

少年少女就是利用了這點,成功每個星期數個晚上霸著這台新進的DDR。載他們回家的不是鐵路而是巴士,尾班車在零時十五分,他們還有一小時時間。

連鎖機廳的氣魄就是不一樣,完全不用吝惜電費。DDR機台兩側和後方都有隔的的膠幕,但冷氣依然從機台後方灘進來。兩台工業用風扇、兩個籃子、放水瓶的支架、USB截取卡……你能想到的設施一應俱全,此刻只為兩人所用。

畫面上顯示只有P2那邊在玩,歌曲是新出來的蘿莉神。天知道Konmai是怎樣想的,為了一個看上去就像是抄中二機台的新音遊而掃入大量的VTB向歌曲版權。把這些歌同時發到現有音遊上對推廣新音遊不知算不算好事,但對老玩家來說有新歌肯定不是壞事。只是這些版權曲的版權到期時玩家會怎樣抱怨,那又是另一回事了。太多歌曲前車可鑑:蛋糕舞、獸娘……如果到時候一口氣下架二十首歌的話玩家會暴動嗎?

蘿莉神的譜面很有趣。激譜面是14,在14裡面偏難但沒有很離譜。鬼譜面反倒是更簡單的12等。看到這種反差組合的老玩家第一反應大概就是Konmai又在搞事了吧?smooooch・∀・的鬼譜面也是比激譜面低的10,但整首都在轉圈圈,打起來完全不像10。蘿莉神的鬼譜面上有shock arrow的標記,但大家都知道這個坑絕不會幾個SA就完事的。果然打開一看,這首說是12的譜面塞滿了各種大跳、突然的的加減速、交互打法……還有八分十二分縱連。對應的DP譜面看上去是比較像羽衣跳舞的步伐,但放在SP上只有一個字的感覺:難。用兩個字那叫詐稱,用三個字叫大詐稱。

可是為甚麼少年現正為了這樣一首12而苦戰呢?就算這首是難,那也是相對12而言而難。把等級改成13的話這首就算不上詐稱,更別提比鬼譜難得多,的確是14沒錯的激譜面了。12或者13等對少年來說連熱身都算不上,就算放上Flare V的限制也一樣。

除非……少女給少年下了某種額外限制。

不是把少年常用的Boost選項換成Brake或者把Note顏色換成Flat之類遊戲選項改動,也不是在少年身上貼上甚麼可顫動物件之類的可疑情趣。

少女坐在P1的邊上喝著剛剛按出來的烏龍茶:「你又不小心單腳硬抗了。」

少年喊冤:「我才沒有……啊啊啊啊!!!」畫面上彈出Stage Failed的字樣。剛剛少女一句過來,少年為了回想自己哪一腳踏錯了而忘記留意加速滑條後面接著SA,被「電」到後連miss幾個當然就直接掛掉了。

結算畫面下方顯示六顆星,加上這首一顆星就是七顆,但這首已經是3rd stage。本來少年這首也打過去的話就能達到一道裡面拿九顆星進extra stage的目標,現在又要從頭來過了。

沒錯,少女叫他乖乖練交互不要老是用單腳在那邊轉換了。

「我知道你連chromatic bust和Lightspeed都可以這樣硬過啦~可是你HyperTwist不就只能開random過了嗎?到時候你要打Paranoia Revolution怎麼辦?Over The Period呢?你現在刷13 Flare IX這麼痛苦不就是因為一碰到要交互的譜面就自亂陣腳了嗎?」這一通連珠砲發下來,少年只得照做。本來習慣了各種17連發的他只好回去從12和13打起。

12等的譜面不代表譜面沒有交互,只是沒有十六分的交互而已。相反譜面作者可能覺得八分音可以逐個打沒有交互的必要,這樣做出來的交互反而更多。或者這樣想:要堅持用交互的話不但可以在12等找到交互,在7和8找到交互也不奇怪。

比如→↓⠀↓←的微縱連。金框的跳板比起以前的跳板更為敏感,所以縱連在近年出的越來越多,比如び;也有在連打裡放縱連的,比如The World Ends Now。少年對這種微縱連最有印象的是那他打了很久才蒙過的Avengers。在前面的慢速段就很多這種2-2連。想要滿血進到最後的高速連打的話這些較簡單的部分就不容有失。要較真的話少年當然不會打不動微縱連,但他只想用最省力的方式打過去。右腳尖點右邊後腳跟點下,半拍後用右腳左腳理所當然。這種打法當然沒錯,但看上去第二個下用左腳打真的順很多。那為甚麼少年不這樣打呢?在他的認知裡左腳打下就代表右腳打上或右,因為左是交互,下是縱連。讓他左腳打下的話要不試圖也用左腳打第二個下然後因為發現要右腳打左而大腦當機,要不就直接卡住miss掉一串。蘿莉神的→↓⠀↓←沒有Avengers那麼兇險,但Flare V也不是吃素的。以少年的準度只要miss三四個大概就過不去了。

又比如從後方交互的處理。幾乎從不交互打的少年唯一會交互的情況是左腳打下然後右腳打左,就像Elemental Creation裡面那樣。可是Elemental Creation後面不也有右腳打下然後左腳打右的嗎?很抱歉,面對這個組合少年後選擇兩個都用右腳打。右腳本來就比左腳靈活,肌肉記憶固定下來的守備範圍就是右腳多一點。用右腳點兩個的例外是當你看到右腳在左邊時下一個箭頭卻在右邊,這樣少年便會用左腳點兩個然後用右腳打右箭頭。在交互的世界裡如果右腳已經在左邊,左腳還要到右邊的話他就要進一步向左扭,順勢把左腳逆時針帶到右箭頭那邊去。對少年來說這樣又有兩個問題。

第一是他重心偏後。就算怎樣扭動後方的空間必然有限,這樣卡住的機會並不小,但把重心挪前的話勢必要重構整個肌肉記憶。第二是你扭到左邊去,接下來如果一直有向左扭的箭頭呢?總不能像smooooch・∀・那樣放手轉過去吧?

「你好歹也是老玩家了,這種事就不能變通一下嗎?交互是希望盡可能讓兩隻腳輪流打,可是轉不過來的時候也沒辦法呢。如果硬要全交互的話一個譜面的打法從一開始已經固定了,但如果放棄一兩個交互可以打得更輕鬆的話為甚麼不這樣打呢?」少女這樣說道。

如何提早判定打法呢?少年不可能每次都看youtube先把How to Execute背下來再去打吧。少女答得輕鬆:靠經驗囉。

她又拿chromatic burst做例子:←↓⠀↓→←↑的連打,第二個下應該用左還是右腳呢?用右腳的話整個人向右扭,右腳打在後左腳打上,打完連打後依然扭了半個圈。同一個節奏用左腳的話後面四個音根本沒有交互的必要。可如果換成←↓⠀↓→←↓呢?全交互打法直接死掉,完全沒法轉過來。

如何選擇正確的打法,更重要是如何在扭錯方向時修正回來,這才是在實戰的關鍵。

「只有實戰才能把這些刻進你的肌肉裡面。等你可以三首Flare V打進Extra Stage再說吧!」

少年指著她道:「至少你要下場跟我一起打,不要再在那邊吹風扇了!」

少女拒絕:「不要,我要監督著你會不會打著打著回到老打法。」

「那下次我就要看著你能不能打過量子海和New Millennium了。每次都說自己要全清18可是自WORLD出來了以後你就只顧著刷分數都把這個目標拋到腦後了不是嗎?」

「哼哼,現在是精度的天下呢。要不這樣吧,我從15 EX開始打,我每過一首就換你練一道交互如何?」

「這根本不公平吧!!」

NEPHILIM DELTA、TRIP MACHINE EVOLUTION、ラキラキ……每一首平時打到滾瓜爛熟的老圖,此刻打起來又有著新的感受。

少年的在跳舞機上的苦難還在持續中,不過跟她一起在這沒啥人的機廳裡打的話這點苦難也不算甚麼。

頂多就把刷19的時程往後推一點吧。

***

下次DDR相關更新有空會寫Lv18超難關全剖析(?

是說Konmai快點把拍照功能還回來吧,我這樣不太好放成績上來orz

Friday 12 July 2024

被青梅竹馬抓來(略) (10):魔法師戴手套是為了保護自己

Character design: @kuonyuu, Illust: @さかしま commissioned by forretrio. Skeb
Editing and re-posting are prohibited // 無断転載、無断使用禁止です

華格斯家族。

表面上是在王都專營奢侈品的貴族家族,經營生意之餘一直幫助弱勢團體,頗受市民歡迎。暗地裡是控制王都地下勢力的霸主之一。這點在高階貴族間已是常識。它之所以被容忍是因為他們表面上沒有任何逾越的行為,其管轄的地下勢力也沒有出過甚麼大亂子。只要他們還想保住其貴族地位就不可能做出太過份的行為。這種共識已經維持了很多年。

華格斯家族經營地下勢力的方法以手段多變著稱,鮮少有膽量與其正面對抗的地下勢力,幾次認真出手都以對方徹底覆亡告終。但它似乎沒有統一江湖的欲望,也許是不希望過於顯眼。

如果要說這家族的弱點,大概是其家主和預定的接班人即家主的長子已經很久沒露面。即使家族在社交場上沒有特別活躍,完全不露面這一點依然十分奇怪。家族本身絲毫沒有內亂的跡象,各級人員依舊活躍在業務當中,對外也沒公布任何有關家主的訊息。傳言兩人已經不在人世,但這個傳言無法被證實。如果傳言屬實的話,手握家族大權的人可能是比起家主與長子更神祕、從不露面的次子。

因為繼承順位和極為低調的關係有關他的資料相當匱乏。傳聞中他是一位天才般的暗屬性魔法師,可能被家族藏起來培養作為未來的王牌。外貌不詳。實際魔法才能不詳。可考事跡不詳。潛在危險性高。實際上可能為家主的可能中等。名字--丹特.華格斯。

唯一一次前家主消失後的大型衝突現場有發現暗魔法的使用痕跡,但無法斷定是否高階魔法師所為,也沒有回收到屍體作檢測之用。

學園裡的丹特申報自己來自富商家庭,其行為舉止與申報相符,禮儀和談吐用字裡都反映了中產以上和帶有異國風情的出身。後者加上帥氣外表使他在短時間內迅速融入其他學生之中,不論平民貴族男女之間都有一定人氣。入學測試中所有科目都拿到合格分數,魔法適性測試裡他也展示出很好的光屬性潛力,兩者加起來在魔法科學生中也排在前列。校方沒有其暗魔法才能方面的情報。

報告裡最讓庫里斯感興趣的是丹特在開學第一天與庫里斯戰鬥的那一段。丹特的光魔法在刮起的風暴之中毫無用處,他後來是被其他被吹起的學生撞倒的。總體來說在戰鬥中毫無貢獻。

這份不是「千面鴉」販賣情報時按客戶需求準備的情報,而是他們內部整理出來的原始情報,可見京士頓真的誠意滿滿。上面的重點都用粗底線標了起來,最後還有一個注腳:情報價值高但直接剌探不值得,建議從周邊搜集訊息。

他躺在大床上苦笑起來。來到學園以前他以為最麻煩的是那些自恃身份成為剌頭的貴族學生,正如他當年遇到的人一樣,但他發現他實在錯得離譜。公主殿下的存在使得同級之間權力鬥爭幾乎不存在,刺頭們也得惦量一下他們的身份夠不夠他們搞事。更何況公主殿下曾公開找過他說話看起來觀感還可以,自己也在開學第一天露過一手,可以說被學生找麻煩的機率幾乎為零。他沒想到的是學生們本身就足以把他綁上了王都的政治紛爭這艘賊船。即使不算上丹特,其他貴族學生有自己的小秘密一點都不意外。華萊里安已經暗示了他一次,京士頓這份情報則是直接陰了一把。

他再次閱讀這份情報。「千面鴉」說沒法證明學園的丹特和華格斯家族的丹特有所關聯,自己當然沒本事另下定論。如果這兩個身份是兩個人的話那一切都只是個美麗的誤會,但如果他真的是華格斯的二少主呢甚至實際上的家主呢?

偽造身份進入學園這件事就很麻煩。作為培養未來權力核心的地方,學園不可能容忍他留下來。如果當初丹特以其正式身分入學而沒人能證明他與家主的失蹤有關的話,學園說不定會勉強讓他入學。但背負偽造背景和潛在殺人犯罪名的人還能進學園的話才是笑話。事情曝光的話連帶家族也要承受這事情帶來的怒火,被排擠之類的肯定會發生,再嚴重一點被降格或者家業被拔掉也不無可能。

如果事情發展到這個地步,可以預見丹特一定會進行報復。「庫里斯知道這個情報」本身就是個情報,是京士頓獨家握有的消息。又有誰能保證他不會把這條情報有目的地給漏出去呢?一個地下勢力出來的人會使用怎樣的報復手段……庫里斯實在不敢想下去。

他用那缺乏政治經驗的腦袋想了又想,最有用的都是華萊里安和京士頓不約而同的提點:好好教書就是他最大的保障。

「不就是以前我上課學的東西嘛……」布拉德上的課他已經忘得九九十十了,剩下都是他少數覺得有用的觀點,接下來他要準備的課就是其中之一。

*

幾天後的魔法科教室。

本來指定預習的古典元素觀再次被帶到課堂上。庫里斯故作輕鬆地問學生們有沒有好好預習,大半都舉了手。於是他開始按布拉德留下來的筆記開始講課。

「……古典元素觀之所以是古典,是因為他們依照最基本的需要理解和使用魔法。最典型的例子就是--」

他攤開手掌,一團火焰憑空出現在他的手心之上。

「有沒有想過這種大家都做的出來的火焰,為甚麼不會燒到自己呢?」

他拿起一張白紙放在火焰上方,白紙還沒碰到火舌已經被燒出一個洞。他又換了一個角度,拿著白紙從側面掃過去。結果還是一樣,紙張穿過火焰的部分也被燒穿。然後他把白紙插在火焰和他手心中間的縫裡,紙張沒有被燒穿,只是燻出了一個焦黃的圓點。

「對你們這些有專家指導,又或者天賦出眾的人來說可能不是一個問題。但是這對其他人來說其實是常犯的錯誤。由他們來施法的話可能會變成這樣--」

火焰突然好像被風吹過一般形狀變得不規則,本來最明亮的中心位置變得忽明忽暗。他重複把白紙放在火焰上方和側面的動作,得出一同樣的結果。他又把白紙插到火焰和他手心中間,這回紙張沒能倖免被燒焦了一塊。他化掌為拳把火焰掐滅掉,隨意地向學生展示著火焰下方完全沒有被燒焦痕跡的皮手套。這當然算不上甚麼特別的把戲,在座學生隨便一個都能做到類似效果而不用燒到自己。加上魔法師的手套多半帶有防護能力,這種小法術能燒到自己才奇怪。

「很明顯不會燒到手不是魔法本身的特性,是我們有意做出來的,目的當然是讓我們更安全地駕馭這團火焰。這正正就是古代對元素魔法的追求--從基本的需要出發,用試錯的方法把不符要求的法術淘汰,將最好用的留下來成為我們現在接觸到最基本的魔法形式。」

按布拉德的原話掌控魔法分成幾個階段。最低層的是理論上的存在,你知道這樣產生某個效果的可能;然後是不完全的發動,就像那團不穩定的火焰,只能達到部分預期中的效果而且有不確定性;再往上是完整地使用魔法,也就是魔法效果完全與預期一致;最高的層次是可以按需要把魔法微調甚至與其他魔法融會貫通。古典觀裡面理論的缺失使得他們只能用試錯的方法建立術式,不但掌握魔法成了空中樓閣,也斷絕了更進一步的可能性。

從這裡布拉德會開始宣揚以火屬性魔法為基礎磨練自己技術的好處:火焰高溫帶來的危險注定學生必須先專注於駕馭火焰。專注力、精準性、穩定性--這些同時是所有魔法的基礎。也就是說,磨練火屬性魔法就相當於磨練施法技巧本身。

這當然是布拉德自己的一面看法,庫里斯可不會認同他的結論。練習其他屬性的魔法就不會有危險嗎?火焰的高溫那是明著來的危險,不代表其他元素魔法就不會有其危險性。難道風屬性魔法就不能切到自己嗎?體內魔法迴路失控或者術式完全失敗引致完全無法預料的效果,這又豈是單練火屬性魔法可以改進的呢?

庫里斯不得不認同的一點是布拉德建立了一套完整的流程和指標,就算是天資一般--以魔法科的標準而言--的學生,也能夠跟著流程學習而達到不錯的效果。在他看來,這種頗具啟發性的入門簡介應該可以提起學生的興趣,再不濟也能讓昏昏欲睡的學生提起精神來。

但結果卻跟他想象完全不同。

台下學生們的反應與一開頭講屬性本質時不同,他們的肢體動作和眼神已經出賣了他們的想法。絕對是乖學生的菲莉公主還在抄寫筆記,但她的護衛伊雅娜已經變得眼神死,克萊伊和艾基爾的反應倒沒伊雅娜大,但明顯對這種東西缺乏興趣。一個有趣的現象是,貴族學生明顯比平民學生更消極一點。庫里斯一邊繼續講解一邊快速思索著背後的原因,很快他就有了一個推測。

布拉德已經霸佔這個教席好一段長時間,如果他沒退休的話今年也必然繼續在魔法科任教。那些貴族學生肯定知道這一點,說不定連他每一年怎樣開頭都多少知道。雖然知道授課內容不代表再聽一次是浪費時間,問題在於他的名字叫庫里斯,不叫布拉德。

這些有關火屬性魔法的入門從一個教了很多年的火屬性大師口中說出來,跟從一個不是專精火屬性的菜鳥教師口中說出來完全是兩個效果。前者一舉一動都帶著無容置疑的權威,讓學生們真的相信磨練火魔法的好處,這點從他多年來穩定產出火屬性高手就能看出來。而他抄著布拉德的說辭又不是真心想學生們全身投入到火屬性裡面,既不倫不類也沒有說服力,對那些事前知道這些內容的學生來說更是失望。

想到教學業績與小命掛鉤的他打了個顫,當下就把壓箱底的絕招拿出來:「……以上都是測驗會考到的內容,不單是火屬性還有其他屬性都在測驗範圍之內。沒有辦法呢~雖然我覺得這些東西聽聽就好,但是放進測驗的話就是你們證明自己的機會了。相信這點東西也難不到你們吧?」

那些本來眼神死的學生聽見是測驗內容頓時便來了精神,也有學生聽出這是話裡有話--這是他沒有興趣花時間的課題,但測驗內容非放這些不可。出來的成績比起對自己實力的證明更像是對庫里斯的信任票--考得好不是必然,反正一個測驗對學業整體不會有影響。看看剛才學生們的反應,庫里斯一定要展示出更好的教學能力才行。

「古典元素觀聽起來的確很蠢,但也不能說一無是處。一個沒有理論基礎的體系孕育出來的魔法師絕大多數都是個渣沒錯,可是間中也有那麼一兩個天才靠著這個破體系成為大魔法師。可以說,這種體系理論上上限可以很高。」

「可是大部分人學習魔法還是基於現實需要,對上魔物打輸了的話可是要死的啊。誰會拿自己小命來開玩笑?這時候水準參差,沒法穩定養出魔法師的古典體系開始分裂成兩個分支:一個是將魔法簡化成對使用者要求低,可以穩定使出基本魔法的平民路線;一個是試圖追隨古典體系裡的成功例子而發展出來,對使用者要求高但上限也更高的貴族路線。」

「隨著時間推移兩條路線漸行漸遠,最終變成兩種獨立的體系。平民路線就是你們看到在民間流傳的三腳貓功夫,而貴族路線當然就是你們會在這個學園裡接觸的魔法。兩條路線的差異之大,就算是天賦上佳的人也沒法隨意在兩種路線之間切換。這也是為甚麼學期剛開始我們就要搬出這些艱涉的理論,因為一開始就糾錯才是最容易的。」

「至於兩種路線出來的效果真的差很多嗎?以我當冒險者的經驗來看基本上是天差地別。如果你發現一個魔法師只會用特定幾個魔法的話,他多半都是走平民路線學習魔法的人。再仔細留意他們的話就能發現他們一般都擁有魔法以外的技能,或者說那幾個魔法只是他的技能之一。真的只會幾個魔法那種人只能在冒險者底層混日子。」

「聽上去可能跟你們對魔法師冒險的想象差很遠對吧?魔法師在隊伍裡就應該專職使用魔法,其他東西就該丟給別人做對吧?問題是如果魔法師的攻擊手段不足以殺敵的話是沒有被保護的價值的,而遺憾地這幫魔法師的確做不到這一點。他們只能退一步當個輔助,在特定場合使用他們的魔法之餘承擔一堆雜務。簡單來說他們只是一個多了項技能的雜役而已。這樣的冒險者又怎可能在更高等級的探險中發揮功用呢?」

他望著艾基爾道:「說到冒險的話,在座各位之中應該數艾基爾的經驗最豐富。那我問問你,你有應徵過在冒險隊伍裡當魔法師吧?多半都被拒絕了?」

艾基爾沒想過會突然被點名,「嗯……的確。有一次我被拉進去試用也沒犯甚麼過錯,但試用過一次後對方甚麼都不說就把我退掉了。現在看來就是因為這個原因?」

「嗯,」庫里斯凝空一指,一團比剛才明亮得多的火球出現在他的指尖上,幾乎所有學生都能感受到其熱力。他輕輕地把火球甩出,火球便以不合理的速度往前飛去,又在撞上課室後方牆壁之前消失:「大概要這種威力吧。」

自己既然不是火屬性的大師,抄人家的講稿幹嘛呢?自己在冒險方面算是小有名氣,從這裡切入教學內容不就好了?他開始注意到學生們的眼神開始變得不同。本來的散漫變成了好奇再變成了專注,在台上的他可是看得一清二楚。他開始講起他的冒險經驗,解釋為甚麼不夠強的魔法還不如不用。這些東西對他來說就如常識一般信手拈來,他口袋中還有無數個冒險旅程中收獲的小故事。艾基爾對此毫不意外,其他人卻得以用全新角度理解這位新來的魔法科老師。

下課的鐘聲響起,看學生的反應他知道他又過了一關。但這條教學的路,前路還很長。

=============

很多時候我們對遠古技術都會有超乎現實的想象。西方的瑪雅和古埃及都有現代難以理解的科技,阿特蘭蒂斯傳說中的文明更是遠超現代;東方單看中國就更多了,先不說山海經、海內十州記這些,單是出土過的絲綢兵器的製作技術和現存的寺廟(然而在日本)和橋樑都是現代未能探明的。這些古代技術對於那種正常文明進展的歷史觀來說可以怎樣解釋呢?

其中一種主流答案就是古代有一個超然於當時乃至現代人類的文明,這個文明把這些技術分了給人類,只是後來這個文明又消失或者衰亡了云云。當然最後那句才是這類學說不入主流的原因,但這阻止不了人們對這種學說的幻想。這種文明一般以神明的形式展現,比如西方神話中希臘神話中火種是神明給予人類,中國神話也有封神榜之流的作品。為何「神明」最後消失了,或者說在史書時代沒留下可信的與「神明」交通的記錄還是最大的問題。

另一個答案則恰好迴避了這個問題:古代某種資源遠比現代豐富--此處資源可為各種抽象的事物。玄幻修仙作品中常見的套路就是古代靈氣充盈金丹滿地走,但到了現代靈氣稀薄修練困難才有了主角的逆天傳奇;血統論某程度上也是這種看法的分支,「純血」個體可以做到其後代做不到的事情,常見於西方吸血鬼/魔幻作品,甚至哈利波特(沒錯又是你)的世界也是這麼想的;更現實一點是某種化學成分或礦產,但如果二十一世紀都搞不明白的話這種有形無機之物怎可能解析不出來?這種看法過於荒謬以致只存在於文學之中。

一些作品就算沒有特別提到這種貴古賤今的大環境,只要上古時期強得太過份的話也會有考據黨提出類似的疑問。我們再拿哈利做例子好了。雖然我在第三章提過一下類似問題但再詳細一點可以這樣問:為甚麼四位創始人可強得過份?別忘了葛來分多和史萊哲林正是因為純血問題鬧翻,顯然純血與否不是強度的全部。如果要說太遠古沒法考究(對世界觀裡面的人物來說),那麼魔世代即一九二零到四零年代老鄧大戰葛林戴華德的神仙打架又如何呢?區區六十年前的東西對二十世紀學術能力來說應該很簡單吧?還是說魔法界的學術能力真的太低?這些問題甚至不用挖太深我們就已經知道答案是沒有答案,官方所有資料都沒法回答這些問題。對一些人來說是個遺憾,但至少留了很多空間給同人作家發揮。比如很多平行世界裡的主角和妙麗都會聯手卷翻那邊的學術界,隨便發點論文就能爆殺<<今日變形學>>期刊……但我覺得這真的不太容易就是。

所以我對這個問題也給出了一個答案。

不是貴古賤今,是古代人投放了海量資源進去--尤其是時間。你以為現代人的效率比古代人高很多所以在研發方面古代一定比較差嗎?非也。你現在去找學術經費或者初創投資,人家可能只給你半年到兩三年時間。可是以前呢?人家幾百年來都在做同一種東西,為甚麼不能贏你?現代人想復刻宋瓷精品,把花紋分成幾等,最高級的曜變天目一直復刻不出來。如果我們假設燒出來的中獎機率固定,為甚麼不能是你不夠歐燒不出來?現在也就一兩隊人在燒一個窯,如果在宋代人家幾十年來用幾十隊人去燒,要抽中大獎是不是容易多了?同樣地在魔法世界觀中古代這麼多年裡出過幾個天生神力的大魔法師,是不是比古代魔力充沛論合理多了?

為甚麼現代人沒法復刻,不是不能而是不需要。資本社會以利益掛帥,如果複制出古代技術不能賺錢,不說沒人去做也不會有太多人做,上面的復刻宋瓷就是一個例子。學會古中國那種不用釘子的建築工藝能賺錢嗎?也許可以--至少大阪世博館採用了這種工藝,但絕對不會有人用它來建高樓大廈。恆大可以一天蓋一層,你這工藝怎樣比?舉一個有利益推動的例子--美國丟失了當年做核彈頭的關鍵材料FOGBANK一直復刻不出來。他們的辦法是甚麼?一直砸錢。幾度增加預算後終於把東西做了出來,還發現失敗原因是純度過高!對我來說,諸如瓷器或者古代紡織技術都可以歸到這一類裡去。

你可以說這種想法不能解釋所有技術缺口。比如出土過古劍有用鉻電鍍防腐,這種絕對不可能用碰巧解釋--古代甚至沒有天然的高純度鉻!這也是為甚麼秦始皇是被認為古代中國最開掛的文明沒有之一。如果你叫我這個半吊子作一個推測的話……大概就是春秋戰國的寬鬆思想環境容許了部分科學分支發展。沒有系統化但就是能造出某些東西如天衣或者神劍的技術,而這些都被秦朝收割了。秦的獨尊法家到以後儒術稱霸使得這些技術被當成思想的一部份取締掉,所以技術失傳而後世也再造不出這些東西來。以上只是推測,不要當真。咳咳。

另一點我想說的是手套。

我有時會想:在手上的魔法就不會傷到自己嗎?像火魔法之類的東西物理上光是放在手上就有一定危險性,所以上面提到練習火魔法的基本功就是控制火焰使其燒不到自己。但是實用層面上再加一層防護比單純靠技巧可靠多了,所以我堅信魔法師們多半都會用手套。設定上手套作為最貼近正常施法位置(手)的飾物,用擁有防護能力/抗性的物料是基本。更進一步也有鑲嵌為施法帶來增幅的寶石或者花紋,如果鑲不上去也可以用戒指代替……不過戒指太多不好看就是。

然後是手套本身的形狀。最近很流行短手套(half gloves)--連手腕也不到,可能只覆蓋手心四分三長度的手套。如果要說就像是原神公子或者綾人那種(不知為何原神超愛這種手套),在現實中也見於跳舞用時裝,比如2023紅白就有一團在用。但我想說這種手套一點都不科學啊!除非是客製化可以讓手套緊貼你的手指,不然穿上去根本就鬆垮垮的很容易掉出來。我訂了一對拿去打音遊,打到一道不到就覺得還是不戴比較好。所以這種短手套,出局。

傳統有一定長度的手套呢?沒問題但不夠潮,出局。長/過肘手套太誇張也出局。剩下兩種剛好就是庫里斯人設用的兩種手套。一是露指手套,另一種就是長度及腕但是露手背的手套。按設定來說護住手心是必須的,那改動就只能動在手背上。這種設計大概是可以進一步方便魔力感知吧(?)。要露出手背但手套又不能做太短,這個改動其實不容易,一不小心就會變得很土,比如拳皇的泰利(Terry)那雙拳擊手套。所以山神さやか老師設定的手套是露出大部分手背但是收束在手腕處的樣式,基本上就是不是短手套但貌似短手套的效果。いのた老師則是完美地畫把手套出來(見上一話的插圖),實在滿足了我的心願!順帶一提最近看漫畫看到另一種露背手套的設定也很吸引:露背範圍呈三角形展開(……或者你弄成倒心形也可以),末端用繩子連著緊扣在手腕以下的皮帶。這種設計的話就算是短手套也沒問題,就是色了一點。

感覺雜談已經過長了,有些可以留到下次的話就留到下次再說吧。但是我還想補充一下關於華格斯家族設定的感想:完筆校稿之時我才突然想起<<一代宗師>>裡宮家師兄丁連山對上葉問說的一句話:「一門裡,有人當面子,就得有人當裡子。面子沾不得一點灰塵,流了血,裡子得收著;收不住,漏到了面子上就是毀門滅派的事。面子請人吃一支煙,可能裡子就要除掉一個人。」一代宗師貫穿全片字字珠磯,但這一段文武兼具的戲算是我的最愛了。感覺這段對上半隻腳踏在黑道上的華格斯家族來說也挺合適的。至於事實上是不是這樣,以後才會揭曉。

以下是感謝的時間:頁首的是さかしま老師的委托圖,那個自信滿滿的樣子真的不錯!結尾的是一之瀬さつき老師的委托圖,難得把其他學生也畫進去了!唯一可以吐糟的地方是學生的制服應該長得不一樣才對吧XD

Character design: @kuonyuu, Illust: @一之瀬さつき commissioned by forretrio. Pixiv
Editing and re-posting are prohibited // 無断転載、無断使用禁止です


Tuesday 2 July 2024

Optimal difficulty curve for tests

A sequel to my previous babble about binomial distributions, but not really.

Is it better for test score to be uniformly distributed than normally distributed?

The aptitude distribution of the students is normal, this is not we can control. However we can control the difficulty curve of the test so that the test result can be of arbitrary distribution.

To start with, let the aptitude of students be $X\sim Z(0,1)$. A test $f$ is a  non-decreasing surjection onto [0,100]. If the test is a piecewise linear function that is zero before a threshold and 100 after another threshold, then we expect the result to be normal (with slight truncation). We can also use an inverse normal curve as the test. In that case, $f(X)$ will become a uniform distribution.

However, students does not always perform to their quality. We need a noise term in addition. The resulting performance is now $f(X) + \varepsilon$, where we assume $\varepsilon$ to be a normal noise. The initial question becomes to find $f$, or rather $f(X)$, such that given two samples $x,x'$ from $X$ with $x \geq x'$, $P((f(x)+\varepsilon(x))-(f(x')-\varepsilon(x'))\mid x\geq x')$ is the greatest. i.e., we want to seek for $f(X)$ so that the chance of misordering student aptitude is minimized.

Despite the complexity of normal density, the above probability can easily be written as a double integral, then some variational method potentially gives the answer. But here is a simpler way to find the answer: to minimize the probability is the same as minimizing $p_f(r) = P(|f(x)-f(x')|\leq r)$ for any two samples from $X$. If there is a single $f$ that minimizes $p$ across all $r$ then such $f$ would surely minimizes the stated probability.

Unsurprisingly, uniform distribution is what we desired. The reason is simple: majorization. The more sparse the distribution is, the lower $p_f$ would be, and the best possible one is the uniform distribution $U(0,100)$. 

From an information theory perspective, this is clear because uniform distribution has the highest entropy, thus gives highest resolution. The answer is so smooth with multi-perspective explanations, except that if $f(X)$ is uniform that means we are going to fail half of the class...

So no, don't do that to the students.

Wednesday 26 June 2024

DP and Markov Chain

Decided to give a little push on projecteuler. Almost 10 years since I actively solve problems. Many new problems have been added but the average difficulty drops a bit comparing to P200-300. This is good as the site does not necessarily serve the purpose of asking harder and harder questions to defeat the best math programmer, but a site where most can enjoy.

But the core idea has not changed: it's most likely about reducing complexity using maths plus some searching optimization. The math behind has been the same: everything about number theory plus a bit of geometry and combinatorics. On the searching side nothing changed as well: it's always dynamic programming -- if it isn't then probably the math part alone suffices to solve without the need to search.

Opposite to those purely mathematical problems, there are some purely computational problems too. Well, maybe not that computational like P345 "Matrix sum" where you find maximum trace (sort of) in a large matrix, but there are numerical problems with zero mathematical insight involved.

I wanted to use the example of cycle number aka friends of 142857 but there is still minimal maths behind like its relations to the numbers $10^k-1$ (which is also related to questions concerning repeating periods). But we can go much less mathematical. How about numbers that used all 9 digits? Primes with a particular appearance (not mathematical properties)? Fortunately there is a framework to solve those.

I solved about 20 problems recently and half of them done using the same framework. It's so handy that it's worth a talk, and perhaps it will guide you to solve those questions as well.

*

It is all about dynamic programming. When we first encounter DP we usually learn to solve backwards like all those shortest path problems. But it is also possible to recursively solve from the front. Mathematically there is a fancier name: Markov chain.

The idea is the same: we recursively calculate the state at each iteration till we need reach the end. We first define the initial state $A_0$. For each iteration we calculate $A_{k+1}$ from $A_k$ and extract information from the state if necessary. Terminating at $A_n$ would give the answer immediately. 

Example 1. Consider a simple random walk problem where an ant starts from position zero, where he can only walks by +2, +3 or -1 each turn with equal probability. There are traps on each odd (positive) prime where the ant will get stuck and stop moving. Can you give the expected position of stuck ants in 10000 turns?

A typical absorbing Markov chain. What's not typical is the randomly assigned "odd prime traps". Without those traps it's actually easy to find the chance for an ant to reach position $k$ at turn $n$: we have the equations $2a + 3b - c = k$ and $a+b+c = n$ with a dimension 1 solution space. Combining with the non-negativity condition should give a set of easily summable "ways". Adding across $n$ should give the chance of reaching the position on or before turn $n$...that is, without assuming the traps.

Instead, we set up a dictionary $X$ with a single value: $X[0] = 1$. In each iteration we read $X[i] = p_i$. If $i$ is not an odd prime, assign(add) the probability to a temporary dictionary $X'[i-1], X'[i+2], X'[i+3] += p_i/3$. Of course there are technical things to take care of like tracing the elements in $X$ if we cannot alter that inside a loop, but that should be routine to take care of.

Example 2. The same from example 1, except that the ant has a protective mechanism that allows it to land on a trap once and keep proceeding.

In that case, the state shall store another information other than the position: the number of times of traps that the any has stepped on. From $X[(i,j)] = p_{ij}$ where $i$ is not odd prime or $j \leq 1$ we send to $X'[(i',j')]$ where $j' = j+1$ is $i'$ is an odd prime.

Example 3. Consider a random binary array of length $n$. Compute the probability $p(n,k)$ of the array containing a monotone (i.e. just 0 or just 1) subarray of length $k$ up to a certain precision (call that a streak of length $k$).

Again a problem seemingly possible by direct calculation: fixing a subarray of length $k$ should give a probability of $(n-k+1)2^{-k}$, but you will face a wall of inclusion-exclusion consideration, plus the magnitude of numbers that you work with increases exponentially with $n$ and $k$.

Instead taking light from example 2, we only need two pieces of information: the last bit (also equal to bit in the recent streak) and recent streak length.

There will be $2k-2$ states in the form $(i,j)$ where $i \in \left\{ 0, 1\right\}$ and $0\leq j \leq k-1$. For each $X[(i,j)] = p_{ij}$ assign $p_{ij}/2$ chance to $X'[(1-i, 1)]$ and another half to $X'[(i,j+1)]$. If $j+1 = k$ sent that to the absorbing state instead.

In that way we can get arbitrarily accurate answer if we run every iteration manually, but $n$ can easily be much larger -- that's why we were merely asked for the probability up to a certain precision. We need an approximation.

Notice that a streak of length $k$ itself appears with a chance of $2^{-k}$. Even with the freedom of appearing anywhere in the streak, the range of $k$ so that $p(n,k)$ is non-negligible (i.e. not 0 or 1 rounded by error allowance) should be around $c\log _2(n)$. That is, sensible $k$ is very small comparing to $n$ for any reasonably large $n$. Then the chance of a $k$ streak appearing in an array of $2n$ bits is roughly equal to the streak appearing at either the first $n$ or the last $n$ bits. As a result we approximate $p(n, k)$ with $1-(1-p(\alpha,k))^{n/\alpha}$. 

The $\alpha$ is a threshold where we would like to simulate and should run in acceptable time. Take a large enough threshold and we should be done...right? Not yet. It seems like the approximates aren't precise enough. We can do, for example, 5 millions iterations at best within reasonable time. But that does not stop an error of order $10^{-6}$ from creeping around. We need the fix below:

Since this is an absorbing Markov chain the probability is strictly increasing (or decreasing depending on the way you view it) with $n$, and probability is moving at an exponentially decaying rate (you can verify this). We can exploit that to do an ad-hoc improvement: set a few checkpoints along the iteration to $p(\alpha, k)$ to approximate the convergence rate, then apply geometric sum to fix the probability in one go. It is likely to cause error of an order lower, but who cares?

And of course, we can apply the same idea to the dual of probability: success trials vs total trials. The same iteration method can be applied except we add them instead of splitting the chances.

Example 4. How many $20$-digit numbers (no leading zeros) such that no digit occurs no more than 3 times in it?

Well, partitions and multinomials should help better especially if we go way beyond such parameter. But what can we do without assuming those?

The states this time should be tuples $(a_0,...,a_9)$ where $a_i \leq 3$. For each iteration $X[(a_0,...,a_9)]$ is added to the states with one of $a_i$ higher by 1 (and still not exceeding 3). There are 9 initial states at the beginning representing the 9 single digit numbers. 

*

And that's it! I said at the beginning that the technique is widely applicable to many questions on projecteuler or other sites and that's not a bluff. Check the range P151-200 if you want a few easy scores ;).

Markov chains and DP aside, I just came across to the concept of semiconvergents when approximating $\sqrt{n}$ by fractions. Either I forgot everything about it on lessons or that it's new to me. I knew the convergents are the best approximations, but those marginally non-semiconvergents are so nasty! 

Suppose that $p_{k}/q_{k}$ are convergents for $\sqrt{n}$. Let $a_k$ be the corresponding continued fraction coefficients. It turns out that for any $[(a_k+1)/2] < r < a_k$, $(p_{k-1}+rp_k)/(q_{k-1}+rq_k)$ are better convergents than $p_k/q_k$ (but at a bigger denominator) called semiconvergents.

More interestingly, when $r = [(a_k+1)/2]$ the resulting fraction may or may not be a semiconvergent! I was so annoyed that such marginally non-semiconvergents are so close to the previous convergent that usual decimal calculation failed to distinguish them. I finally took the approach as follows:

Consider two fractions $p/q$ and $p'/q'$, assume that $p/q$ is larger. To avoid sign shenanigans I compare $\sqrt{n}$ to their average $(pq'+p'q)/(2qq')$. If $\sqrt{n}$ is larger then it's closer to the larger fraction and vice versa. I don't want any square root as well, so I compare the square of them. That is, to compute $(pq' + p'q)^2 - 4q^2q'^2n$. It turns out that if we are comparing the convergent and the next potentially semiconvergent $(p_{k-1}+rp_k)/(q_{k-1}+rq_k)$ where $r = [(a_k+1)/2]$, that difference is always $\pm 1$!!! If you still remember that $p_kq_{k+1}-q_kp_{k+1}$ is also $\pm 1$ you know these two fractions are really as close as they can get.

After few hours of number theory revision plus few hours of coding I finally got the right answer, only to find that Sage has the full packet to automate all these...

Friday 21 June 2024

Geometric sum as functional inverse (2): the backstory

My latest contribution about using geometric sum as inverses is surprisingly well-received, so I decided to give it a sequel.

The immediate question is: are we reinventing Maclaurin series? Is this even possible without differentiation? Well, not really. If we decompose $f$ into power series then we will see precisely what happened. If $f = \sum a_k x^k$ then $a_i = D^i[\sum a_k x^k](0)/i!$ where $D$ is the differential operator since I am too lazy to write fractions right? We can recover this by calculating $M^i[D^i[\sum a_k x^k](0)]$:
$M^i[D^i[\sum a_k x^k](0)] = M_i[i!a_i] = a_ix^i$.
In other words, we are just representing the $x^i$-term in forms of $a_i'x^i$ instead of constant $a_i$. 

Let us recall the definition of the (properly defined) operator $M$: $Mf(x) = \int ^x_0 f(u)du$.

The miracle of the exponential series actually happens because $M^i[1]$ is precisely the $x^i$-term of the exponential series. Clearly this is not guaranteed because $M^i[g] = a_ix^i$ for all $i$ iff $g$ is a constant. Sadly $g$ is pre-determined by the function $f$ we use.

Consider $f = \log (1+x)$. It looks bad further away from zero but it should be fine in an neighborhood around zero. Suppose we wave our hand say from $(I-M)f = g$ we obtain $f = (\sum M^k)g$, we want to check what's $M^kg$ exactly.

First we compute $g = (I-M)f = x(1-\log(1+x))$. Not good-looking but okay. Next we compute $Mg$:
$Mg = \frac{1}{2}(x^2+\frac{1}{2}x(x-2)-(x^2-1)\log(1+x))$
according to Wolframalpha. Soon you realized the fact that $M^kg$ will never be the k-th term of the Maclaurin series because the log term will never go away. 

Everything we argued in $L^{\infty}$ still works, even for this nasty $f$! Each $M^kg$ is a proper function and the sum indeed converges to $f$ uniformly if we restrict the domain to $[-\varepsilon, \varepsilon]$ for some small $\varepsilon \in (0,1)$. However, it simply does not coincides with the Maclaurin series because $g$ is not a constant. When is $g$ a constant, or rather, when is $(I-M)f$ a constant? Differential equation $y-y' = 0$ has solution $ce^x$ and is the only instance that fits all our speculation. 

What a pity.

You then asked: what about the trig example at the end? Why are we recovering the Maclaurin series like that even when the theory already crumbled?

To clarify let us repeat the above again: $g = (I-M)[\sin] = \sin x + \cos x -1$. 
$Mg = \sin x - \cos x + 1 -x$.
$M^2g = -\sin x - \cos x + 1 + x - x^2/2$.

Well...an oscillation? Nope. This is clear if you plot them on a graph.
Red is $g$, blue is $Mg$ and green is $M^2g$. As predicted by the norm of $M$, the $L^{\infty}$-norm do shrink exponentially which gives us the convergence. 

We can also prove convergence in analytically: note that when k is 3 mod 4, all the trigonometric terms in $(I+\ldots + M^k)g$ vanished, leaving the Maclaurin series of $\sin x$ up to degree of $4k-1$. For other k's can be sandwiched using the fact that $\| M^k g\|_{\infty}$ shrinks exponentially within the interval [-1,1] (or something slightly better than (-1,1) -- since $g$ is not a constant but that is no big deal). Again, we wanted more that convergence, and $\sin x$ is not good enough for that because $g$ is not a constant.

The last hope lingers on the fact that $(\sum (M^4)^k)[x - x^3/6] = \sin x$. Anything special about the trig functions that allows such representation? I will truly leave that to the readers this time. Hint: what is the relation between $\sin x$ and $\exp x$?

Sunday 16 June 2024

Use of geometric sum as inverse in function spaces

When I teach first year linear algebra, one of the main show is the use of diagonalization to simplify matrix computation then to link that with various applications. This is the real point where you feel the real use of these concepts other than making up its geometric meaning. Cayley-Hamilton, characteristic polynomial for recurrence sequences, Markov chain and so on.

To start with, consider a matrix $A$. If $\sum A^k = I + A + A^2 + \ldots $ is well-defined (aka converges) then by geometric series we know it is equal to $(I-A)^{-1}$. If we do the other way round we can compute the geometric series of $I-A$, we will recover the inverse $(I-(I-A))^{-1} = A^{-1}$. The problem is...does the geometric sum converges? This is where the eigenvalues kick in.

For diagonal matrix $D$, $\sum D^k$ converges iff all diagonal entries (aka eigenvalues) are of norm less than or equal 1. If $A$ is diagonalizable we can write $A = PDP^{-1}$, then $(I-A) = P(I-D)P^{-1}$, so we want the diagonal entries of $(I-D)$ to be in $(-1,1)$. Or rather, we want all eigenvalues of $A$ to be in $(0,2)$. But this is a very limited result. Can we do better? Yes!

Notice that we can tweek the eigenvalues by multiplying a constant. Let $c \in \mathbb{R}$ be non-zero so that all eigenvalues of $A/c$ to be in $(0,2)$, then the same procedure may proceed. 

Consider the matrix $A = \begin{bmatrix}5&4\\2&3\end{bmatrix}$ with eigenvalues 1 and 7, we take $c = 8$. Write $A = PDP^{-1}$ then $I - D/c$ has diagonal entries 7/8 and 1/8. Geometric sum gives $\sum (I-D/c)^k = \begin{bmatrix}8&0\\0&8/7\end{bmatrix}$. 

Plugging back we have $P(\sum (I-D/c)^k)P^{-1} = \frac{8}{7}\begin{bmatrix}3&-4\\-2&5\end{bmatrix}$, which is precisely $cA^{-1}$. Don't forget that $(A/c)^{-1} =cA^{-1}\neq A^{-1}/c$!

*

Now let us forget about linear algebra and just the a step forward. How about using geometric sum in function spaces? 

We start with a very vague idea. Let $M$ be the integral operator, then we obviously obtain $(I-M)[\exp] = -C$ where $C$ arises from the integral. What if $(I-M)$ has inverse $(I+M+M^2+...)$? Let's say $M[-C] = -Cx + C_1$, then $M^2[-C] = -Cx^2/2 + C_1x + C_2$, and so on. One obtains $(\sum M^k)[-C] = (-C+\sum C_i)(1 + x + x^2/2 + \ldots)$, and checking $x = 0$ gives $-C + \sum C_i = 1$. This is such a lucid dream because we just proved the series $e^x = \sum x^k/k!$ without differentiation at all!!

But wait, there are too many technical problems in the above argument to the point if I read that from my student's assignment I would have torn that paper into pieces. The gaps are not fatal, but we have to be very, very careful.

The biggest problem of all, is that integral operator in that arbitrary form, is likely unbounded. We must sacrifice our dream of working over the reals and work in $[0,N]$ instead. Since $N$ is arbitrary we can extend that basically to the reals, at least pointwisely.

In a bounded interval $L^p$ spaces work similarly but the best is $L^{\infty}$ because we immediately give the norm of the integral operator. Define $M_0:L^{\infty}([0,N]) \to L^{\infty}([0,N])$ by $M_0f(x) = \int ^x_0f(u)du$. This is well defined because $M_0f(x) \leq N\|f\|_{\infty}$, and it also implies that $\|M_0\| = N$ (the equality is obvious by taking $f = 1$). 

We solved unboundedness but we need $\| M_0 \|<1$ for that to work. What should we do now? Well, just copy what we did to matrices. Define $M = M_0/(N+1)$ and try again: $M[e^x] = (e^x-1)/(N+1)$ but $I[e^x] = e^x$...they don't add up. It turns out that tweeking $M$ won't suffice because a tweek to the function is necessary as well. 

Let $f = e^{x/(N+1)}$, then $Mf = (e^{x/(N+1)} - 1)$ and so $(I-M)f = 1$. Since $\|M\| < 1$, $\sum M^k$ is a well-defined operator and is the inverse of $(I-M)$. Therefore $f = (\sum M^k)[1]$. Induction gives $M^k[1](x) = (x/(N+1))^k/k!$, so $e^{x/(N+1)} = \sum (x/(N+1))^k/k!$ uniformly in $[0,N]$. A substitution recovers the desired series for $e^x$.

Many would think the job is done here but this is a false sense of security. Not an easy gap to spot -- including me when I first drafted. We established the equality in $L^{\infty}$ or uniformly, but in the pointwise sense this is only almost everywhere. The good news is we do not have to worry about the trap of generating the series using the series anymore so many more tools are now available like continuity. Since both the exponential function and the series are continuous everywhere, the two expressions are indeed equal everywhere.

*

I believe this is the first time I write about functional analysis here but this is actually my expertise. These are absolutely not what one would encounter in research, but very fun to share across all levels of undergraduate students.

The idea of $\sum A^k = (1-A)^{-1}$ is the cornerstone of spectral theory because when we look at the spectrum we want to see the set where $A-\lambda I$ is invertible, or equivalently where $I - A/\lambda$ is invertible. The fact that geometric series converges says that when $A$ is small enough to $I$ then $(I-A)$ is always invertible which gives us lots of information about the spectrum.

Of course, knowing that $(I-A)$ is invertible for small $A$ says nothing about any other operators in the space. In particular, it says nothing about invertibility of operators that fails the condition for geometric sum.

This is particularly clear when we revisit the matrix example. I claim that the above method applies to all diagonalizable matrices where all eigenvalues are of the same sign (and are non-zero) (proof: left to reader). But that left out almost all diagonalizable matrices where eigenvalues contain both signs. Are they not invertible? Absolutely not! The moment they are diagonalizable with non-zero eigenvalues they are straightaway invertible, just that this particular approach doesn't apply.

One problem to the readers: my proof above relies on the fact that $e^0 = 1$. Can you recreate the proof for when $x < 0$? 

We finish with an extra food for thought: one computes $M^4[\sin](x) = \sin x - x + x^3/6$, so $(I-M^4)[\sin](x) = x - x^3/6$. You already see the pattern: $(\sum (M^4)^k)[x - x^3/6]$ is precisely the series for $\sin x$. (Technical problems like convergence and range is easy like above so we left them to readers as well.) Can we do the same for any differential equation solution like functions? Does it depend on the radius of convergence? Or...does it apply to all $C^{\infty}$ functions? How interesting...