aboutsummaryrefslogtreecommitdiff
path: root/racket/leetcode/lc-788-rotated-digits.rkt
blob: 79400b8d628ada646bb76a38ac0a4329ccf68214 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#lang racket

(define/contract (rotated-digits max-n)
  (-> exact-integer? exact-integer?)
  (for/fold ([good-number-count 0])
            ([n (in-range 1 (add1 max-n))])
    (if (is-good? n)
        (add1 good-number-count)
        good-number-count)))

(define/contract (is-good? test-number)
  (-> exact-integer? boolean?)
  (define test-string (number->string test-number))
  (match test-string
    [(regexp #rx"^[018]*$") #false]
    [(regexp #rx"^[0125689]*$") #true]
    [_ #false]))