25 lines
862 B
Elixir
25 lines
862 B
Elixir
defmodule Trabb_Pardo_Knuth do
|
|
def task do
|
|
Enum.reverse( get_11_numbers )
|
|
|> Enum.each( fn x -> perform_operation( &function(&1), 400, x ) end )
|
|
end
|
|
|
|
defp alert( n ), do: IO.puts "Operation on #{n} overflowed"
|
|
|
|
defp get_11_numbers do
|
|
ns = IO.gets( "Input 11 integers. Space delimited, please: " )
|
|
|> String.split
|
|
|> Enum.map( &String.to_integer &1 )
|
|
if 11 == length( ns ), do: ns, else: get_11_numbers
|
|
end
|
|
|
|
defp function( x ), do: :math.sqrt( abs(x) ) + 5 * :math.pow( x, 3 )
|
|
|
|
defp perform_operation( fun, overflow, n ), do: perform_operation_check_overflow( n, fun.(n), overflow )
|
|
|
|
defp perform_operation_check_overflow( n, result, overflow ) when result > overflow, do: alert( n )
|
|
defp perform_operation_check_overflow( n, result, _overflow ), do: IO.puts "f(#{n}) => #{result}"
|
|
end
|
|
|
|
Trabb_Pardo_Knuth.task
|