Here is my code:
defmodule HW3A do
def onepad(int, n \\ 0, list \\ []) do
case n do
^int -> list
_ -> onepad(int, n + 1, list ++ [:rand.uniform(int)])
end
end
defp string_to_num(string_grahemes, alphabets, cipher_nums, num_list \\ []) do
string_to_num(tl(string_grahemes), alphabets, tl(cipher_nums), [(Keyword.get(alphabets, hd(string_grahemes) |> String.to_atom)) + hd(cipher_nums) | num_list])
end
defp string_to_num([], alphabets, cipher_nums, num_list) do
num_list
end
def cipher(string) do
numbers = onepad(String.length(string))
alphabets = Enum.zip([:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,:l,:m,:n,:o,:p,:q,:r,:s,:t,:u,:v,:w,:x,:y,:z], [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26])
string_num = []
encrypted_numbers = string_num(String.graphemes(string), alphabets, numbers, num_list)
IO.inspect(encrypted_numbers)
end
end
When I call the function I get the following error:
warning: function string_to_num/4 is unused
practice.exs:113
** (CompileError) practice.exs:127: undefined function num_list/0
(elixir 1.12.2) src/elixir_locals.erl:114: anonymous fn/3 in :elixir_locals.ensure_no_undefined_local/3
practice.exs:105: (file)
What am I doing wrong here ? I just want to return the argument.
Thanks in advance.