Skip to content

Instantly share code, notes, and snippets.

View yanfeng42's full-sized avatar
💌
I may be slow to respond.

Macro yanfeng42

💌
I may be slow to respond.
View GitHub Profile
@yanfeng42
yanfeng42 / FindGhost.java
Last active November 8, 2021 02:13
algs4 1.3.3 计算不可能产生的 出栈顺序 -- 用编码的方式 计算
package life.yanfeng.study.algorithm;
import edu.princeton.cs.algs4.StdOut;
import java.util.Arrays;
enum StackActionEnum {
pop, push
}
@yanfeng42
yanfeng42 / Rational.java
Created October 27, 2021 02:41
alg4 1.2.16 实现一个简易的 分数 计算工具类
package life.yanfeng.study.algorithm;
import edu.princeton.cs.algs4.StdOut;
// for 1.2.16
public class Rational {
// 分子.
private long numerator;
// 计算最大公约数. ref: https://zh.wikipedia.org/wiki/%E8%BC%BE%E8%BD%89%E7%9B%B8%E9%99%A4%E6%B3%95
@yanfeng42
yanfeng42 / SmartDate.java
Created October 15, 2021 02:16
algs4: 1.2.12 使用 蔡勒公式 计算今天星期几
package life.yanfeng.study.algorithm;
import edu.princeton.cs.algs4.StdOut;
public class SmartDate {
private final int month;
private final int day;
private final int year;
public SmartDate(int m, int d, int y) throws RuntimeException
{
@yanfeng42
yanfeng42 / same-parity.scm
Created September 30, 2021 09:25
same-parity: 不借助 辅助函数的 特殊 “超纲” 写法
; 基础方法
(define (same-parity x . l)
(same-parity-adpater x l)
)
(define (same-parity-adpater x l)
(if (null? l)
(cons x l)
(let ((car-item (car l)))
(if (even? (+ car-item x))
@yanfeng42
yanfeng42 / SmartDate.java
Created September 29, 2021 02:02
SmartDate 有感: 我支持 所有异常 都是 受检异常
package life.yanfeng.study.algorithm;
import edu.princeton.cs.algs4.StdOut;
public class SmartDate {
private final int month;
private final int day;
private final int year;
public SmartDate(int m, int d, int y) throws RuntimeException
{
@yanfeng42
yanfeng42 / view_money_order.scm
Last active September 10, 2021 12:41
sicp 2.19: 可视化的方式, 展示零钱本身的顺序, 对计算过程的不同影响.
; 源码 1.14.scm 中有一部分.
; 既有实现的输出: 4.
(count-change 10)
; 新的实现...
(define us-coins (list 50 25 10 5 1))
(define us-coins-0 (list 1 5 10 25 50))
(define us-coins-1 (list 50 5 10 1 25))
(define uk-coins (list 100 50 20 10 5 2 1 0.5))
@yanfeng42
yanfeng42 / mul-interval-2.scm
Last active August 30, 2021 05:45
sicp 2.11 没有完全符合要求的答案
; (define (mul-interval x y)
; (let ((p1 (* (lower-bound x) (lower-bound y)))
; (p2 (* (lower-bound x) (upper-bound y)))
; (p3 (* (upper-bound x) (lower-bound y)))
; (p4 (* (upper-bound x) (upper-bound y)))
; )
; (make-interval (min p1 p2 p3 p4) (max p1 p2 p3 p4))
; )
; )
@yanfeng42
yanfeng42 / BinarySearchCase.java
Created August 27, 2021 02:44
1.1.39 关于随机数碰撞的警示
package life.yanfeng.study.algorithm;
import edu.princeton.cs.algs4.In;
import edu.princeton.cs.algs4.StdOut;
import java.util.Arrays;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
// for 1.1.39
@yanfeng42
yanfeng42 / church.scm
Created August 26, 2021 04:41
2.6 Church计数: 不使用数字的计算法
(define zero (lambda (f) (lambda (x) x)))
(define one (lambda (f) (lambda (x) (f x))))
(define two (lambda (f) (lambda (x) (f (f x)))))
(define three (lambda (f) (lambda (x) (f (f (f x))))))
(define (add m n)
(lambda (f) (lambda (x) ((m f) ((n f) x))))
@yanfeng42
yanfeng42 / my-cons.scm
Created August 19, 2021 06:54
2.1.3 有感: 在支持函数作为第一对象的语言里, 可以直接 使用 “过程” 定义 “数据”
(define (my-cons x y)
(lambda (m)
(cond ((= m 0) x)
((= m 1) y)))
)
(define (my-car z) (z 0))
(define (my-cdr z) (z 1))