From bcacdb320707f4b8dd87843c46a2a4bfb079ba02 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Sun, 3 Dec 2017 21:30:48 -0800 Subject: [PATCH] d4 --- 2017/d4/main.rkt | 26 +++ 2017/d4/star1.rkt | 513 ++++++++++++++++++++++++++++++++++++++++++++++ 2017/d4/star2.rkt | 513 ++++++++++++++++++++++++++++++++++++++++++++++ 2017/d4/test1.rkt | 4 + 2017/d4/test2.rkt | 6 + 5 files changed, 1062 insertions(+) create mode 100644 2017/d4/main.rkt create mode 100644 2017/d4/star1.rkt create mode 100644 2017/d4/star2.rkt create mode 100644 2017/d4/test1.rkt create mode 100644 2017/d4/test2.rkt diff --git a/2017/d4/main.rkt b/2017/d4/main.rkt new file mode 100644 index 0000000..295bfb6 --- /dev/null +++ b/2017/d4/main.rkt @@ -0,0 +1,26 @@ +#lang br/quicklang +(require "../helper.rkt") + +(provide read-syntax) +(define (read-syntax path port) + (strip-context #`(module mod "main.rkt" + #,@(for/list ([line (in-lines port)]) + (with-input-from-string line (λ () + (for/list ([datums (in-port)]) + datums))))))) + +(provide (rename-out [#%mb #%module-begin])) +(define-macro (#%mb (STARS) (WORD ...) ...) + #'(#%module-begin + (for/sum ([ws (in-list '((WORD ...) ...))] + #:when (no-duplicates? ws #:anagrams? (eq? 'STARS '★★))) + 1))) + +(define (sort-chars word) + (sort (string->list (symbol->string word)) char