PasteRack.org
Paste # 53413
2015-12-02 17:33:06

Forked from paste # 37164.

Fork as a new paste.

Paste viewed 426 times.


Embed:

AoC, 1

#lang racket

(define (fold-str-int f i str)
  (sequence-fold f i (sequence-map char->integer (in-string str))))

(define (elevator str)
  (inexact->exact
   (* (fold-str-int 
       (lambda (i c)
         (+ i (- c 40.5))) 0 str) -2)))

(define (disallow-basement str)
  (letrec
      ([make-counter 
        (lambda ([count 0] [v 0]) 
          (lambda (c)
            (let
                ([v (+ v (- c 40.5))]
                 [count (+ 1 count)])
              (if (< 0 v)
                  (raise-user-error (~a count))
                  (make-counter count v)))))])
    (inexact->exact
     (* (fold-str-int (lambda (f c) (f c)) (make-counter 0 0) str) -2))))

(display (elevator ")())())") (newline)
(disallow-basement "()())")

=>

prog:26:0: read: expected a `)' to close `('
  possible cause: indentation suggests a missing `)' before line 27
  context...:
   /home/stchang/racket611/collects/syntax/module-reader.rkt:176:17: body
   /home/stchang/racket611/collects/syntax/module-reader.rkt:173:2: wrap-internal
   lang:read-syntax
   /home/stchang/racket611/share/pkgs/scribble-lib/scribble/private/manual-code.rkt:56:0: typeset-code15
   /home/stchang/racket/pasterack/tmp/53413/53413code.scrbl: [running body]
   /home/stchang/racket611/share/pkgs/scribble-lib/scribble/run.rkt: [running body]