Радиотехника | Электротехника | Строительство | Растениеводство | Учёба | Книги | Фильмы | Игры | Вопросы-ответы | Визитка

Главы страницы

  1. Работа с программой
  2. Библиотечный файл класса растений Grow_class на Ruby
  3. Главный файл Grow.rb
  4. Эпилог

Как самому расчитать расход ресурсов на выращивание растений на приусадебном или садовом участке

Растения при оптимальном питании

Использована методика учебников для вузов

  1. Коломейченко. Растениеводство
  2. Посыпанов. Растениеводство

Работа с программой

Последовательность работы:

  1. Внести в главный файл данные о площади посева и планируемом урожае в соответствующие переменные (@l_гряды_м, @b_гряды_м, @урожай_кг)
  2. При желании откорректировать значения других переменных
  3. Запустить на выполнение в терминале: ruby grow.rb.
  4. Текстовая информация выведет прогноз по использованию воды и стандартных удобрений

Библиотечный файл класса растений Grow_class на Ruby

require "date"

class Grow
  attr_reader   :version,
    :t0, :start , :control, :класс,
    :sum_at, :sum_at_min, :sum_at_max, :t_midle_day[3],
    :day_all, :day_min, :day_max, :day_end,
    # потребность воды
    :h2o_s[3], #_1, # м2_литр_сут при вегетации
#    :h2o_s_2, # м2_литр_сут при плодоношении
#    :h2o_s_3, # м2_литр_сут при завершении плодоношения
    :t_всходов, :t_min, :t_max, :t_цвет, :t_почвы,
    :урожай_кг, :вынос_npkcm_г_кг[5],
    :урожай_норма, :h2o_sum, :густота_стояния_шт_га,
    :норма_высева_кг_га
  attr_accessor :id, :title, :anons,
    :замачивание, :прорастание, :рассада, :колво,
    :l_гряды_м, :b_гряды_м, :faza,
    :tme, :посев, :всходы
  def initialize( title, колво=1 )
    @@version = "0.2.54"
    t0 = Time.new
    @start = t0.strftime( "%Y-%m-%d %H:%M %Z" )
    @посев = [ 2025, 4, 1 ]
    @всходы = [ 2025, 4, 4 ]
    # сумма активных температур до начала плодоношения
    @sum_at_min = 1000  
    @sum_at_max = 2000  
    @sum_at = 0  # сумма активных температур
    @title = title
    @колво = колво
    @l_гряды_м = 8.0
    @b_гряды_м = 0.35
    @h2o_s=Array.new(3)
    @h2o_s=[ 3.0, 5.5, 3.2 ]
    @faza = 1
    @t_midle_day = [ 26,26,20 ]
    @урожай_норма = 50.0# т с га
    @урожай_кг = 0.000001 
    @норма_высева_г_га = 4500.0
    @густота_стояния_шт_га = 1200000
    @вынос_npkcm_г_кг = [ 2.3, 0.3, 3.3, 0.7, 0.2 ]
