Skip to content

Instantly share code, notes, and snippets.

View cky's full-sized avatar

C. K. Young cky

View GitHub Profile
@cky
cky / Comm.java
Created April 29, 2012 14:48
Java comm(1) implementation
import java.util.List;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterators;
import com.google.common.collect.PeekingIterator;
public class Comm {
public static class Result {
public final ImmutableList<Integer> only1;
public final ImmutableList<Integer> only2;
public final ImmutableList<Integer> both;
@cky
cky / gist:2984979
Created June 24, 2012 21:03
Modular exponentiation
(define (modexp a b q)
(define (modmul a b)
(modulo (* a b) q))
(do ((a a (modmul a a))
(b b (quotient b 2))
(r 1 (if (odd? b) (modmul r a) r)))
((zero? b) r)))
@cky
cky / GSString.java
Created August 19, 2012 05:32
Ruby string parser (minus interpolation) using Java enums
package nz.kiwi.chris.j7gs.types;
import com.google.common.base.Preconditions;
public class GSString implements Comparable<GSString> {
private final String value;
public GSString(String value) {
this.value = value;
}
@cky
cky / gist:3611062
Created September 3, 2012 17:22
Simple program for testing out MACs
#define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1
#include <functional>
#include <iostream>
#include <map>
#include <memory>
#include <boost/format.hpp>
#include <boost/iostreams/categories.hpp>
#include <boost/iostreams/copy.hpp>
@cky
cky / in-nest-sequence.rkt
Last active October 16, 2015 00:27
`in-iterate` sequence generator
#lang racket
(require (for-syntax unstable/syntax))
(provide (rename-out [*in-nest-sequence in-nest-sequence]))
(define in-nest-sequence
(case-lambda
[(func init)
(make-do-sequence
(thunk (values identity func init #f #f #f)))]
[(func . inits)
@cky
cky / primes.rkt
Last active December 11, 2015 02:48
Sieve of Eratosthenes
#lang racket
(define (primes-less-than n)
(define size (sub1 (quotient n 2)))
(define table (build-vector size (lambda (i) (+ i i 3))))
(for ((x (in-vector table 0 (integer-sqrt size)))
#:when x
(y (in-range (quotient (- (* x x) 3) 2) size x)))
(vector-set! table y #f))
(cons 2 (filter values (vector->list table))))
@cky
cky / gist:7533352
Created November 18, 2013 19:01
Stack Overflow [code-golf] tag info
@cky
cky / pollute.rkt
Last active January 4, 2016 04:59
Gauche-style ^ macros for all combinations of one and two letters. Hi, Mark Weaver!
(define-syntax pollute-my-namespace
(let ((letters "abcdefghijklmnopqrstuvwxyz_")
(char->symbol (compose string->symbol string)))
(define (make-macros stx)
(lambda ()
(for*/lists (ids syntaxes)
((x letters)
(y letters))
(if (char=? x y)
(values (datum->syntax stx (char->symbol #\^ x))
@cky
cky / area.rkt
Last active March 28, 2016 16:11
HackerRank Lambda Calculi March 2016: cky's answers
#lang racket
(define (determinant p1 p2)
(- (* (car p1) (cdr p2))
(* (cdr p1) (car p2))))
(define points (read))
(define first (cons (read) (read)))
(define-values (area last)
(for/fold ([area 0] [last first])
([i (in-range (sub1 points))]
@cky
cky / miller-rabin.rkt
Last active June 2, 2016 22:22
My Miller-Rabin implementation (see http://codereview.stackexchange.com/a/129991/216 for context)
#lang racket
(define (expmod base exp m)
(let recur ([exp exp])
(cond [(zero? exp) 1]
[(even? exp) (let* ([prev (recur (quotient exp 2))]
[result (modulo (sqr prev) m)])
(if (and (< 1 prev (sub1 m))
(= result 1))
0
result))]