Modulo

Èç ðàññûëêè softtalk #27093 Jun 5, 2000

Èç-çà ïðîáëåì ñ ïî÷òîé òîëüêî ñåé÷àñ óâèäåë ýòî îáñóæäåíèå:

> âçÿë ñëîâî, ïåðåêîäèðîâàë åãî èç 1251 â
> ÊÎÈ, òî, ÷òî ïîëó÷èëîñü îïÿòü ïåðåêîäèðîâàë
> èç 1251 â ÊÎÈ ...  èòîãå ïîëó÷èë èñõîäíîå ñëîâî :-)


Íèêàêîé ìèñòèêè çäåñü, êîíå÷íî, íåò - îáû÷íûé ðåçóëüòàò ïðè âû÷èñëåíèÿõ ïî ìîäóëþ.

È õîòÿ òåìà îòíîñèòñÿ ñêîðåå ê Àáñòðàêòíîé Àëãåáðå, íåæåëè ñîôòó, ââèäó ðàñïðîñòðàíåííîñòè è âàæíîñòè âû÷èñëåíèé ïî ìîäóëþ, ðåøèë ðàçúÿñíèòü ïðîèñõîäÿùåå ÷óòü ïîäðîáíåå.

 ðåàëüíîé æèçíè íàñ îêðóæàåò ìíîæåñòâî óñòðîéñòâ è ÿâëåíèé, ñâÿçàííûõ ñ îïåðàöèÿìè ïî íåêîòîðîìó ìîäóëþ - ïðàêòè÷åñêè âñåãäà, åñëè ýòî ñâÿçàíî ñ äâèæåíèåì ïî îêðóæíîñòè èëè èçìåðåíèåì âðåìåíè.

 øêîëå ìû ïðèâûêàåì, ÷òî âñå âû÷èñëåíèÿ ïðîâîäÿòñÿ íàä ÷èñëàìè, ïðåäñòàâëåííûìè â âèäå îòìåòîê íà áåñêîíå÷íîé ÷èñëîâîé îñè.

×àñòî, îäíàêî, óäîáíî èñïîëüçîâàòü ïðÿìî ïðîòèâîïîëîæíîå ïðåäñòàâëåíèå, êîãäà âìåñòî áåñêîíå÷íîé ïðÿìîé, îòìåòêè ðàñïîëàãàþòñÿ íà îêðóæíîñòè, òàê ÷òî ïåðâîå è ïîñëåäíåå ÷èñëà øêàëû ñîâïàäàþò.

Ïðîñòåéøèé è ïðèâû÷íûé ïðèáîð äëÿ òàêèõ âû÷èñëåíèé - öèôåðáëàò ÷àñîâ.

Òàê, íàïðèìåð, ñåêóíäû è ìèíóòû îòñ÷èòûâàþòñÿ ïî ìîäóëþ 60, è îòìåòêà 60 îäíîâðåìåííî ÿâëÿåòñÿ è îòìåòêîé 0.

×àñû îòñ÷èòûâàþòñÿ ïî ìîäóëþ 12 èëè 24.

Äðóãîé ðàñïðîñòðàíåííûé ïðèáîð äëÿ ðàñ÷åòîâ ïî ìîäóëþ - êàëåíäàðü.

Ñëåäóÿ âîñõîäÿùåé ê äðåâíåìó Øóìåðó òðàäèöèè, ìû ñ÷èòàåì äíè íåäåëè ïî ìîäóëþ 7 (ñîîòâåòñòâåííî ôàçàì Ëóíû).

Äðóãèå ìîäóëè, èñïîëüçóåìûå â ñîâðåìåííîì Ãðåãîðèàíñêîì êàëåíäàðå, ýòî 3 äëÿ êâàðòàëîâ, 12 - äëÿ ìåñÿöåâ è 365/366 äëÿ îòñ÷åòà ëåò.

 òàáëèöå ASCII èñïîëüçóåòñÿ 256 ðàçëè÷íûõ ñèìâîëîâ è, òàêèì îáðàçîì, ðàçëè÷íûå êîíâåðòåðû èç îäíîé êîäèðîâêè â äðóãóþ èñïîëüçóþò íåêîòîðûå ìîäóëè, íå ïðåâûøàþùèå ýòîãî çíà÷åíèÿ.

Âàæíî îòìåòèòü, ÷òî ïðè ëþáîì îáðàòèìîì ïåðåêîäèðîâàíèè òåêñòà, êàæäûé ñèìâîë ïåðåõîäèò ëèáî ñàì â ñåáÿ ëèáî â äðóãîé ñèìâîë òîãî æå ñàìîãî 256-ñèìâîëüíîãî àëôàâèòà, íî íå âî ÷òî-òî èíîå, ñêàæåì ÷èñëî PI = 3.1415926...

 òàêèõ ñëó÷àÿõ ãîâîðÿò, ÷òî ðåçóëüòàòû ïåðåêîäèðîâîê îáðàçóþò ãðóïïó, à ñàìà ïåðåêîäèðîâêà ÿâëÿåòñÿ ãðóïïîâîé îïåðàöèåé.

Èçó÷åíèå îáùèõ ñâîéñòâ òàêèõ ïðåîáðàçîâàíèé âûäåëèëîñü â ðàçäåë ìàòåìàòèêè, íàçûâàåìûé Òåîðèåé Ãðóïï.

Íå âäàâàÿñü äàëåêî â òåîðèþ, ïîñìîòðèì, ÷òî ïðîèñõîäèò ïðè ñìåíå êîäèðîâêè ðóññêîãî òåêñòà.

Russian Encoding Win-1251, â ÷èñëå ìíîãî äðóãîãî, ïîëíîñòüþ çàèìñòâîâàí ñ Macintosh.

Áóêâàì ðóññêîãî àëôàâèòà ñîîòâåòñòâóþò ñëåäóþùèå ïîçèöèè (ñèìâîëû) ðàñøèðåííîé òàáëèöû ASCII:

Äëÿ êîäèðîâêè Win-1251:

000000C0:  C0 C1 C2 C3 C4 C5 C6 C7 ¦ C8 C9 CA CB CC CD CE CF   ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ
000000D0:  D0 D1 D2 D3 D4 D5 D6 D7 ¦ D8 D9 DA DB DC DD DE DF   ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß
000000E0:  E0 E1 E2 E3 E4 E5 E6 E7 ¦ E8 E9 EA EB EC ED EE EF   àáâãäåæçèéêëìíîï
000000F0:  F0 F1 F2 F3 F4 F5 F6 F7 ¦ F8 F9 FA FB FC FD FE FF   ðñòóôõö÷øùúûüýþÿ

Äëÿ êîäèðîâêè KOI-8:

000000A0:  A0 A1 A2 A3 A4 A5 A6 A7 ¦ A8 A9 AA AB AC AD AE AF   -¦+¸+++++++++++¦
000000B0:  B0 B1 B2 B3 B4 B5 B6 B7 ¦ B8 B9 BA BB BC BD BE BF   ¦¦¦¨¦¦------+++¹
000000C0:  C0 C1 C2 C3 C4 C5 C6 C7 ¦ C8 C9 CA CB CC CD CE CF   þàáöäåôãõèéêëìíî
000000D0:  D0 D1 D2 D3 D4 D5 D6 D7 ¦ D8 D9 DA DB DC DD DE DF   ïÿðñòóæâüûçøýù÷ú
000000E0:  E0 E1 E2 E3 E4 E5 E6 E7 ¦ E8 E9 EA EB EC ED EE EF   ÞÀÁÖÄÅÔÃÕÈÉÊËÌÍÎ
000000F0:  F0 F1 F2 F3 F4 F5 F6 F7 ¦ F8 F9 FA FB FC FD FE FF   ÏßÐÑÒÓÆÂÜÛÇØÝÙ×Ú

