Skip to content

Instantly share code, notes, and snippets.

View cky's full-sized avatar

C. K. Young cky

View GitHub Profile
@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 / 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))]
@cky
cky / flatten.js
Created June 12, 2016 15:50
One way to flatten in ES6, not necessarily the best
function flatten(x) {
var result = [];
var appendToResult = function (xs) {
result.splice(result.length, 0, ...xs);
}
if (Array.isArray(x)) {
x.map(flatten).forEach(appendToResult);
} else {
result.push(x);
}
@cky
cky / csp2pem.rb
Last active December 29, 2022 23:26
Quick script for converting PEM-format RSA keys to a format usable by .NET's RSA.FromXmlString
#!/usr/bin/ruby
require 'openssl'
TYPES = {
6 => {magic: 'RSA1', private_key: false},
7 => {magic: 'RSA2', private_key: true}
}
data = ARGV[0] ? File.binread(ARGV[0]) : $stdin.binmode.read
type, version, algo, magic, bits, rest = data.unpack('ccx2l<a4l<a*')
@cky
cky / r1-log.md
Last active January 17, 2018 08:17
100 Days of Code challenge, round 1

#100DaysOfCode Log—Round 1—Chris Jester-Young

The log of my #100DaysOfCode challenge. Started on 1 January 2018.

Log

R1D1 (2018-01-01)

Created [SwiftJson] as a Swift port of [ktjson] and [c++17-json]. Coded up the basic JsonValue enum type.