Current section

Files

Jump to
apollo18 lib k z.ex
Raw

lib/k/z.ex

defmodule Hexzip do
@moduledoc false
alias Hexzip.W
alias Krug.StringUtil
def y(w,z) do
h(w,z |> W.z(),z |> W.y(),w())
end
def x(k,z) do
cond do
(h() |> h(k) or (k |> z()) < 2) -> k
(h() |> h(z) or !(z > w())) -> k
(z |> rem(k |> z()) |> h(w())) -> k
true -> x(k,z |> rem(k |> z()),w())
end
end
def w(y,z) do
x = z |> W.z()
w = z |> W.y()
z(y,x,w,w |> w())
end
defp z(v,k) do
v |> Enum.at(k)
end
defp h(z,v,w,s) do
cond do
(s >= z(w)) -> z
true -> z |> z(z(w,s),z(v,s)) |> h(v,w,s + 1)
end
end
defp y(y) do
y |> Enum.reverse()
end
defp h() do
nil
end
defp z(z,p,a,x) do
cond do
(x < w()) -> z
true -> z |> z(z(p,x),z(a,x)) |> z(p,a,x - 1)
end
end
defp h(y,h) do
h == y
end
defp z(z) do
z |> length()
end
defp x(r,w,y) do
cond do
(y >= w) -> r
true -> x(r) |> x(w,y + 1)
end
end
defp w(w) do
(w |> z()) - 1
end
defp w() do
0
end
defp z(w,x,y) do
w |> StringUtil.replace(x,y,true)
end
defp x(y) do
y = y |> y()
[(y |> hd()) | (y |> tl() |> y())]
end
end