Ëåãêî âèäåòü, ÷òî áóêâû ¸ (A3) è ¨ (B3) íå ñîäåðæàòñÿ â Win-1251 è ñëîâà ñ ýòèìè áóêâàìè íå ìîãóò áûòü ïðàâèëüíî êîíâåðòèðîâàíû, ïîýòîìó â äàëüíåéøèõ ðàññóæäåíèÿõ ìû áóäåì èñïîëüçîâàòü òîëüêî óñå÷åííûé ðóññêèé àëôàâèò èç 32 áóêâ.

Äëÿ êîäèðîâêè Win-1251:

000000C0:  C0 C1 C2 C3 C4 C5 C6 C7 ¦ C8 C9 CA CB CC CD CE CF   ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ
000000D0:  D0 D1 D2 D3 D4 D5 D6 D7 ¦ D8 D9 DA DB DC DD DE DF   ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß
000000E0:  E0 E1 E2 E3 E4 E5 E6 E7 ¦ E8 E9 EA EB EC ED EE EF   àáâãäåæçèéêëìíîï
000000F0:  F0 F1 F2 F3 F4 F5 F6 F7 ¦ F8 F9 FA FB FC FD FE FF   ðñòóôõö÷øùúûüýþÿ

Äëÿ êîäèðîâêè KOI-8:

000000C0:  C0 C1 C2 C3 C4 C5 C6 C7 ¦ C8 C9 CA CB CC CD CE CF   þàáöäåôãõèéêëìíî
000000D0:  D0 D1 D2 D3 D4 D5 D6 D7 ¦ D8 D9 DA DB DC DD DE DF   ïÿðñòóæâüûçøýù÷ú
000000E0:  E0 E1 E2 E3 E4 E5 E6 E7 ¦ E8 E9 EA EB EC ED EE EF   ÞÀÁÖÄÅÔÃÕÈÉÊËÌÍÎ
000000F0:  F0 F1 F2 F3 F4 F5 F6 F7 ¦ F8 F9 FA FB FC FD FE FF   ÏßÐÑÒÓÆÂÜÛÇØÝÙ×Ú

 îòëè÷èå îò ñîâåðøåííî ïðîèçâîëüíîé êîäèðîâêè Win-1251, KOI-8 óñòðîåíà î÷åíü ïðîäóìàííî, òàê, ÷òîáû ïðè ïîòåðå ñòàðøåãî áèòà (îáû÷íàÿ èñòîðèÿ ïðè ïåðåñûëêå ïî÷òû íà Unix-ìàøèíû), ðóññêèå áóêâû ïåðåøëè â ñîîòâåòñòâóþùèå èì àíãëèéñêèå (òðàíñëèòåðàöèÿ) è òåêñò âñå æå îñòàëñÿ ÷èòàåìûì. Ýòèì îáúÿñíÿåòñÿ íåàëôàâèòíûé ïîðÿäîê áóêâ â òàáëèöå KOI-8.

Èòàê, ìû âèäèì, ÷òî ïðåîáðàçîâàíèå òåêñòà Win-1251 -> KOI-8 çàòðàãèâàåò òîëüêî 64 ñèìâîëà (èëè 32, åñëè ïðåíåáðå÷ü ðåãèñòðîì) è, òàêèì îáðàçîì, íåîáõîäèìî èñïîëüçîâàòü àðèôìåòèêó ïî ìîäóëþ 64.

×àñòî, îêðóæíîñòü ñâÿçàííóþ ñ âû÷èñëåíèÿìè ïî ìîäóëþ ïðåäñòàâëÿþò êàê îêðóæíîñòü åäèíè÷íîãî ðàäèóñà íà êîìïëåêñíîé ïëîñêîñòè, à ÷èñëîâûå îòìåòêè íà íåé (÷èñëà îò 0 äî N-1, ãäå N - ìîäóëü), òðàêòóþò êàê êîìïëåêñíûå êîðíè ñòåïåíè N èç åäèíèöû.

