Shaocong Blog

我干了什么 究竟拿了时间换了什么

[Erlang] dbg:tracer用法

Erlang

dbg:tracer用法 dbg:tracer(). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 开启dbg的tracer dbg:p(Item, Flags) -> {ok, MatchDesc} | {error, term()} 设置跟踪属性. 第一个参数Item是设定要跟踪的对象: ...

[Erlang] Astar 寻路算法

Erlang

Astar 寻路算法 A star算法也叫A星(A*)算法,这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或网络游戏的BOT的移动计算上.该算法综合了最良优先搜索和Dijkstra算法的优点:在进行启发式搜索提高算法效率的同时,可以保证找到一条最优路径(基于评估函数)。 在A star算法中,如果我们要计算两点之间的距离,例如上...

[Erlang] ets 并发读写

Erlang

ETS是Erlang内置的内存数据库,可用于多进程共享数据,具有并发读写的性能。 比如新建一个person的ets表: 1 ets:new(person, [set, public, named_table, {write_concurrency, true}, {read_concurrency, true}]). 说说ets并发读写的两个参数:write_concurrency /...

[Erlang] 效率指南阅读笔记

Erlang

length 在某些情况下可用模式匹配替代 1 2 3 4 test(L) when length(L) >= 3 -> do_something; test(_) -> skip. 1 2 3 4 test([_,_,_|Tail] = L) -> do_something; test(_) -> skip. 一个细微的区别...

[Erlang] Comment Test浅尝

Erlang

通过Common Test测试代码,用Cover Test测试代码的覆盖率 构建简单的测试例子,用模式匹配来检测运行是否出错 目录结构 1 2 3 4 5 6 7 8 |- |-check |-check_demo.bat |-cover.spec |-src |-demo.erl |-demo_SUITE.erl |-Emakefil...

最长回文子串

位运算

原题内容 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 示例 2: 输入: “cbbd” 输出: “bb” 中心拓展法 思路:把每个索引当做回文串的中心,进行拓展,寻找以该索引为中心的最长回文串。注意回文串的奇偶问题 ...

二进制反转

位运算

颠倒给定的 32 位无符号整数的二进制位。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 func reverseBits(num uint32) uint32 { var i uint32 for i = 0; i <= 15; i++ { head, tail := BitGet(num...

厄拉多塞筛法

素数问题

厄拉多塞筛法(筛选素数) 西元前250年,希腊数学家厄拉多塞(Eeatosthese)想到了一个非常美妙的质数筛法,减少了逐一检查每个数的的步骤,可以比较简单的从一大堆数字之中,筛选出质数来,这方法被称作厄拉多塞筛法(Sieve of Eeatosthese)。具体操作:先将 2 到 n 的各个数放入表中,然后在2的上面画一个圆圈,然后划去2的其他倍数;第一个既未画圈又没有被划去的数...

198.打家劫舍

Leetcode

思路 样例分析,如:[1, 2, 3, 1] DFS分析: 如上图分析可得推导公式:设 money(i) 为偷窃到第 i 号房的最优解, T(i) 为第 i 号房所拥有的现金数 i > n : money(i) = 0 i <= n : money(i) = max(money(i - 1), money(i - 2) + T(i)) 在DFS分析过程中,还可以看到在...

N人过桥问题

Leetcode

题目 在一个夜黑风高的晚上,有n(n <= 50)个小朋友在桥的这边,现在他们需要过桥,但是由于桥很窄,每次只允许不大于两人通过,他们只有一个手电筒,所以每次过桥的两个人需要把手电筒带回来,i号小朋友过桥的时间为T[i],两个人过桥的总时间为二者中时间长者。问所有小朋友过桥的总时间最短是多少。 分析 n == 1: 一个人过桥,过桥时间为:T[1] n == 2: 两个...