Skip to content

Instantly share code, notes, and snippets.

View cky's full-sized avatar

C. K. Young cky

View GitHub Profile
@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.

@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 / 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 / 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 / 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 / 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 / A.rkt
Last active August 29, 2015 14:19
Google Code Jam 2015 qualification round
#lang racket
(for ((c (in-range (read)))
(smax (in-port))
(line (in-port (compose string-trim read-line))))
(define-values (extras total)
(for/fold ((extras 0) (total 0))
((i (in-range (add1 smax)))
(j (in-string line)))
(define n (- (char->integer j) (char->integer #\0)))
(define cur-extras (max (- i total) 0))
@cky
cky / Solution.java
Last active August 29, 2015 14:11
My solution for Sorted Set (Quora Haqathon 2014)
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@cky
cky / keybase.md
Created September 26, 2014 11:59

Keybase proof

I hereby claim:

  • I am cky on github.
  • I am cky (https://keybase.io/cky) on keybase.
  • I have a public key whose fingerprint is D452 5B49 1CE4 D047 1BFF 1090 8E54 9D02 234C C324

To claim this, I am signing this object:

@cky
cky / JnaCallbackDemo.java
Last active August 29, 2015 14:03
How to use JNA callbacks
package nz.kiwi.chris.demo;
import java.util.Arrays;
import java.util.Comparator;
import com.sun.jna.Callback;
import com.sun.jna.Function;
import com.sun.jna.IntegerType;
import com.sun.jna.Library;
import com.sun.jna.Native;