Sha256: f20e2111c8e385f1a28542c870663f1a4aed38f615e6e3cb76f19ac42c9d63b4

Contents?: true

Size: 899 Bytes

Versions: 396

Compression:

Stored size: 899 Bytes

Contents

#lang racket

(provide numbers area-code pprint)

(define (strip-non-digits str)
  (list->string (filter char-numeric? (string->list str))))

(define (trim-leading-one str)
  (if (and (= 11 (string-length str))
           (char=? #\1 (car (string->list str))))
      (substring str 1)
      str))

(define (ensure-valid str)
  (if (= 10 (string-length str))
      str
      "0000000000"))

(define (numbers number-string)
  (ensure-valid
   (trim-leading-one
    (strip-non-digits number-string))))

(define (area-code number-string)
  (substring (numbers number-string) 0 3))

(define (exchange number-string)
  (substring (numbers number-string) 3 6))

(define (subscriber number-string)
  (substring (numbers number-string) 6 10))

(define (pprint number-string)
  (format "(~a) ~a-~a"
          (area-code number-string)
          (exchange number-string)
          (subscriber number-string)))

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.179 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.178 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.177 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.176 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.175 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.174 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.173 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.172 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.171 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.170 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.169 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.167 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.166 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.165 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.164 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.163 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.162 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.161 tracks/racket/exercises/phone-number/example.rkt
trackler-2.2.1.160 tracks/racket/exercises/phone-number/example.rkt