Advertisement
Guest User

Untitled

a guest
Aug 26th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. use Bitwise
  2.  
  3. defmodule SecretHandshake do
  4. def commands(handshake) do
  5. [&decode_wink/1, &decode_double_blink/1, &decode_close_your_eyes/1, &decode_jump/1]
  6. |> Enum.map(fn(decoder) -> decoder.(handshake) end)
  7. |> Enum.reject(&is_nil/1)
  8. |> decode_reverse(handshake)
  9. end
  10.  
  11. defp decode_wink(handshake) when (handshake &&& 1) > 0, do: "wink"
  12. defp decode_wink(_), do: nil
  13.  
  14. defp decode_double_blink(handshake) when (handshake &&& 2) > 0, do: "double blink"
  15. defp decode_double_blink(_), do: nil
  16.  
  17. defp decode_close_your_eyes(handshake) when (handshake &&& 4) > 0, do: "close your eyes"
  18. defp decode_close_your_eyes(_), do: nil
  19.  
  20. defp decode_jump(handshake) when (handshake &&& 8) > 0, do: "jump"
  21. defp decode_jump(_), do: nil
  22.  
  23. defp decode_reverse(commands, handshake) when (handshake &&& 16) > 0, do: Enum.reverse(commands)
  24. defp decode_reverse(commands, _), do: commands
  25. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement