Advertisement
Guest User

Untitled

a guest
Jul 28th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. import Html exposing (Html, button, div, text)
  2. import Html.Events exposing (onClick)
  3.  
  4. main =
  5. Html.beginnerProgram { model = model, view = view, update = update }
  6.  
  7. type alias Model =
  8. { nbr : Int
  9. , dec : List Int
  10. }
  11.  
  12. model : Model
  13. model = Model 0 []
  14.  
  15. type Msg = Increment | Decrement | Decompose
  16.  
  17. update : Msg -> Model -> Model
  18. update msg model =
  19. case msg of
  20. Increment ->
  21. { model | nbr = model.nbr + 1 }
  22.  
  23. Decrement ->
  24. { model | nbr = model.nbr - 1 }
  25.  
  26. Decompose ->
  27. { model | dec = decompose model.nbr 2 []}
  28.  
  29. decompose : Int -> Int -> List Int -> List Int
  30. decompose nbr factor list =
  31. if (nbr > 0 && sqrt(toFloat nbr) >= toFloat factor) then
  32. if ((nbr % factor) == 0) then
  33. decompose (nbr//factor) factor (factor :: list)
  34. else
  35. decompose nbr (factor + 1) list
  36. else
  37. nbr :: list
  38.  
  39. view : Model -> Html Msg
  40. view model =
  41. div []
  42. [ button [ onClick Decrement ] [ text "-" ]
  43. , button [ onClick Increment ] [ text "+" ]
  44. , button [ onClick Decompose ] [ text "Dec" ]
  45. , div [] [ text (toString model.nbr) ]
  46. , div [] [ text ("Decomposition : " ++ toString model.dec) ]
  47. ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement