defmodule LinearSearch do
@doc """
Линейный поиск в списке — возвращает индекс или nil.
"""
def search(list, target) do
search_with_index(list, target, 0)
end
defp search_with_index([], _target, _index), do: nil
defp search_with_index([head | tail], target, index) do
if head == target do
index
else
search_with_index(tail, target, index + 1)
end
end
end
# Пример использования
arr = [12, 1456, 53, 12451, 992, 81, 666]
target = 992
case LinearSearch.search(arr, target) do
nil ->
IO.
puts("The #{target} element was not found")
index ->
IO.
puts("The #{target} element was found at position #{index}")end
ZGVmbW9kdWxlIExpbmVhclNlYXJjaCBkbwogIEBkb2MgIiIiCiAg0JvQuNC90LXQudC90YvQuSDQv9C+0LjRgdC6INCyINGB0L/QuNGB0LrQtSDigJQg0LLQvtC30LLRgNCw0YnQsNC10YIg0LjQvdC00LXQutGBINC40LvQuCBuaWwuCiAgIiIiCiAgZGVmIHNlYXJjaChsaXN0LCB0YXJnZXQpIGRvCiAgICBzZWFyY2hfd2l0aF9pbmRleChsaXN0LCB0YXJnZXQsIDApCiAgZW5kCgogIGRlZnAgc2VhcmNoX3dpdGhfaW5kZXgoW10sIF90YXJnZXQsIF9pbmRleCksIGRvOiBuaWwKCiAgZGVmcCBzZWFyY2hfd2l0aF9pbmRleChbaGVhZCB8IHRhaWxdLCB0YXJnZXQsIGluZGV4KSBkbwogICAgaWYgaGVhZCA9PSB0YXJnZXQgZG8KICAgICAgaW5kZXgKICAgIGVsc2UKICAgICAgc2VhcmNoX3dpdGhfaW5kZXgodGFpbCwgdGFyZ2V0LCBpbmRleCArIDEpCiAgICBlbmQKICBlbmQKZW5kCgojINCf0YDQuNC80LXRgCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjwphcnIgPSBbMTIsIDE0NTYsIDUzLCAxMjQ1MSwgOTkyLCA4MSwgNjY2XQp0YXJnZXQgPSA5OTIKCmNhc2UgTGluZWFyU2VhcmNoLnNlYXJjaChhcnIsIHRhcmdldCkgZG8KICBuaWwgLT4KICAgIElPLnB1dHMoIlRoZSAje3RhcmdldH0gZWxlbWVudCB3YXMgbm90IGZvdW5kIikKCiAgaW5kZXggLT4KICAgIElPLnB1dHMoIlRoZSAje3RhcmdldH0gZWxlbWVudCB3YXMgZm91bmQgYXQgcG9zaXRpb24gI3tpbmRleH0iKQplbmQ=