From 0f6b6451f1683856d508880ee5909b53cec54ee7 Mon Sep 17 00:00:00 2001 From: cschan Date: Fri, 30 Jun 2023 16:05:54 +0800 Subject: [PATCH 1/2] Adds more translations of Theory of heapq --- library/heapq.po | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/library/heapq.po b/library/heapq.po index a64f8d6756..41b69ebe96 100644 --- a/library/heapq.po +++ b/library/heapq.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: Python 3.11\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-19 17:24+0800\n" -"PO-Revision-Date: 2023-06-29 12:10+0800\n" +"PO-Revision-Date: 2023-06-30 16:04+0800\n" "Last-Translator: Liang-Bo Wang \n" "Language-Team: Chinese - TAIWAN (https://github.com/python/python-docs-zh-" "tw)\n" @@ -400,6 +400,11 @@ msgid "" "logarithmic on the total number of items in the tree. By iterating over all " "items, you get an O(n log n) sort." msgstr "" +"如果這個 heap 的不變式恆成立,那麼索引0顯然是最終的贏家。移除並找到「下一個」" +"贏家最簡單的演算法為:將一個輸家(例如上圖中的單元30)移動到位置0,然後從新的" +"位置0不斷與下方的位置交換值來向下傳遞,直到滿足不變式為止。這個過程的複雜度顯" +"然是樹的節點數目的對數級別。透過對所有項目迭代,可以得到一個複雜度為 O(n log " +"n) 的排序。" #: ../../library/heapq.rst:275 msgid "" @@ -412,6 +417,11 @@ msgid "" "they can easily go into the heap. So, a heap is a good structure for " "implementing schedulers (this is what I used for my MIDI sequencer :-)." msgstr "" +"這種排序有個好處,只要插入的項目沒有「優於」你最後提取的索引為0的元素,你就可" +"以在排序進行的同時有效率地插入新項目。這在模擬當中特別有用,其中樹保存了所有" +"輸入事件,並且「贏」意味著最小排程時間。當一個事件排程其它事件時,因這些事件" +"仍在等待進行,所以很容易將它們插入 heap 當中。所以, heap 是一個實現排程器的" +"優秀資料結構 (這就是實作 MIDI 序列器的方法 :-)。" #: ../../library/heapq.rst:284 msgid "" @@ -421,6 +431,9 @@ msgid "" "average case. However, there are other representations which are more " "efficient overall, yet the worst cases might be terrible." msgstr "" +"實作排程器的方法現今已被廣泛研究,heap 對此非常有用,因為它們速度相當快,且速" +"度幾乎不受其他因素影響,最壞情況與平均狀況差異無幾。也有其它整體說來更有效率" +"的方法,然而它們的最壞情況可能會非常糟糕。" #: ../../library/heapq.rst:290 msgid "" @@ -435,6 +448,13 @@ msgid "" "which are twice the size of the memory for random input, and much better for " "input fuzzily ordered." msgstr "" +"對於儲存在硬碟上的大量資料進行排序,heap 也非常有用。你可能已經知道,大量資料" +"排序涉及 “runs” 的產生,也就是預先排序的序列,其大小通常與 CPU 記憶體的大小有" +"關。之後對這些 run 合併,這些合併的過程通常相當巧妙 [#]_。很重要的一點是,初" +"始排序產生的 run 越長越好。錦標賽是達成這一點的好方法,若你用所有可用記憶體來" +"舉行一場錦標賽,並透過替換與向下交換來處理所有適配當前 run 的值,那麼對於隨機" +"產生的輸入,將可以產生長度兩倍於記憶體大小的 run。對於模糊有序的輸入,效果更" +"好。" #: ../../library/heapq.rst:300 msgid "" @@ -446,12 +466,19 @@ msgid "" "the first heap is melting. When the first heap completely vanishes, you " "switch heaps and start a new run. Clever and quite effective!" msgstr "" +"此外,若你將索引為0的項目輸出至磁碟,並取得一個無法適配當前賽局的輸入(因為該" +"值「勝過」最後的輸出值),則該輸入值就無法插入至 heap 當中,因此 heap 的大小" +"會減小。巧妙地,釋放出來的記憶體可以立即再被運用,逐步建構出第二個 heap,其大" +"小增加的速度會與第一個 heap 減少的速度一致。當第一個 heap 完全消失時,你可以" +"切換至第二個 heap 開啟一個新 run 。這真是個聰明且相當有效率的做法!" #: ../../library/heapq.rst:308 msgid "" "In a word, heaps are useful memory structures to know. I use them in a few " "applications, and I think it is good to keep a 'heap' module around. :-)" msgstr "" +"總結來說,heap 是值得了解的有用記憶體結構。我在一些應用中使用它們,我認為能有" +"一個 ‘heap’ 模組是很棒的。:-)" #: ../../library/heapq.rst:312 msgid "Footnotes" @@ -469,3 +496,8 @@ msgid "" "Believe me, real good tape sorts were quite spectacular to watch! From all " "times, sorting has always been a Great Art! :-)" msgstr "" +"現今的磁碟平衡演算法更加複雜難解,這是硬碟查找能力造成的。在沒有查找功能的裝" +"置如大型磁帶機,狀況又不一樣了,人們必須機智地確保(遠遠提前)每次時代移動都" +"盡可能是最有效率的(也就是,最佳化參與「推進」合併的過程)。有些磁帶甚至能夠" +"向後讀取,這功能也被用來避免倒轉時間軸。相信我,真正優秀的磁帶排序看起來相當" +"壯觀!排序一直以來都是一門偉大的藝術!:-)" From 4f009aec3c46fca10517461d412924148ecec865 Mon Sep 17 00:00:00 2001 From: cschan Date: Fri, 30 Jun 2023 23:09:05 +0800 Subject: [PATCH 2/2] Fixes translation of theory of heapq --- library/heapq.po | 64 ++++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/library/heapq.po b/library/heapq.po index 41b69ebe96..a6f8f6be73 100644 --- a/library/heapq.po +++ b/library/heapq.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: Python 3.11\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-19 17:24+0800\n" -"PO-Revision-Date: 2023-06-30 16:04+0800\n" +"PO-Revision-Date: 2023-06-30 23:05+0800\n" "Last-Translator: Liang-Bo Wang \n" "Language-Team: Chinese - TAIWAN (https://github.com/python/python-docs-zh-" "tw)\n" @@ -400,11 +400,11 @@ msgid "" "logarithmic on the total number of items in the tree. By iterating over all " "items, you get an O(n log n) sort." msgstr "" -"如果這個 heap 的不變式恆成立,那麼索引0顯然是最終的贏家。移除並找到「下一個」" -"贏家最簡單的演算法為:將一個輸家(例如上圖中的單元30)移動到位置0,然後從新的" -"位置0不斷與下方的位置交換值來向下傳遞,直到滿足不變式為止。這個過程的複雜度顯" -"然是樹的節點數目的對數級別。透過對所有項目迭代,可以得到一個複雜度為 O(n log " -"n) 的排序。" +"如果能確保滿足這個 heap 的不變式,那麼索引 0 顯然是最終的贏家。移除並找到「下" +"一個」贏家最簡單的演算法為:將一個輸家(例如上圖中的單元 30)移動到位置 0,然" +"後從新的位置 0 不斷與下方的位置交換值來向下傳遞,直到滿足不變式為止。這個過程" +"的複雜度顯然是樹的節點數目的對數級別。透過對所有項目疊代,可以得到一個複雜度" +"為 O(n log n) 的排序。" #: ../../library/heapq.rst:275 msgid "" @@ -417,11 +417,11 @@ msgid "" "they can easily go into the heap. So, a heap is a good structure for " "implementing schedulers (this is what I used for my MIDI sequencer :-)." msgstr "" -"這種排序有個好處,只要插入的項目沒有「優於」你最後提取的索引為0的元素,你就可" -"以在排序進行的同時有效率地插入新項目。這在模擬當中特別有用,其中樹保存了所有" -"輸入事件,並且「贏」意味著最小排程時間。當一個事件排程其它事件時,因這些事件" -"仍在等待進行,所以很容易將它們插入 heap 當中。所以, heap 是一個實現排程器的" -"優秀資料結構 (這就是實作 MIDI 序列器的方法 :-)。" +"這種排序有個好處,只要插入的項目沒有「贏過」你最後提取、索引為 0 的元素,你就" +"可以在排序進行的同時有效率地插入新項目。這在模擬情境當中特別有用,其中樹能夠" +"保存所有輸入事件,而「贏」意味著最小排程時間。當一個事件排程其它事件的執行" +"時,因這些事件仍在等待進行,所以很容易將它們插入 heap 當中。因此, heap 是一" +"個實現排程器的優秀資料結構(這就是我用以實作 MIDI 編曲器的方法 :-)。" #: ../../library/heapq.rst:284 msgid "" @@ -431,9 +431,9 @@ msgid "" "average case. However, there are other representations which are more " "efficient overall, yet the worst cases might be terrible." msgstr "" -"實作排程器的方法現今已被廣泛研究,heap 對此非常有用,因為它們速度相當快,且速" -"度幾乎不受其他因素影響,最壞情況與平均狀況差異無幾。也有其它整體說來更有效率" -"的方法,然而它們的最壞情況可能會非常糟糕。" +"多種用於實作排程器的結構現今已被廣泛研究,heap 對此非常有用,因為它們速度相當" +"快,且速度幾乎不受其他因素影響,最壞情況與平均狀況差異無幾。也有其它整體說來" +"更有效率的方法,然而它們的最壞情況可能會非常糟糕。" #: ../../library/heapq.rst:290 msgid "" @@ -448,13 +448,13 @@ msgid "" "which are twice the size of the memory for random input, and much better for " "input fuzzily ordered." msgstr "" -"對於儲存在硬碟上的大量資料進行排序,heap 也非常有用。你可能已經知道,大量資料" -"排序涉及 “runs” 的產生,也就是預先排序的序列,其大小通常與 CPU 記憶體的大小有" -"關。之後對這些 run 合併,這些合併的過程通常相當巧妙 [#]_。很重要的一點是,初" -"始排序產生的 run 越長越好。錦標賽是達成這一點的好方法,若你用所有可用記憶體來" -"舉行一場錦標賽,並透過替換與向下交換來處理所有適配當前 run 的值,那麼對於隨機" -"產生的輸入,將可以產生長度兩倍於記憶體大小的 run。對於模糊有序的輸入,效果更" -"好。" +"Heap 在為儲存於硬碟上的大量資料進行排序也非常有用。你可能已經知道,大量資料排" +"序涉及 \"runs\" 的產生(也就是預先排序的序列,其大小通常與 CPU 記憶體的大小有" +"關),之後再對這些 run 合併,而這些合併的過程通常相當巧妙 [#]_。很重要的一點" +"是,初始排序產生的 run 越長越好。錦標賽是達成這一點的好方法,若你用所有可用記" +"憶體來舉行一場錦標賽,並透過替換與向下交換來處理所有適配當前 run 的值,那麼對" +"於隨機產生的輸入,將可以產生長度兩倍於記憶體大小的 run。對於已模糊排序過的輸" +"入,效果更好。" #: ../../library/heapq.rst:300 msgid "" @@ -466,11 +466,11 @@ msgid "" "the first heap is melting. When the first heap completely vanishes, you " "switch heaps and start a new run. Clever and quite effective!" msgstr "" -"此外,若你將索引為0的項目輸出至磁碟,並取得一個無法適配當前賽局的輸入(因為該" -"值「勝過」最後的輸出值),則該輸入值就無法插入至 heap 當中,因此 heap 的大小" -"會減小。巧妙地,釋放出來的記憶體可以立即再被運用,逐步建構出第二個 heap,其大" -"小增加的速度會與第一個 heap 減少的速度一致。當第一個 heap 完全消失時,你可以" -"切換至第二個 heap 開啟一個新 run 。這真是個聰明且相當有效率的做法!" +"此外,若你將索引為 0 的項目輸出至磁碟,並取得一個無法適配當前錦標賽的輸入(因" +"為該值「勝過」最後的輸出值),則該輸入值就無法插入至 heap 當中,因此 heap 的" +"大小會減小。釋放出來的記憶體可以巧妙地立即再被運用,逐步建構出第二個 heap,其" +"大小增加的速度會與第一個 heap 減少的速度一致。當第一個 heap 完全消失時,你可" +"以切換至第二個 heap 開啟一個新 run 。這真是個聰明且相當有效率的做法!" #: ../../library/heapq.rst:308 msgid "" @@ -478,7 +478,7 @@ msgid "" "applications, and I think it is good to keep a 'heap' module around. :-)" msgstr "" "總結來說,heap 是值得了解的有用記憶體結構。我在一些應用中使用它們,我認為能有" -"一個 ‘heap’ 模組是很棒的。:-)" +"一個 'heap' 模組是很棒的。:-)" #: ../../library/heapq.rst:312 msgid "Footnotes" @@ -496,8 +496,8 @@ msgid "" "Believe me, real good tape sorts were quite spectacular to watch! From all " "times, sorting has always been a Great Art! :-)" msgstr "" -"現今的磁碟平衡演算法更加複雜難解,這是硬碟查找能力造成的。在沒有查找功能的裝" -"置如大型磁帶機,狀況又不一樣了,人們必須機智地確保(遠遠提前)每次時代移動都" -"盡可能是最有效率的(也就是,最佳化參與「推進」合併的過程)。有些磁帶甚至能夠" -"向後讀取,這功能也被用來避免倒轉時間軸。相信我,真正優秀的磁帶排序看起來相當" -"壯觀!排序一直以來都是一門偉大的藝術!:-)" +"現今的磁碟平衡演算法因為硬碟查找能力而更加複雜難解。在沒有查找功能的裝置如大" +"型磁帶機,狀況又不一樣了,人們必須機智地確保(遠遠提前)每次於磁帶上移動都盡" +"可能是最有效率的(也就是盡可能更好地「推進」合併的過程)。有些磁帶甚至能夠向" +"後讀取,這也被用來避免倒轉的時間。相信我,真正優秀的磁帶排序看起來相當壯觀!" +"排序一直以來都是一門偉大的藝術!:-)"