#    @прорастание = 10
  end
  def посев=(a)
    @посев=Time.mktime( a[0], a[1], a[2] )
  end
  def всходы=(a)
    @всходы=Time.mktime( a[0], a[1], a[2] )
  end
  def time 
    t = Time.new
    t0= @всходы 
    @tme = t.strftime( "%Y-%m-%d %H:%M %Z" )
    pnow= (t-t0).to_i/3600/24
  end
  def s_гряды
    @l_гряды_м * @b_гряды_м
  end
  def h2o
    self.s_гряды * @h2o_s[ @faza-1 ]
  end
  def h2o_future
    @day_min = @sum_at_min/@t_midle_day[0]
    @day_max = (@sum_at_max-@sum_at_min)/@t_midle_day[1]
    @day_end = 10
    @day_all = @day_min + @day_max + @day_end
    a = @h2o_s[0] * self.s_гряды * @day_min
    b = @h2o_s[1] * self.s_гряды * @day_max
    c = @h2o_s[2] * self.s_гряды * @day_end
    sum = a + b + c
  end
  private  :control
  def title=( a )
    @title = self.control=( a )
  end
  def anons=( a )
    @anons = self.control=( a )
  end
  def замачивание=( a )
    @замачивание = self.control=( a )
  end
  def add_sum_at( a )
    @sum_at = @sum_at.to_i +  a
    if @sum_at>@sum_at_max
      @faza = 3
    else
      @faza = 2
    end
    @faza = 1 if @sum_at<@sum_at_min 
  end
  def calc_sum_at
    min = @sum_at_min / @t_midle_day[0]
    max = @sum_at_max / @t_midle_day[1]
    day = self.time
    @sum_at = day < min ? @t_midle_day[0]*day :
      (day-min) * @t_midle_day[1] + @t_midle_day[0]
    if @sum_at>@sum_at_max
      @faza = 3
    else
      @faza = 2
    end
    @faza = 1 if @sum_at<@sum_at_min 
  end
  def add_урожай( a )
    @урожай_кг = @урожай_кг.to_f +  a
  end
  def about
    printf( "Программа прогнозирования урожая овощей и затрат на негоn")
    printf( "версия %sn", @@version )
  end
  def print
    self.calc_sum_at
    p "   *   " * 6
    printf( "%s %sn", @класс, @title )
    printf( "  Температура всходов = %sn", @t_всходов )
    printf( "              min..max = %s..%sn", @t_min, @t_max )
    printf( "              цветения= %sn", @t_цвет )
    printf( "              почвы   = %sn", @t_почвы )
    printf( "  Анонс: %sn", @anons ) if @anons
    printf( "  Посев  %sn ", @посев.strftime( "%Y.%m.%d" ) )
    printf( "     замачивание: %sn", @замачивание ) if @замачивание
    printf( "     прорастание: %s днейn", @прорастание ) if @прорастание
    printf( "  Всходы %sn", @всходы.strftime( "%Y.%m.%d" ) ) 
    printf( "  Возраст %dn", self.time ) # if @всходы
    printf( "  Занимаемая площадь: %2.2f x %2.2f = %3.2f м2n", @b_гряды_м,@l_гряды_м,self.s_гряды )
    printf( "  Количество растений = %in", @колво )
    printf( "  Густота стояния ( шт ) га = %i, на м2 = %in", @густота_стояния_шт_га, @густота_стояния_шт_га/10000 )
    printf( "  Норма высева ( г ) га = %i, на м2 = %.2fn", @норма_высева_г_га, @норма_высева_г_га.to_f/10000.0 )
    printf( "  Рассада %sn", @рассада ) if @рассада
    printf( "  Фаза = %in", @faza )
    printf( "  Сумма активных температур = %in", @sum_at )
    printf( "  Потребность в воде = %.2f литров в суткиn", self.h2o )
    printf( "              в воде = %.2f литров всегоn", self.h2o_future )
    printf( "          в N=%.2f, P=%.2f K=%.2f Ca=%.2f Mg=%.2f ( г ) на 1 кГ плодов n",
           @вынос_npkcm_г_кг[0],@вынос_npkcm_г_кг[1],@вынос_npkcm_г_кг[2],
           @вынос_npkcm_г_кг[3],@вынос_npkcm_г_кг[4])  
    printf( "          в N=%.2f, P=%.2f K=%.2f Ca=%.2f Mg=%.2f ( г ) реальная n",
           @вынос_npkcm_г_кг[0]*@урожай_кг,@вынос_npkcm_г_кг[1]*@урожай_кг,
           @вынос_npkcm_г_кг[2]*@урожай_кг,
           @вынос_npkcm_г_кг[3]*@урожай_кг,@вынос_npkcm_г_кг[4]*@урожай_кг)  
    printf( "          в N=%.2f, P=%.2f K=%.2f Ca=%.2f Mg=%.2f ( г ) планируемая n",
           @вынос_npkcm_г_кг[0]*@урожай_норма*1000/@густота_стояния_шт_га*@колво,
           @вынос_npkcm_г_кг[1]*@урожай_норма*1000/@густота_стояния_шт_га*@колво,
           @вынос_npkcm_г_кг[2]*@урожай_норма*1000/@густота_стояния_шт_га*@колво,
           @вынос_npkcm_г_кг[3]*@урожай_норма*1000/@густота_стояния_шт_га*@колво,
           @вынос_npkcm_г_кг[4]*@урожай_норма*1000/@густота_стояния_шт_га*@колво)  
    printf( "  Всего жизнедеятельности %i днейn",@day_all )
    printf( "     из них %i дней фаза вегетацииn",@day_min )
    printf( "            %i дней фаза плодоношенияn",@day_max )
    printf( "            %i дней фаза завершенияn",@day_end )

    if @урожай_кг 
      printf( "  Урожайность: всего     = %.2f кГn", @урожай_кг )
      printf( "               растения  = %.2f кГn", @урожай_кг/@колво )
      printf( "               с м2      = %.2f кГn", @урожай_кг/self.s_гряды )
      printf( "               с га      = %.2f тn", @урожай_кг/self.s_гряды*10 )
      printf( "     при норме с га      = %.2f тn", @урожай_норма )
      printf( "               растения  = %.2f кГn", @урожай_норма*1000/@густота_стояния_шт_га )
    end

    p "   *   " * 3
  end
  def stat
    self.print
  end
  def стат
    self.stat
  end