Ìû íå áóäåì èñïîëüçîâàòü ýòî ïðåäñòàâëåíèå, íî îáû÷íî îíî âåñüìà óäîáíî è ïîëåçíî.

Ïðîùå âñåãî ïðåäñòàâèòü íàøó øêàëó êàê êðóãëûé öèôåðáëàò ñ 64 îòìåòêàìè îò 'À' (0) äî 'ÿ' (63).

Ðàññìîòðèì ÷òî ïðîèñõîäèò ïðè ïåðåêîäèðîâêå T (Win-1251 -> KOI-8) ñ ïåðâîé áóêâîé 'À'.

'À' (C0) èç òàáëèöû Win-1251 äîëæíî ïåðåéòè â 'À' (E1) èç òàáëèöû KOI-8.

Åñëè îáîçíà÷èòü îðèãèíàëüíóþ ëèòåðó (Win-1251) êàê A0 è ïåðåêîäèðîâàííóþ - êàê A1, à îïåðàòîð ïåðåêîäèðîâêè êàê T, òî îïåðàöèþ òðàíñëÿöèè ìîæíî ñîêðàùåííî çàïèñàòü êàê

   A1 = T * A0

Íî (E1) â òàáëèöå Win-1251 ñîîòâåòñòâóåò óæå íå 'À', òàê ÷òî åñëè ìû ñíîâà ðàññìàòðèâàåì ïåðåêîäèðîâàííûé òåêñò êàê òåêñò â êîäèðîâêå Win-1251, òî íàì íåîáõîäèìî âûÿñíèòü, êàêàÿ ëèòåðà ñåé÷àñ íàõîäèòñÿ â òîé æå ñàìîé ïîçèöèè, ãäå áûëà 'A'.

 òàáëèöå Win-1251, êîäó (E1) ñîîòâåòñòâóåò ëèòåðà 'á', òî åñòü çàïèñü

   A1 = T * A0

ýêâèâàëåíòíà

   'á' = T * 'À'

Èëè, èíûìè ñëîâàìè, ïðåîáðàçîâàíèå T ïåðåâîäèò 'À' â 'á'.

Åñëè íà íàøåì öèôåðáëàòå (0 - 63) íàðèñîâàòü ñòðåëêó èç öåíòðà (êàê íà îáû÷íûõ ÷àñàõ), òî ïðåîáðàçîâàíèå A1 = T * A0 ðàâíîñèëüíî ïîâîðîòó ýòîé ñòðåëêè íà íåêîòîðûé óãîë, îò 'À' ê 'á'.

Åñëè ìû áóäåì èçìåðÿòü ýòî ðàññòîÿíèå (ìåòðèêó) òàêæå, êàê ìû ýòî äåëàåì íà îáû÷íûõ ÷àñàõ - â îòðåçêàõ îêðóæíîñòè, òî ìû ìîæåì âû÷èñëèòü "ñêîëüêî ïðîøëî" îò 'À' äî 'á' ïðîñòî âû÷òÿ îäíî èç äðóãîãî.

   'á' - 'À' = E1 - C0 = 21   // Âñå öèôðû - øåñòíàäöàòåðè÷íûå

(äåñÿòè÷íîå çíà÷åíèå 21 - 33)

Âûÿñíèì, òåïåðü, âî ÷òî ïåðåõîäèò 'á' ïðè ïðåîáðàçîâàíèè T.

 òàáëèöå Win-1251 'á' èìååò êîä (E1), à â òàáëèöå KOI-8
åìó ñîîòâåòñòâóåò êîä (C2).

Òî åñòü, ïðè ñëåäóþùåì ïðåîáðàçîâàíèè T (Win-1251 -> KOI-8) íà ìåñòå áóêâû 'À' áóäåò ñòîÿòü áóêâà ñ êîäîì (C2) â òàáëèöå Win-1251, òî åñòü 'Â'
   
   'Â' - 'á' = C2 - E1 = - 1F

Òî åñòü, ñòðåëêà ïîâåðíóëàñü íàçàä íà 1F = 31 (äåñÿòè÷íîå).

Íî òàê êàê âñå âû÷èñëåíèÿ ïðîèñõîäÿò íà êðóãëîì öèôåðáëàòå (ïî mod 64), òî ïîâîðîò íàçàä ðàâíîñèëåí ïîâîðîòó âïåðåä íà äîïîëíèòåëüíîå ïî ìîäóëþ ÷èñëî, òî åñòü íà 33 (äåñÿòè÷íîå).

Òàêèì îáðàçîì, ïîñëå äâóõ ïðåîáðàçîâàíèé T, èñõîäíàÿ ëèòåðà 'À' ïåðåìåñòèëàñü íà 66 ïîçèöèé, íî òàê 64 èç íèõ ñîñòàâèëè ïîëíûé îáîðîò, òî âèäèìîå ïåðåìåùåíèå ñîñòàâëÿåò 66 ïî ìîäóëþ 64, òî åñòü 2.

   33 + 33 = 66 (mod 64) = 2

Âûÿñíèì, òåïåðü, âî ÷òî ïåðåõîäèò 'Â' ïðè ïðåîáðàçîâàíèè T.

 òàáëèöå Win-1251 'Â' èìååò êîä (C2), à â òàáëèöå KOI-8 åìó ñîîòâåòñòâóåò êîä (F7).

Êîäó (F7) â òàáëèöå Win-1251 ñîîòâåòñòâóåò ëèòåðà '÷'.

   '÷' - 'Â' = F7 - C2 = 35   // Âñå öèôðû - øåñòíàäöàòåðè÷íûå

(äåñÿòè÷íîå çíà÷åíèå 35 - 53)

Òàêèì îáðàçîì, ïîñëå òðåòüåé ïåðåêîäèðîâêè ñäâèã ñîñòàâèë

   33 + 33 + 53 = 119 (mod 64) = 55

Ëåãêî ïîíÿòü, ÷òî ÷åðåç íåêîòîðîå êîëè÷åñòâî ïåðåêîäèðîâîê ñóììà ñäâèãîâ îêàæåòñÿ êðàòíîé 64, òî åñòü áóêâà 'À' ïåðåéäåò ñàìà â ñåáÿ. (Åñëè âû çíàêîìû ñ ôðåçåðíûì ðåìåñëîì, ìîæåòå âñïîìíèòü óñòðîéñòâî äåëèòåëüíîé ãîëîâêè).

Òî ÷òî òàêîé ìîìåíò _îáÿçàòåëüíî_ íàñòóïèò (ñóùåñòâîâàíèå ðåøåíèÿ, ò.å. îòñóòñòâèå çàìêíóòûõ öèêëîâ) ñëåäóåò èç âçàèìíî-îäíîçíà÷íîãî ñîîòâåòñòâèÿ äâóõ òàáëèö Win-1251 è KOI-8: êàæäîé ëèòåðå â Win-1251 ñîîòâåòñòâóåò ðîâíî îäíà ëèòåðà â KOI-8.

Âûïîëíåíèå ïîñëåäîâàòåëüíûõ ïåðåêîäèðîâîê ìîæíî óïîäîáèòü ãåíåðàöèè ïîñëåäîâàòåëüíîñòè ïñåâäîñëó÷àéíûõ ÷èñåë, äëèíîé 64 áàéòà.

Ïðè õîðîøåì âûáîðå ñïîñîáà "ïåðåìåøèâàíèÿ" (ïåðåêîäèðîâêè), ïåðèîä ïîñëåäîâàòåëüíîñòè ìîã áû îêàçàòüñÿ äîñòàòî÷íî áîëüøèì, íî â íàøåì ñëó÷àå ýòî, êàæåòñÿ, íå òàê.

×òîáû óáåäèòüñÿ â ýòîì îêîí÷àòåëüíî, ÿ íàïèñàë ìàëåíüêóþ ïðîãðàììó - ñèìóëÿòîð Modulo.com, êîòîðàÿ âûâîäèò íà ýêðàí (â Win-1251) ðåçóëüòàòû ïîñëåäîâàòåëüíûõ ïðåîáðàçîâàíèé äëÿ êàæäîé áóêâû è äëèíó öèêëà.

×òîáû ñîõðàíèòü ðåçóëüòàò â ôàéëå, èñïîëüçóéòå ïåðåíàïðàâëåíèå âûâîäà:

   modulo.com > result.txt

Íèæå ïðèâåäåí ïîëíûé âûâîä ïðîãðàììû:

À: ÀáÂ÷ÞàÁâ×þÀ
Á: Áâ×þÀáÂ÷ÞàÁ
Â: Â÷ÞàÁâ×þÀáÂ
Ã: ÃçÚÿÑóÕèÉêËìÍîÏðÒôÆöÃ
Ä: ÄäÄ
Å: ÅåÅ
Æ: ÆöÃçÚÿÑóÕèÉêËìÍîÏðÒôÆ
Ç: ÇúßñÓõÈéÊëÌíÎïÐòÔæÖãÇ
È: ÈéÊëÌíÎïÐòÔæÖãÇúßñÓõÈ
É: ÉêËìÍîÏðÒôÆöÃçÚÿÑóÕèÉ
Ê: ÊëÌíÎïÐòÔæÖãÇúßñÓõÈéÊ
Ë: ËìÍîÏðÒôÆöÃçÚÿÑóÕèÉêË
Ì: ÌíÎïÐòÔæÖãÇúßñÓõÈéÊëÌ
Í: ÍîÏðÒôÆöÃçÚÿÑóÕèÉêËìÍ
Î: ÎïÐòÔæÖãÇúßñÓõÈéÊëÌíÎ
Ï: ÏðÒôÆöÃçÚÿÑóÕèÉêËìÍîÏ
Ð: ÐòÔæÖãÇúßñÓõÈéÊëÌíÎïÐ
Ñ: ÑóÕèÉêËìÍîÏðÒôÆöÃçÚÿÑ
Ò: ÒôÆöÃçÚÿÑóÕèÉêËìÍîÏðÒ
Ó: ÓõÈéÊëÌíÎïÐòÔæÖãÇúßñÓ
Ô: ÔæÖãÇúßñÓõÈéÊëÌíÎïÐòÔ
Õ: ÕèÉêËìÍîÏðÒôÆöÃçÚÿÑóÕ
Ö: ÖãÇúßñÓõÈéÊëÌíÎïÐòÔæÖ
×: ×þÀáÂ÷ÞàÁâ×
Ø: ØûÙýÜøÛùÝüØ
Ù: ÙýÜøÛùÝüØûÙ
Ú: ÚÿÑóÕèÉêËìÍîÏðÒôÆöÃçÚ
Û: ÛùÝüØûÙýÜøÛ
Ü: ÜøÛùÝüØûÙýÜ
Ý: ÝüØûÙýÜøÛùÝ
Þ: ÞàÁâ×þÀáÂ÷Þ
ß: ßñÓõÈéÊëÌíÎïÐòÔæÖãÇúß
à: àÁâ×þÀáÂ÷Þà
á: áÂ÷ÞàÁâ×þÀá
â: â×þÀáÂ÷ÞàÁâ
ã: ãÇúßñÓõÈéÊëÌíÎïÐòÔæÖã
ä: äÄä
å: åÅå
æ: æÖãÇúßñÓõÈéÊëÌíÎïÐòÔæ
ç: çÚÿÑóÕèÉêËìÍîÏðÒôÆöÃç
è: èÉêËìÍîÏðÒôÆöÃçÚÿÑóÕè
é: éÊëÌíÎïÐòÔæÖãÇúßñÓõÈé
ê: êËìÍîÏðÒôÆöÃçÚÿÑóÕèÉê
ë: ëÌíÎïÐòÔæÖãÇúßñÓõÈéÊë
ì: ìÍîÏðÒôÆöÃçÚÿÑóÕèÉêËì
í: íÎïÐòÔæÖãÇúßñÓõÈéÊëÌí
î: îÏðÒôÆöÃçÚÿÑóÕèÉêËìÍî
ï: ïÐòÔæÖãÇúßñÓõÈéÊëÌíÎï
ð: ðÒôÆöÃçÚÿÑóÕèÉêËìÍîÏð
ñ: ñÓõÈéÊëÌíÎïÐòÔæÖãÇúßñ
ò: òÔæÖãÇúßñÓõÈéÊëÌíÎïÐò
ó: óÕèÉêËìÍîÏðÒôÆöÃçÚÿÑó
ô: ôÆöÃçÚÿÑóÕèÉêËìÍîÏðÒô
õ: õÈéÊëÌíÎïÐòÔæÖãÇúßñÓõ
ö: öÃçÚÿÑóÕèÉêËìÍîÏðÒôÆö
÷: ÷ÞàÁâ×þÀáÂ÷
ø: øÛùÝüØûÙýÜø
ù: ùÝüØûÙýÜøÛù
ú: úßñÓõÈéÊëÌíÎïÐòÔæÖãÇú
û: ûÙýÜøÛùÝüØû
ü: üØûÙýÜøÛùÝü
ý: ýÜøÛùÝüØûÙý
þ: þÀáÂ÷ÞàÁâ×þ
ÿ: ÿÑóÕèÉêËìÍîÏðÒôÆöÃçÚÿ

*** Relative Loop Size

À: 00010
Á: 00010
Â: 00010
Ã: 00020
Ä: 00002
Å: 00002
Æ: 00020
Ç: 00020
È: 00020
É: 00020
Ê: 00020
Ë: 00020
Ì: 00020
Í: 00020
Î: 00020
Ï: 00020
Ð: 00020
Ñ: 00020
Ò: 00020
Ó: 00020
Ô: 00020
Õ: 00020
Ö: 00020
×: 00010
Ø: 00010
Ù: 00010
Ú: 00020
Û: 00010
Ü: 00010
Ý: 00010
Þ: 00010
ß: 00020
à: 00010
á: 00010
â: 00010
ã: 00020
ä: 00002
å: 00002
æ: 00020
ç: 00020
è: 00020
é: 00020
ê: 00020
ë: 00020
ì: 00020
í: 00020
î: 00020
ï: 00020
ð: 00020
ñ: 00020
ò: 00020
ó: 00020
ô: 00020
õ: 00020
ö: 00020
÷: 00010
ø: 00010
ù: 00010
ú: 00020
û: 00010
ü: 00010
ý: 00010
þ: 00010
ÿ: 00020

Ëåãêî çàìåòèòü, ÷òî äëèíà öèêëà äëÿ ðàçëè÷íûõ áóêâ ïðèíèìàåò âñåãî òðè ðàçëè÷íûõ çíà÷åíèÿ: 2, 10 è 20.

Èõ íàèìåíüøåå îáùåå êðàòíîå - 20.

Òàêèì îáðàçîì, ðîâíî çà 20 ïîñëåäîâàòåëüíûõ ïåðåêîäèðîâîê Win-1251 -> KOI-8, ëþáîé òåêñò, íå ñîäåðæàùèé áóêâ ¸ (A3) è ¨ (B3), ïðèìåò ñâîé ïåðâîíà÷àëüíûé âèä.


Ðåöåíçèè