Skip to content

Instantly share code, notes, and snippets.

View talyian's full-sized avatar

Jimmy Tang talyian

View GitHub Profile
<?php
function factorial($n) {
if (!$n)
return 1;
return $n * factorial($n-1);
}
function Y($f) {
$g = function ($x) use($f) {
@talyian
talyian / cracklepop.js
Last active January 31, 2020 00:40
CracklePop in regex
// CracklePop
// Problem: Write a program that prints out the numbers 1 to 100 (inclusive).
// If the number is divisible by 3, print Crackle instead of the number.
// If it's divisible by 5, print Pop.
// If it's divisible by both 3 and 5, print CracklePop.
// Solution: regex is not only perfectly capable of lexing HTML,
// it is also perfectly capable of expressing, in a roundabout way,
// a finite automaton that verifies divisibility by a given number.
@talyian
talyian / generic_vector_map.cpp
Last active December 27, 2019 04:45
vector map
template<typename T>
struct vector { int length; T* data; };
using vector_int = vector<int>;
using vector_float = vector<float>;
// F is a function type that takes T and returns R
// Map takes a vector<T>, and F and returns vector<R>
template<class T, class F>
auto Map(vector<T> input, F func){
@talyian
talyian / fragment.glsl
Last active December 24, 2019 18:09
Slowest Font Renderer in the West
uniform int n_lin_segments;
uniform vec2 lin_segments[256];
uniform int n_quad_segments;
uniform vec2 quad_segments[512];
varying vec3 pos;
varying vec2 uv;
void main() {
vec2 point = uv;
// point = (point + vec2(0.3, 0)) * 0.1;
@talyian
talyian / regex_to_dfa.fsx
Created September 29, 2018 19:39
Convert a Regex to NFA to DFA
// An exercise in converting a regex to an NFA to a DFA
type RegexNode =
| Or of RegexNode list
| Seq of RegexNode List
| Star of RegexNode
| T of string
| Eta (* todo: does this value really belong here? *)
let regex_pattern = "x(x|y)*|z"
@talyian
talyian / fibonacci_nim.asm
Created September 28, 2018 14:52
Disassembly of nim fibonacci solutoin
0000000000001640 <fib_SpYa5EuiU0areDDc1bSasA(unsigned long long)>:
1640: 48 83 ff 01 cmp $0x1,%rdi
1644: b8 01 00 00 00 mov $0x1,%eax
1649: 77 05 ja 1650 <fib_SpYa5EuiU0areDDc1bSasA(unsigned long long)+0x10>
164b: f3 c3 repz retq
164d: 0f 1f 00 nopl (%rax)
1650: 41 57 push %r15
1652: 41 56 push %r14
1654: 4c 8d 77 fe lea -0x2(%rdi),%r14
1658: 41 55 push %r13
@talyian
talyian / A_PokerAsync_Readme
Last active September 28, 2018 15:03
Poker Demo
POC of applying some Async primitives to a Poker game for a discussion on async from gamedev.stackexchange.com
@talyian
talyian / mono.log
Last active February 23, 2018 15:44
Installing Mono on Debian Wheezy
jimmy@4f9659dd76f5:~$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.I6Cq8DlByE --trustdb-name /etc/apt//trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-jessie-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-jessie-security-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-jessie-stable.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-squeeze-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-squeeze-stable.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-wheezy-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-wheezy-stable.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
gpg: requesting key D3D831EF from hkp server keyserver.ubuntu.com
gpg: /etc/apt//trustd
@talyian
talyian / AdventOfCode2017
Last active December 11, 2017 17:10
Advent of Code 2017 Solutions.
Advent of Code 2017 Solutions
@talyian
talyian / getresolution.fsx
Created September 30, 2017 00:30
WinGDI Get All supported Monitor Resolutions
#nowarn "9"
open System
open System.Runtime.InteropServices
[<StructLayout(LayoutKind.Sequential)>]
type DEVMODEInfo = struct
[<MarshalAs(UnmanagedType.ByValTStr, SizeConst=32)>]
[<DefaultValue>] val mutable dmDeviceName : string
[<DefaultValue>] val mutable dmSpecVersion: int16;
[<DefaultValue>] val mutable dmDriverVersion: int16;