end

# ------- subclass ---------------

class Томат < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Томат "
    @t_всходов = 20
    @t_цвет = 24..30
    @t_почвы = 16..30
    @t_min = 10
    @t_max = 30
    @sum_at_min = 1800
    @sum_at_max = 3000
    @h2o_s=[ 3.0, 5.5, 3.2 ]
    @t_midle_day = [ 26,26,20 ]
    @урожай_норма = 50.0 # т с га
    @норма_высева_г_га = 3000.0
    @густота_стояния_шт_га = 150000
    @вынос_npkcm_г_кг = [ 3.2, 0.4, 5.2, 3.8, 0.5 ]
  end
end
class Томат_бч < Томат
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Томат Балконное чудо "
    @sum_at_min = 3000
    @sum_at_max = 19000
  end
end
class Перец < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Перец-Баклажан "
    @t_всходов = 10
    @t_цвет = 24..30
    @t_почвы = 16..30
    @t_min = 8
    @t_max = 30
    @sum_at_min = 1800
    @sum_at_max = 2000
    @h2o_s=[ 4.5, 6.5, 4.5 ]
    @t_midle_day = [ 26,26,20 ]
    @урожай_норма = 35.0 # т с га
    @норма_высева_г_га = 2000.0
    @густота_стояния_шт_га = 130000
    @вынос_npkcm_г_кг = [ 4.0, 0.6, 4.7, 2.4, 0.5 ]
  end
end
class Огурец < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Огурец "
    @t_всходов = 13..30
    @t_цвет = 24..30
    @t_почвы = 16..30
    @t_min = 15
    @t_max = 30
    @sum_at_min = 1400
    @sum_at_max = 2500
    @h2o_s=[ 3.2, 6.0, 4.0 ]
    @t_midle_day = [ 26,26,20 ]
    @урожай_норма = 50.0 # т с га
    @норма_высева_г_га = 8000.0
    @густота_стояния_шт_га = 150000
    @вынос_npkcm_г_кг = [ 1.4, 0.4, 2.2, 1.2, 0.2 ]
    @прорастание = 2..10
  end
end
class Тыква < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Тыква "
    @t_всходов = 25..30
    @t_цвет = 22..30
    @t_почвы = 12..30
    @t_min = 8
    @t_max = 45
    @sum_at_min = 970
    @sum_at_max = 2100
    @h2o_s=[ 3.0, 5.5, 3.2 ]
    @t_midle_day = [ 20,26,20 ]
    @урожай_норма = 90.0 # т с га
    @норма_высева_г_га = 10000.0
    @густота_стояния_шт_га = 35000
    @вынос_npkcm_г_кг = [ 4.0, 0.8, 4.2, 1.2, 0.2 ]
  end
