Advertisement
Garey

Zad2-Elixir

Apr 4th, 2022
2,942
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 1.87 KB | None | 0 0
  1. defmodule Zad2 do
  2.  
  3.   # Казваме, че искаме аргумента да не е празен масив и да е масив от цели числа
  4.   # И че функцията ще двойка(две променливи в една с индекси) или tuple
  5.   @spec takeNumbers(nonempty_list(integer())) :: tuple()
  6.   # Дефинираме си функцията с аргументите
  7.   def takeNumbers(list) do
  8.     # Enum.take_while приема два аргумента.
  9.     #
  10.     # Първият е масива, който да обходи
  11.     # Вторият е функция, с която да определи кога да спре да обхожда масива
  12.     #
  13.     # Докато условието във функцията е изпълнено, обхождането на масива ще продължи
  14.     #
  15.     # Като резултат, от обхождането се прави нов масив с тези елементи, които вече са обходени.
  16.     #
  17.     numbers = Enum.take_while(list, fn number -> rem(number, 2) == 0 end)
  18.  
  19.     # Събираме всичките елементи от новият масив
  20.     sum = Enum.sum(numbers)
  21.  
  22.     # Създаваме си tuple като първата променлива съдържа сумата на числата,
  23.     # а втората променлива съдържа дали сумата е четна или не - boolean.
  24.     {sum, rem(sum, 2) == 0}
  25.   end
  26. end
  27.  
  28. numbers = [2, 4, 6, 4, 5]
  29.  
  30. # Вземаме двата аргумента върнати от функцията като tuple като две отделни променливи
  31. {sum, isSumEven} = Zad2.takeNumbers(numbers)
  32.  
  33. # Изписваме ги на екрана чрез конкатенация
  34. IO.puts('Sum: #{sum} -- Is Sum Even: #{isSumEven}')
  35.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement