Created
          January 17, 2023 11:23 
        
      - 
      
- 
        Save frobs/01321d04d3b163c02bc2d66ac44db334 to your computer and use it in GitHub Desktop. 
    Testing file
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | defmodule MyTestScript do | |
| @h 7 | |
| @fixed_value 37 | |
| def decode(num) do | |
| decode_internal(num, "") | |
| end | |
| defp decode_internal(num, accum) when rem(num, @fixed_value) == 3 do | |
| decode_internal(get_next_value(num , 3), accum <> "e") | |
| end | |
| defp decode_internal(num, accum) when rem(num, @fixed_value) == 1 do | |
| decode_internal(get_next_value(num , 1), accum <> "c") | |
| end | |
| defp decode_internal(num, accum) when rem(num, @fixed_value) == 6 do | |
| decode_internal(get_next_value(num , 6), accum <> "i") | |
| end | |
| defp decode_internal(num, accum) when rem(num, @fixed_value) == 9 do | |
| decode_internal(get_next_value(num , 9), accum <> "n") | |
| end | |
| defp decode_internal(num, accum) when num == @h do | |
| String.reverse(accum) | |
| end | |
| defp get_next_value(num, subtraction) do | |
| trunc((num - subtraction) / @fixed_value) | |
| end | |
| defp decode_internal(_num, accum) do | |
| String.reverse(accum) | |
| end | |
| end | |
| #it could also be possible to reduce the letter-number relation to a map | |
| #so that we do not have to rewrite the same logic so many times and it is the map | |
| #that sets the conversion rules. | |
| IO.puts(MyTestScript.decode(13583258)) | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment