[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ShootOut] hash.scm



#!/usr/bin/env mzscheme -r

(define (sequence start stop)
  (if (> start stop)
      '()
      (cons start (sequence (+ start 1) stop))))

(define (main)
  (let* ([n (string->number (vector-ref argv 0))]
	 [hash (make-hash-table)]
	 [accum 0]
	 [seq (sequence 1 n)]
	 [revseq (reverse seq)]
	 [false (lambda () #f)])
    (for-each (lambda (item)
		(hash-table-put! hash (string->symbol (format "~x" item))
item))
	      seq)
    (for-each (lambda (item)
		(when (hash-table-get hash (string->symbol (format "~s"
item)) false)
		      (set! accum (+ accum 1))))
	      revseq)
    (printf "~s" accum)))

(main)

Bryn Keller
Senior Software Engineer
Jenkon
brk@jenkon.com