bookmark_borderGKS 2021 Round B

之前我提過這系列解題筆記原本是要在 GKS Round A 時就開始寫的,既然 Round B 可以上場了那就來寫吧。

先提一下:接下來的 GKS 我不會全部參加;現在已經知道的是至少七月的 Round D 舉行的時間正好我會比較忙,所以那一回確定不參加。其他回就看我那個時間有沒有空了。

分數截圖以下開始有雷。(對,這張截圖是在結束前半小時時截的 XD 賽後的名次是 164 名,果然 Q4 +4 太傷了……)

Continue reading “GKS 2021 Round B”

bookmark_borderProject Euler 解題筆記 (2)

#152 Writing 1/2 as a sum of inverse squares (難度 65%)

這題躺在我的未解題裡躺很久了:有一陣子我在嘗試從頭開始答題,寫一寫就撞上這題這個軟牆,所以就開始往後亂跳題目 XD 也就是說,除了在約三四百題那附近時有比較集中在一出題就去解之外,其他的解題進度都是這樣散散的,看到有點難的題目就給它拼命跳,所以這題才留著這麼久。

題目很簡單:就如同標題說的,把 1/2 寫成不同整數平方的倒數和。題目敘述給了一個範例:

$$\begin{align}\dfrac{1}{2} &= \dfrac{1}{2^2} + \dfrac{1}{3^2} + \dfrac{1}{4^2} + \dfrac{1}{5^2} +\\
&\quad \dfrac{1}{7^2} + \dfrac{1}{12^2} + \dfrac{1}{15^2} + \dfrac{1}{20^2} +\\
&\quad \dfrac{1}{28^2} + \dfrac{1}{35^2}\end{align}$$

並且給出如果只考慮 2 到 45 的平方倒數的話,連同這個範例一共只有三組解。題目要問的是:如果放大範圍到 2 到 80 的話有幾組解?

之所以是軟牆是因為,2 到 80 這個範圍很微妙的稍微大了一點;這個題目本質上是一個子集和問題,要我們在給定的 79 個元素中選出數個來加到目標 1/2;由於子集和問題是著名的 NP-Complete 問題,所需要的工作量不會比把 79 個數個別選不選所得到的 \(2^{79}\) 種選項逐一嘗試來得好多少。

Continue reading “Project Euler 解題筆記 (2)”

bookmark_borderProject Euler 解題筆記 (1)

既然要來記解題筆記就來順便記一下時不時會做的 Project Euler 好了。這裡的文章應該會一起排進慣例的週三更新當中,所以看到一篇筆記出來並不代表我剛解完這一題,而可能是好幾天前的事了 XD

我做 Project Euler 主要的工具是 Mathematica,因為很多數學相關的東西可以不用我自己寫;只有在一些資料結構用 MMA 不好寫或很需要效率的時候才會轉用 C++ 來寫的。我的 PE 帳號裡登記的使用語言也是 Mathematica。

另外,為了在全文章模式也作點簡單的防雷,每篇在討論的題目我會放在繼續閱讀之上,然後在前面寫一點這題可以公開的東西,例如簡評或我流翻譯等;在繼續閱讀的前一段我會放上我的 Project Euler 簽名圖,那之下就會來開始放雷了。

#168 – Number Rotations (難度 65%)

簡述這題是這樣的:
142857 這個數字,將其個位數放到最前面 (稱為其右旋轉) 得到 714285,而我們發現 714285 是 142857 的 5 倍整。試問,所有具有此種性質--一數為其右旋轉的因數--並且在 10 到 10100 之間的數的總和,其末五位是多少?

這題其實很久以前解過,但因為少考慮了一個東西所以 WA 了不少次,就被我放著了。最近回來重新思考才發現我少考慮的東西是什麼--而說來有趣,題目用 142857 舉例正是讓我掉進這個陷阱的元兇 XD

Continue reading “Project Euler 解題筆記 (1)”

bookmark_border文字編碼雜談 (4)

這個第四篇原本要寫的是另一個主題,不過由於最近有一件應該和編碼稍微有關的事上了新聞,所以就從那個新聞開始來談一個 Unicode 的一個不少人還是會忽略的部份。

「開元路𩵚魠魚羹」

大約在這篇文章發表的半個月前,特斯拉的導航功能出了一個只有台灣才會碰到的 bug:當要導航導向「開元路𩵚魠魚羹」的時候導航系統會當機。新聞方面各位搜尋一下這個名字就能找得到不少文章,但這個 bug 的成因由於特斯拉官方沒有正式發表,所以大家都只能猜:有猜測是這幾個字的發音會跟命令導航系統重開機的指令很接近,也有猜測是說這其實是因為導航系統無法正確處理「𩵚」這個字造成的。

我對電腦語音辨識不熟,所以不太能判斷這個「和重開機指令接近」是不是個可能原因,但後一個猜測「系統不能處理『𩵚』字」卻是在處理 Unicode 編碼時很有可能撞上的問題。

究意這是什麼樣的問題?

Continue reading “文字編碼雜談 (4)”

bookmark_border文字編碼雜談 (3)

第一篇裡我提到了一個問題叫衝碼問題,第二篇裡也帶到過這個問題會造成亂碼。狹義上來說這個問題專指被命名為「許功蓋問題」的大五碼衝碼問題,不過同樣概念的衝碼問題其實並不只有這一個,而它造成的問題當中亂碼還是比較小的一個。這篇文章就來詳細談談它吧。

「是否看過坊間常見的許茹芸淚海慶功宴吃蓋飯第四集」

跟我同年代用過大五碼的人多半看過這個小標題吧。這句話出自 pietty 的作者 piaip,他說「這個句子包括了大部份容易出問題的 Big5 字代表」,因此可以拿來測試軟體系統有沒有衝碼問題。

究竟這是個什麼樣的問題?

Continue reading “文字編碼雜談 (3)”

bookmark_border文字編碼雜談 (2)

系列文章的第二篇,就來簡單談談所謂的「亂碼」吧。

亂碼與他們的產地

這節的標題是一篇 Facebook 轉貼文的加註,最原始的出處則是一個中國人的推特。雖然那個表格是以 GBK 編碼為主,但除了怎麼解讀亂碼之外,其實還有一個很重要的訊息在裡面。

Continue reading “文字編碼雜談 (2)”

bookmark_border文字編碼雜談 (1)

有了地方應該要放一點東西,所以就來嘗試把一些很早之前就想寫想整理的東西來寫出來好了。打頭陣的這個文字編碼的題材是很久以前就已經開始寫的 (有紀錄的草稿是七年前開始的),雖然還不確定要怎麼分篇但就慢慢整理吧。

Continue reading “文字編碼雜談 (1)”