LINUX.ORG.RU

История изменений

Исправление quantum-troll, (текущая версия) :

(* % +) означает «произведение, делённое на сумму». Вот ещё примеры:
+/ % # — cумма элементов делённая на длину списка, иначе говоря — среднее значение.

fibN=: (-&2 +&$: -&1)^:(1&<)
$: значит «вызвать себя», x u&v y → (v x) u (v y). -&1 и -&2, соответственно, вычесть 1 или два.
v ^: n означает «применить глагол n раз», в данном случае, 0 или 1.
Таким образом, fibN y означает: y, если y ≤ 1, иначе сумма fibN (y - 2) c fibN (y - 1).
encodeLZW =: 4 : 0
 d=. ;/x
 r=.0$0
 wc=.w=.{.y
 for_c. }.y do.
   wc=.w,c
   if. d e.~ <wc do. w=.wc else.
     r=. r, d i.<w
     d=.d,<wc
     w=.c
   end.
 end.
 r, d i.<w
)
LZW сжатие. Думаю, очевидно, как это работает.

Исходная версия quantum-troll, :

(* % +) означает «произведение, делённое на сумму». Вот ещё примеры: +/ % # — cумма элементов делённая на длину списка, иначе говоря — среднее значение.

fibN=: (-&2 +&$: -&1)^:(1&<)
$: значит «вызвать себя», x u&v y → (v x) u (v y). -&1 и -&2, соответственно, вычесть 1 или два. v ^: n означает «применить глагол n раз», в данном случае, 0 или 1. Таким образом, fibN y означает: y, если y ≤ 1, иначе сумма fibN (y - 2) c fibN (y - 1).
encodeLZW =: 4 : 0
 d=. ;/x
 r=.0$0
 wc=.w=.{.y
 for_c. }.y do.
   wc=.w,c
   if. d e.~ <wc do. w=.wc else.
     r=. r, d i.<w
     d=.d,<wc
     w=.c
   end.
 end.
 r, d i.<w
)
LZW сжатие. Думаю, очевидно, как это работает.