Instantly share code, notes, and snippets.

# LiuTaoLiutos

• Sort options
Created May 14, 2020
Project Euler第72题
View pro72.lisp
 ;;; 换个思路？ ;;; 先算出一百万以下的所有素数 ;;; 基于这个素数表，对每一个数字d都进行快速的因数分解 ;;; 得到数字d的质因数后，用筛法计算出互质的数字的个数 (defun generate-prime-numbers (limit) "计算出所有不大于LIMIT的素数。" (let ((bitmap (make-array limit :initial-element 1)) (result '())) (dotimes (i limit (nreverse result)) (let ((ele (aref bitmap i)))
Created Jan 24, 2020

View all-first-registers-to-strings.lisp
 (ql:quickload 'cl-ppcre) (defun all-first-registers-to-strings (regex target-string) "返回TARGET-STRING中所有匹配正则表达式REGEX的字符串属于第一个register的内容。" (check-type regex string) (check-type target-string string) (let ((pos 0) (strs '())) (loop (multiple-value-bind (start end register-begins register-ends)
Created Apr 27, 2014
View gist:11345793
 (set lst #(1 2 3)) (set vec [4 5 6]) (set tab {1 => 'a', 2 => 'b'}) (with lst.each do (x) (Stream.println x)) (with vec.each do (x) (Stream.println x))
Created Oct 19, 2013

View from_utf8.c
 #include #include #define MASK 0x8000 // 计算一个字节中最高位开始的连续为1的位的数量 int count1(char byte) { int count = 0; while ((byte & MASK) == MASK) { count++;
Created Feb 3, 2013
The code with optimization declaration may make SBCL to note some *unable to optimize* message.
View parse-params.lisp
 (defun parse-params (s) (labels ((aux (acc s) (declare (optimize (speed 3))) (let ((i1 (position #\= s)) (i2 (position #\& s))) (cond (i1 (aux (cons (cons (intern (string-upcase (subseq s 0 i1))) (decode-param (subseq s (1+ i1) i2))) acc) (and i2 (subseq s (1+ i2))))) ((equal s "") nil)
Last active Dec 10, 2015
View 程序邪典.md

Created Dec 11, 2012
tokenizer函数演示
View tokenizer.c
 typedef enum { LPARENTHESIS, RPARENTHESIS, SYMBOL_TOKEN, EOF_TOKEN, }; void consume(lexer_t lexer) { if (lexer->c != '\0') {
Created Dec 10, 2012
OCaml代码示例
View gist.ml
 (* 定义变量a的值为1 *) let a = 1 (* 定义匿名函数，接收一个整数作为参数，返回结果为其参数的两倍 *) function x -> x*2 (* 定义名为doubel的函数，功能和上面的匿名函数相同 *) let double = function x -> x*2 (* 等价的写法，即语法糖 *) let double x = x*2
Created Oct 26, 2012

View mvb.lisp
 (truncate 10 3) ;一般情况下返回值为3，即10除以3的商，余数被丢弃了。 (multiple-value-bind (q r) (truncate 10 3) (format t "~D and ~D" q r)) ;输出结果为"3 and 1"。truncate实际上是会返回 ;多个值（即多重返回值）的一个函数，不过一般只会得 ;到一个，所以要用宏multiple-value-bind来捕捉 ;所有的返回值。相当于把(truncate 10 3)的第一个 ;返回值赋值给了q，第二个赋值给了r。
Created Oct 25, 2012

View tree-post.lisp
 (defpackage :com.liutos.binary-tree (:use :cl)) (in-package :com.liutos.binary-tree) (defclass tree-node () ((value :initarg :value :accessor tree-node-value) (left :initarg :left :accessor tree-node-left)
You can’t perform that action at this time.