end
class Кабачок < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Кабачок "
    @t_всходов = 13
    @t_цвет = 24..30
    @t_почвы = 16..30
    @t_min = 8
    @t_max = 30
    @sum_at_min = 1200
    @sum_at_max = 3000
    @h2o_s=[ 3.0, 5.5, 3.2 ]
    @t_midle_day = [ 20,26,20 ]
    @урожай_норма = 90.0 # т с га
    @норма_высева_г_га = 10000.0
    @густота_стояния_шт_га = 35000
    @вынос_npkcm_г_кг = [ 4.0, 0.8, 4.2, 1.2, 0.2 ]
  end
end
class Цукини < Кабачок
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Цукини "
    @h2o_s=[ 2.5, 5.0, 3.0 ]
  end
end
class Картофель < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Картофель "
    @t_всходов = 18
    @t_цвет = 24..27
    @t_почвы = 16..27
    @t_min = 8
    @t_max = 27
    @sum_at_min = 1000
    @sum_at_max = 1750
    @h2o_s=[ 0.001, 5.5, 0.002 ]
    @t_midle_day = [ 16,26,11 ]
    @урожай_норма = 30.0 # т с га
    @норма_высева_г_га = 1800000
    @густота_стояния_шт_га = 60000
    @вынос_npkcm_г_кг = [ 2.6, 1.0, 6.0, 1.2, 0.2 ]
  end
end
class Свекла < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Свекла "
    @t_всходов = 10
    @t_цвет = 24..30
    @t_почвы = 16..30
    @t_min = -1
    @t_max = 30
    @sum_at_min = 600
    @sum_at_max = 1200
    @h2o_s=[ 3.0, 5.5, 3.2 ]
    @t_midle_day = [ 16,26,12 ]
    @урожай_норма = 60.0 # т с га
    @норма_высева_г_га = 16000
    @густота_стояния_шт_га = 400000
    @вынос_npkcm_г_кг = [ 4.5, 0.7, 3.5, 1.2, 0.2 ]
    @прорастание = 8..16
  end
end
class Шпинат < Свекла
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Шпинат "
    @t_всходов = 10
    @t_цвет = 24..30
    @t_почвы = 16..18
    @t_min = -1
    @t_max = 30
    @sum_at_min = 600
    @sum_at_max = 1200
    @h2o_s=[ 3.0, 5.5, 3.2 ]
    @t_midle_day = [ 16,26,12 ]
    @урожай_норма = 40.0 # т с га
    @норма_высева_г_га = 250000
    @густота_стояния_шт_га = 400000
    @вынос_npkcm_г_кг = [ 4.5, 0.7, 3.5, 1.2, 0.2 ]
    @прорастание = 8..16
  end
end
class Амарант < Шпинат
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Амарант "
  end
end
class Укроп < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Укроп "
    @t_всходов = 20
    @t_цвет = 15..20
    @t_почвы = 16..18
    @t_min = -1
    @t_max = 21
    @sum_at_min = 600
    @sum_at_max = 1200
    @h2o_s=[ 3.0, 5.5, 3.2 ]
    @t_midle_day = [ 16,26,12 ]
    @урожай_норма = 20.0 # т с га
    @норма_высева_г_га = 300000
    @густота_стояния_шт_га = 400000
    @вынос_npkcm_г_кг = [ 4.5, 0.7, 3.5, 1.2, 0.2 ]
    @прорастание = 8..16
  end
end
class Кориандр < Укроп
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Кориандр "
    @t_всходов = 20
    @t_цвет = 15..20
    @t_почвы = 16..18
    @t_min = -1
    @t_max = 21
    @sum_at_min = 600
    @sum_at_max = 1200
    @h2o_s=[ 3.0, 5.5, 3.2 ]
    @t_midle_day = [ 16,26,12 ]
    @урожай_норма = 60.0 # т с га
    @норма_высева_г_га = 100000
    @густота_стояния_шт_га = 400000
    @вынос_npkcm_г_кг = [ 4.5, 0.7, 3.5, 1.2, 0.2 ]
    @прорастание = 8..16
  end
end
class Морковь < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Морковь "
    @t_всходов = 10
    @t_min = -5
    @t_max = 30
    @sum_at_min = 600
    @sum_at_max = 1200
    @h2o_s=[ 3.0, 5.5, 3.2 ]
    @t_midle_day = [ 16,26,8 ]
    @урожай_норма = 60.0 # т с га
    @норма_высева_г_га = 6000.0
    @густота_стояния_шт_га = 1200000
    @вынос_npkcm_г_кг = [ 2.8, 0.5, 3.9, 1.2, 0.2 ]
    @прорастание = 9..15
  end
end
class Репа < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Репа "
    @t_всходов = 10
    @t_почвы = 16..30
    @t_min = 8
    @t_max = 30
    @sum_at_min = 700
    @sum_at_max = 900
    @h2o_s=[ 3.0, 5.5, 3.2 ]
    @t_midle_day = [ 16,26,20 ]
    @урожай_норма = 60.0 # т с га
    @норма_высева_г_га = 2000.0
    @густота_стояния_шт_га = 500000
    @вынос_npkcm_г_кг = [ 3.3, 0.7, 4.0, 2.0, 0.3 ]
    @прорастание = 3..7
  end
end
class Редис < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Редис "
    @t_всходов = 19..21
    @t_почвы = 12..16
    @t_min = 5
    @t_max = 20
    @sum_at_min = 700
    @sum_at_max = 900
    @h2o_s=[ 3.0, 5.5, 3.2 ]
    @t_midle_day = [ 18,20,20 ]
    @урожай_норма = 60.0 # т с га
    @норма_высева_г_га = 20000.0
    @густота_стояния_шт_га = 1200000
    @вынос_npkcm_г_кг = [ 3.3, 0.7, 4.0, 2.0, 0.3 ]
    @прорастание = 3..7
  end
end
class Редька < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Редька "
    @t_всходов = 18
    @t_почвы = 12..18
    @t_min = 6
    @t_max = 20
    @sum_at_min = 700
    @sum_at_max = 900
    @h2o_s=[ 3.0, 5.5, 3.2 ]
    @t_midle_day = [ 16,26,20 ]
    @урожай_норма = 60.0 # т с га
    @норма_высева_г_га = 20000.0
    @густота_стояния_шт_га = 1200000
    @вынос_npkcm_г_кг = [ 3.3, 0.7, 4.0, 2.0, 0.3 ]
    @прорастание = 3..7
  end
end
class Петрушка < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Петрушка "
    @t_всходов = 18
    @t_почвы = 12..18
    @t_min = 6
    @t_max = 20
    @sum_at_min = 700
    @sum_at_max = 900
    @h2o_s=[ 3.0, 5.5, 3.2 ]
    @t_midle_day = [ 16,26,20 ]
    @урожай_норма = 60.0 # т с га
    @норма_высева_г_га = 20000.0
    @густота_стояния_шт_га = 1200000
    @вынос_npkcm_г_кг = [ 5.3, 0.7, 9.3, 2.0, 0.4]
    @прорастание = 12..20
  end
end
class Салат < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Салат "
    @t_всходов = 18
    @t_почвы = 12..18
    @t_min = 6
    @t_max = 20
    @sum_at_min = 700
    @sum_at_max = 900
    @h2o_s=[ 3.0, 5.5, 3.2 ]
    @t_midle_day = [ 16,26,20 ]
    @урожай_норма = 60.0 # т с га
    @норма_высева_г_га = 20000.0
    @густота_стояния_шт_га = 1200000
    @вынос_npkcm_г_кг = [ 2.3, 0.3, 3.3, 0.7, 0.2]
  end
end
class Лук < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Лук "
    @t_всходов = 1
    @t_min = -2
    @t_max = 26
    @sum_at_min = 1200
    @sum_at_max = 1700
    @h2o_s=[ 3.0, 4.5, 0.0 ]
    @t_midle_day = [ 16,26,10 ]
    @урожай_норма = 50.0 # т с га
    @норма_высева_г_га = 1100000.0
    @густота_стояния_шт_га = 350000
    @вынос_npkcm_г_кг = [ 2.5, 0.45, 3.5, 1.2, 0.2 ]
  end
end
class Чеснок < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Чеснок из зубков "
    @t_всходов = 6
    @t_min = 0
    @t_max = 25
    @sum_at_min = 1200
    @sum_at_max = 1700
    @h2o_s=[ 3.5, 2.5, 0.0 ]
    @t_midle_day = [ 16,26,10 ]
    @урожай_норма = 35.0 # т с га
    @норма_высева_г_га = 3500000.0
    @густота_стояния_шт_га = 700000
    @вынос_npkcm_г_кг = [ 2.5, 0.45, 3.5, 1.2, 0.2 ]
  end
end
class Капуста < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Капуста "
    @t_всходов = 10
    @t_min = 8
    @t_max = 30
    @sum_at_min = 1000
    @sum_at_max = 1700
    @h2o_s=[ 3.0, 5.5, 3.2 ]
    @t_midle_day = [ 16,26,15 ]
    @урожай_норма = 35 # т с га
    @вынос_npkcm_г_кг = [ 4.5, 0.8, 4.2, 1.2, 0.2 ]
  end
end
class Подсолнечник < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Подсолнечник "
    @t_всходов = 4..10
    @t_min = -6
    @t_max = 30
    @sum_at_min = 1400
    @sum_at_max = 2150
    @h2o_s=[ 0.8, 0.9, 0.8 ]
    @t_midle_day = [ 16,20,20 ]
    @урожай_норма = 1.0 # т с га
    @норма_высева_г_га = 400000.0
    @густота_стояния_шт_га = 40000
    @вынос_npkcm_г_кг = [ 5.5, 2.2, 15.2, 1.2, 0.2 ]
    @прорастание = 10..15
  end
end

class Земляника < Grow
  def initialize( title, колво=1 )
    super( title, колво )
    @класс = " Земляника "
    @t_всходов = 4..10
    @t_min = -6
    @t_max = 30
    @sum_at_min = 300
    @sum_at_max = 2150
    @h2o_s=[ 0.8, 0.9, 0.8 ]
    @t_midle_day = [ 16,20,20 ]
    @урожай_норма = 1.2 # т с га
    @норма_высева_г_га = 67000.0
    @густота_стояния_шт_га = 67000
    @вынос_npkcm_г_кг = [ 5.5, 2.2, 15.2, 1.2, 0.2 ]
    @прорастание = 10..15
  end
end

Главный файл Grow.rb

 
require "./lib/grow_class"
require "date"


# ----smpl ------
#
# - - план - -

#k=Чеснок.new( " План",87 )
#k.замачивание = "саженцы"
#k.посев=[2025,4,1]
#k.всходы=[2025,4,13]
#k.add_sum_at( 720 )
##k.колво=( 8 )
#k.l_гряды_м=8
#k.b_гряды_м=0.35
#k.add_урожай( 100.3 )
#k.stat
k=Морковь.new( " План",87 )
k.замачивание = "саженцы"
k.посев=[2025,4,1]
k.всходы=[2025,4,13]
k.add_sum_at( 720 )
#k.колво=( 8 )
k.l_гряды_м=8
k.b_гряды_м=0.35
k.add_урожай( 100.3 )
#k.stat

#k=Лук.new( " План",87 )
#k.замачивание = "саженцы"
#k.посев=[2025,4,1]
#k.всходы=[2025,4,13]
#k.add_sum_at( 720 )
##k.колво=( 8 )
#k.l_гряды_м=8
#k.b_гряды_м=0.35
#k.add_урожай( 100.3 )
##k.stat
#

Эпилог

Функции программы документированы, переменные имеют доступные имена.

Но если понадобится помощь -- обращайтесь