Skip to content

Instantly share code, notes, and snippets.

View redraiment's full-sized avatar
🏠
Working from home

Zhang, Zepeng (redraiment) redraiment

🏠
Working from home
View GitHub Profile
require 'active_record'
ActiveRecord::Base.logger = Logger.new(STDERR)
ActiveRecord::Base.colorize_logging = false
ActiveRecord::Base.establish_connection(
:adapter => "sqlite3",
:database => ":memory:"
)
@redraiment
redraiment / html2md.rb
Created December 3, 2013 15:15
iKnowledge 1.0 HTML格式自动转换成2.0 Markdown格式
#!/usr/bin/ruby
# -*- coding: utf-8 -*-
require 'cgi'
module Html
def self.tag(content)
n, a = content.split /\s+/, 2
{:tag => n}.update(attr: Hash[(a or '').scan(/(\w+)="([^"]*)"/)])
@redraiment
redraiment / 2000.cpp
Created November 16, 2013 11:26
杭电ACM 2000到2099题
#include <algorithm>
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void) {
char s[4];
while (cin >> s) {
sort(s, s + 3);
@redraiment
redraiment / sphere.js
Last active November 14, 2021 15:04
将n个点均匀地分布在球面上。算法利用正多面体(此处选用正八面体)剖分球面。
// 球面坐标系统
var Spherical = function(radial, polar, azimuthal) {
var self = this;
self.radial = radial || 1
self.polar = polar || 0
self.azimuthal = azimuthal || 0
};
// 转换成直角坐标系统
@redraiment
redraiment / startup.py
Created October 11, 2013 12:40
Python启动文件,为REPL添加自动补全以及历史功能
import rlcompleter
import readline
import atexit
import os
# http://stackoverflow.com/questions/7116038/python-tab-completion-mac-osx-10-7-lion
if 'libedit' in readline.__doc__:
readline.parse_and_bind('bind ^I rl_complete')
else:
readline.parse_and_bind('tab: complete')
@redraiment
redraiment / r.el
Created October 10, 2013 16:20
Emacs Lisp 正则表达式简化
(defun conj (v &rest c)
(append v c))
(defun r (exp)
(do ((e (cons nil (string-to-list exp))
(let ((s (car e)) (x (cdr e))
(a (cadr e)) (d (caddr e)))
(cond
((= a ?%)
(cons (apply (apply-partially #'conj s)
@redraiment
redraiment / .zsh配置文件
Last active October 23, 2019 01:36
Z Shell 配置
ZSH在交互方面的确比Bash略胜一筹,但习惯了Bash下大小写无关补全等功能,需要对zsh的默认配置做一些调整。
@redraiment
redraiment / Y Combinator 简介
Last active December 23, 2020 07:44
Y Combinator (Fixed-point Combinator) 不动点组合子
Y组合子是Lambda演算的一部分,也是函数式编程的理论基础。
它是一种方法/技巧,在没有赋值语句的前提下定义递归的匿名函数。
即仅仅通过Lambda表达式这个最基本的“原子”实现循环/迭代。
颇有道生一、一生二、二生三、三生万物的感觉。
虽然Y组合子在理论上很优美,但在实际开发中并不会真的用到。
想要了解Y组合子是什么,请参见维基百科:http://en.wikipedia.org/wiki/Fixed-point_combinator#Y_combinator
或者知乎上的回答:http://www.zhihu.com/question/20115649
@redraiment
redraiment / dump-tree.lisp
Last active December 10, 2015 02:58
Define a recursive lambda.
; dump tree with a recursive lambda
(funcall
(fn dump-tree (e)
(if (atom e)
(format t "~A~%" e)
(mapc #'dump-tree e)))
'(1 (2 (3 (4) 5) 6) 7 (8 9)))
@redraiment
redraiment / sublist.lisp
Created December 25, 2012 02:56
Returns a sub list.
(defmacro sublist (1st start &optional (size nil))
"(sublist start size?)
Returns a list of the items in vector from start (inclusive)
to start + size (exclusive). If size is not supplied,
defaults to end of list."
`(loop for item in (nthcdr ,start ,1st)
,@(if size
`(for i from 1 to ,size))
collect item))