Skip to content

Instantly share code, notes, and snippets.

View kmicinski's full-sized avatar

Kristopher Micinski kmicinski

View GitHub Profile
@kmicinski
kmicinski / dpll.rkt
Last active November 15, 2024 11:52
;; Traditional Abstract DPLL (no clause learning)
;; See this paper: https://homepage.cs.uiowa.edu/~tinelli/papers/NieOT-JACM-06.pdf
#lang racket
(define (clause? cl)
(match cl
[`(,(? integer? x) ...) #t]
[_ #f]))
#lang racket
;; Direct style
(define (filter f l)
(match l
['() '()]
[`(,hd . ,tl) (if (f hd) (cons hd (filter f tl)) (filter f tl))]))
;; Tail recursive version
(define (filter-tl f l)
@kmicinski
kmicinski / p1-more-practice.rkt
Created August 31, 2024 18:04
More practice for Project 1 in CIS352
#lang racket
(provide (all-defined-out))
;;
;; CIS352 (Fall '24) Racket Warmup
;;
(define (square x) (* x x))
;; return the Euclidian distance between x0,y0 and x1,y1
(define (euclid-distance x0 y0 x1 y1)
@kmicinski
kmicinski / post1.rkt
Created May 11, 2024 23:10
Modern Deduction: Post 1
;; Relational algebra
#lang racket
(define relation? symbol?)
(define atom? symbol?) ;; atomic lits are symbols
;; variables must be explicitly tagged, not 'x, but '(var x)
(define (var? x) (match x [`(var ,(? symbol? x)) #t] [_ #f]))
(define (var-or-atom? x) (or (atom? x) (var? x)))
;; Challenge: find all the bugs in this small functional compiler
#lang racket
(provide (all-defined-out))
(define verbose-mode (make-parameter #t))
(define i-am-a-mac (make-parameter #f))
;;
;; Our compiler will have several layers
#lang racket
;; v0.0 April 8, 2024 -- WORKING NOTES (could have bugs!)
;; Apply/Eval Refactoring -- Semantics Homework
;;
;; Kris Micinski ([email protected] and [email protected])
;;
;; Warning: may be buggy, please contact kris if you notice
;; obvious bugs.
(provide (all-defined-out))
#lang racket
;; The Church-encoded number N is represented as:
;; - A function (λ (f) ...) which takes a function f
;; - Returns a function which accepts an argument x
;; and applies f N times to x
;; two, Church-encoded as a *Racket* lambda
(λ (f) (λ (x) (f (f x))))
#lang racket
;; The Church-encoded number N is represented as:
;; - A function (λ (f) ...) which takes a function f
;; - Returns a function which accepts an argument x
;; and applies f N times to x
;; two, Church-encoded as a *Racket* lambda
(λ (f) (λ (x) (f (f x))))
#lang racket
;; CIS352 -- 3/19/2024
;; Exam Solutions
;; Version A
;; (1a)
(define (count-n lst n)
(match lst
#lang racket
;; PRACTICE Midterm 1 solutions
;; Part (a)
(define (mul-list l k)
(if (empty? l)
'()
(cons (* (first l) k) (mul-list (rest l) k))))