Skip to content

Instantly share code, notes, and snippets.

@tblancbeyne
Created July 27, 2017 13:18
Show Gist options
  • Save tblancbeyne/c9a33a330a949d28fddff00b9a21a77e to your computer and use it in GitHub Desktop.
Save tblancbeyne/c9a33a330a949d28fddff00b9a21a77e to your computer and use it in GitHub Desktop.
Première tentative de programmation fonctionnelle : decomposition en facteurs premiers
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)
main =
Html.beginnerProgram { model = model, view = view, update = update }
type alias Model =
{ nbr : Int
, dec : List Int
}
model : Model
model = Model 0 []
type Msg = Increment | Decrement | Decompose
update : Msg -> Model -> Model
update msg model =
case msg of
Increment ->
{ model | nbr = model.nbr + 1 }
Decrement ->
{ model | nbr = model.nbr - 1 }
Decompose ->
{ model | dec = decompose model.nbr 2 []}
decompose : Int -> Int -> List Int -> List Int
decompose nbr factor list =
if (nbr > 0 && sqrt(toFloat nbr) >= toFloat factor) then
if ((nbr % factor) == 0) then
decompose (nbr//factor) factor (factor :: list)
else
decompose nbr (factor + 1) list
else
nbr :: list
view : Model -> Html Msg
view model =
div []
[ button [ onClick Decrement ] [ text "-" ]
, button [ onClick Increment ] [ text "+" ]
, button [ onClick Decompose ] [ text "Dec" ]
, div [] [ text (toString model.nbr) ]
, div [] [ text ("Decomposition : " ++ toString model.dec) ]
]
@tforgione
Copy link

tforgione commented Jul 27, 2017

This is 💩

EDIT: Just kidding

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment