Snippets

Cameron Presley F# Constraint Solver

Updated by Cameron Presley

File FSharpConstraintSolver.fs Modified

  • Ignore whitespace
  • Hide word diff
+// Can be ran in F# interactive of LINQPad
 let mustBeFourDigits number = 
     number.ToString().Length = 4
 
Created by Cameron Presley

File FSharpConstraintSolver.fs Added

  • Ignore whitespace
  • Hide word diff
+let mustBeFourDigits number = 
+    number.ToString().Length = 4
+
+let mustBeEven number =
+    number % 2 = 0
+
+let firstDigitMustBeEqualLast number =
+    let numberString = number.ToString().ToCharArray()
+    let firstDigit = numberString.GetValue(0)
+    let lastDigit = numberString.GetValue(numberString.Length-1)
+    firstDigit = lastDigit
+
+let rec findValidNumbers numbers constraints = 
+    match constraints with
+    | [] -> numbers
+    | firstConstraint::remainingConstraints ->
+        let validNumbers = numbers |> List.filter firstConstraint
+        findValidNumbers validNumbers remainingConstraints
+
+let numbers = [1000 .. 9999]
+let constraints = [mustBeEven; mustBeFourDigits; firstDigitMustBeEqualLast; ]
+
+let result = findValidNumbers numbers constraints
+
+printf "%A" result
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.