Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«UNIX β€” ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ срСда программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 55

Автор ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½ Π‘Ρ€Π°ΠΉΠ°Π½ Уилсон

Β  for (i = 1; i <= N; i++) # make a string of blanks

Β Β  blanks = blanks " "

Β }

Β {

Β  if ((n = length($0)) <= N)

Β Β  print

Β  else {

Β Β  for (i = 1; n > N; n -= N) {

Β Β Β  printf "%s\\\n", substr($0,i,N)

Β Β Β  i += N;

Β Β  }

Β Β  printf "%s%s\n" , substr(blanks, 1, N-n), substr($0, I)

Β  }

Β } '

На языкС

awk
Π½Π΅Ρ‚ явной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ строк; строки ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ, Ссли ΠΎΠ½ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ подряд. Π’Π½Π°Ρ‡Π°Π»Π΅
blanks
являСтся пустой строкой. Π¦ΠΈΠΊΠ» Π² части
BEGIN
создаСт Π΄Π»ΠΈΠ½Π½ΡƒΡŽ строку ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠ΅ΠΉ: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ шаг Ρ†ΠΈΠΊΠ»Π° прибавляСт Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΠ±Π΅Π» ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ строки
blanks
. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ входная строка разбиваСтся Π½Π° части, ΠΏΠΎΠΊΠ° ΠΎΡΡ‚Π°Π²ΡˆΠ°ΡΡΡ Ρ‡Π°ΡΡ‚ΡŒ Π½Π΅ станСт достаточно ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ. Как ΠΈ Π² языкС Π‘ΠΈ, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ присваивания ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС выраТСния, поэтому Π² конструкции

if ((n=length($0)) <= N)...

Π΄Π»ΠΈΠ½Π° Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ строки присваиваСтся

n
Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ значСния. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° скобки.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 4.10

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ

fold
Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Ρ‹Π² строки происходил Π½Π° ΠΏΡ€ΠΎΠ±Π΅Π»Π΅ ΠΈΠ»ΠΈ символС табуляции, Π° Π½Π΅ посрСди слова. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠΉ ΠΈ для Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… слов.

ВзаимодСйствиС с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ

Допустим, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π°ΠΌΠ΅Ρ€Π΅Π²Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ

field n
. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ n-Π΅ ΠΏΠΎΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ строки Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Π΄Π°Ρ‚ΡŒ:

$ who | field 1

для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ входят Π² систСму. Π―Π·Ρ‹ΠΊ

awk
явно прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠΎΠ»Π΅ΠΉ. Наша основная Π·Π°Π΄Π°Ρ‡Π° β€” ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ n ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅
awk
. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ:

$ awk '{print $'$1'}'

Π—Π΄Π΅ΡΡŒ

$1
ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ (Π½Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΊΠΈΡ… Π»ΠΈΠ±ΠΎ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ), ΠΈ поэтому становится Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ поля, доступным Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅
awk
. ΠŸΡ€ΠΈ ΠΈΠ½ΠΎΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ:

awk "{print \$$1}"

АргумСнт обрабатываСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ, поэтому

\$
становится
$
, Π°
$1
замСняСтся Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
n
. ΠœΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ с апострофами (ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ использовании ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅
awk
появится слишком ΠΌΠ½ΠΎΠ³ΠΎ символов
\
.

Π”Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

addup n
, ΡΡƒΠΌΠΌΠΈΡ€ΡƒΡŽΡ‰Π°Ρ значСния n-Π³ΠΎ поля:

awk '{s += $'$1'}

END {print s}'

Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ суммы Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ n-Π³ΠΎ поля ΠΈ полная сумма:

awk '

BEGIN { n = '$1' }

{ for (i=1; i <= n; i++)

Β Β  sum[i] += $1

}

END { for(i = 1; i <= n; i++)

Β Β Β Β Β  {

Β Β Β Β Β Β  printf "%6g ", sum[i]

Β Β Β Β Β Β  total += sum[i]

Β Β Β Β Β  }

Β Β Β Β Β  printf "; total = %6g ", total

Β Β Β  }'

Нам ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ

BEGIN
для засылки значСния Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ
n
, Ρ‡Π΅ΠΌ Π·Π°ΡΠΎΡ€ΡΡ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ.

Основная Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡΡ‚ΡŒ Π²ΠΎ всСх ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… состоит Π½Π΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ (хотя ΠΈ это Ρ…Π»ΠΎΠΏΠΎΡ‚Π½ΠΎ), Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, составлСнныС ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ способом, ΠΌΠΎΠ³ΡƒΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свой стандартный Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ. НСт Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ возмоТности ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΠΌ сразу ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€

n
, ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ список ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ². Для этого трСбуСтся опрСдСлСнная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° программирования Π½Π° языкС
shell
; ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ рассмотрим Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅.

БлуТСбная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ Π½Π° языкС
awk

Π’ нашСм послСднСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ассоциативныС массивы, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ взаимодСйствиС с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ частично показываСтся процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π—Π°Π΄Π°Ρ‡Π° состоит Π² создании систСмы, ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‰Π΅ΠΉ Π²Π°ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡƒΡ‚Ρ€ΠΎ ΠΏΠΎΡ‡Ρ‚Ρƒ с Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ± ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… событиях. (Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, такая калСндарная систСма ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ; см. руководство ΠΏΠΎ

calendar(1)
.) Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ примСняСтся ΠΈΠ½ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π’Π°ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ пСрСчислСны события, происходящиС сСгодня ΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, прСдстоящиС сСгодняшниС ΠΈ Π·Π°Π²Ρ‚Ρ€Π°ΡˆΠ½ΠΈΠ΅ события. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ‡Π΅Ρ‚ ΠΏΡ€Π°Π·Π΄Π½ΠΈΠΊΠΎΠ² ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… оставлСн Π²Π°ΠΌ Π² качСствС упраТнСния.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ мСсто, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ. Π˜ΠΌΠ΅Π΅Ρ‚ смысл Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ

calendar
Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅
/usr/you
:

$ cat calendar

Sep 30 дСнь роТдСния ΠΌΠ°ΠΌΡ‹

OctΒ  1 ΠΎΠ±Π΅Π΄ с Π”ΠΆΠΎ, полдСнь

OctΒ  1 встрСча Π² 16:00

$

Π”Π°Π»Π΅Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ, отыскивая ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π΄Π°Ρ‚Ρƒ. БущСствуСт масса Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²; ΠΌΡ‹ остановимся Π½Π° языкС

awk
, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π»Π΅Π³Ρ‡Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρƒ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ для этой Ρ†Π΅Π»ΠΈ подходят ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€
sed
ΠΈ
egrep
. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, строки, Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°
calendar
, ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ
mail
.

НаконСц, Π²Π°ΠΌ придСтся Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ автоматичСски ΠΈ Π±Π΅Π·ΠΎΡ‚ΠΊΠ°Π·Π½ΠΎ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь, скаТСм, Ρ€Π°Π½ΠΎ ΡƒΡ‚Ρ€ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

at
, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π² Π³Π». 1.

Если ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ Ρ‚Π°ΠΊΠΈΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ каТдая строка начинаСтся с названия мСсяца ΠΈ числа (ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π°

date
), Ρ‚ΠΎ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ калСндаря Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ: