Forwarded from Deleted Account
def makeCats(xs, t); t.times { xs = xs.map { |x| xs.map { |it| it+x } }.flatten }; return xs; endForwarded from Deleted Account
makeCats('a'..'z', 1)
=> ["aa", "ba", "ca", "da", "ea", "fa", "ga", "ha", "ia", "ja", "ka", "la", "ma", "na", "oa", "pa", "qa", "ra", "sa", "ta", "ua", "va", "wa", "xa", "ya", "za", "ab", "bb", "cb", "db", "eb", "fb", "gb", "hb", "ib", "jb", "kb", "lb", "mb", "nb", "ob", "pb", "qb", "rb", "sb", "tb", "ub", "vb", "wb", "xb", "yb", "zb", "ac", "bc", "cc", "dc", "ec", "fc", "gc", "hc", "ic", "jc", "kc", "lc", "mc", "nc", "oc", "pc", "qc", ...]Forwarded from Deleted Account
递归下来懒得想了,跑路(不过就是每次往上面一层去 map (\x flatMap ([x] ++)) xs
就可以构造出 a (a) b (a) ... z(a), a(b)... a (aa), z(aa), a(ab)....
就可以构造出 a (a) b (a) ... z(a), a(b)... a (aa), z(aa), a(ab)....
Forwarded from Deleted Account
可以(
#define GETC (ch = getchar())
static inline int readInt() {
signed int n = 0;
char ch = '\0';
while (isspace(GETC));
if (ch == '-') { n = ~n; GETC; }
//reads natural part
while (isdigit(GETC))
n = (n*10) + (ch-'0');
return n;
}
类似解析组合子的布局Forwarded from Deleted Account
总之,现在看起来生成的程序是有差别,不过我觉得还是相信编译优化的好,毕竟这都几十年的积累了,若是真的快它要把普通 add sub mul 指令都优化成位运算的
知乎上之前有篇关于这类问题的描述,可以找找,总之就是这样...
我觉得,把程序写好看是最重要的,各种很 dirty 的 workaround 和手工的变形,能免则免,避免黑科技、避免魔数什么的
希望两位以后的程序,尽可能往简单易维护的方向写... 或许过几天你就会发现简单的价值所在
推荐文章:如何写出无法维护的代码
Have a nice night coding.
知乎上之前有篇关于这类问题的描述,可以找找,总之就是这样...
我觉得,把程序写好看是最重要的,各种很 dirty 的 workaround 和手工的变形,能免则免,避免黑科技、避免魔数什么的
希望两位以后的程序,尽可能往简单易维护的方向写... 或许过几天你就会发现简单的价值所在
推荐文章:如何写出无法维护的代码
Have a nice night coding.
酷 壳 - CoolShell
如何写出无法维护的代码 | 酷 壳 - CoolShell
Forwarded from Deleted Account
我学过 dijkstra 算法(就是主要一个 map 记录某 node(edge) 的最小开销和一层路径,最后根据 end edge 的路径回溯一个一个地方的回来),不过我没写过,而且不是特别熟悉 C++
不过我觉得代码风格是很重要的
良好的代码风格可以证明你拥有清晰的逻辑,何况本来常量、函数、本地变量、全局变量、类型名称使用不同的命名风格本来就有益于使得编程更简单易读
不过我觉得代码风格是很重要的
良好的代码风格可以证明你拥有清晰的逻辑,何况本来常量、函数、本地变量、全局变量、类型名称使用不同的命名风格本来就有益于使得编程更简单易读
Forwarded from Deleted Account
不可读的这么多花括号
不容易符合直觉的
if () for 只是这种原因的话也要加上花括号,而没有在语法上区分开不容易符合直觉的
Forwarded from Deleted Account
dist 你改成 cost 或许好看一些... dist 这个本身就和 distrib... 有点缩写混了
ee 这样意义小的名字应该避免
ee 这样意义小的名字应该避免
Forwarded from Deleted Account
有的逻辑能 merge 就 merge,
trivial 的部分能明确化就明确化
if (costs[link] > costs[current] + link.cost) {
costs[link] = costs[current] + link.cost;
works.push( (node) {d[link.to], link.to} );
}
可以弄成 minBy 的抽提...
睡觉了,虽然我都没注意到 to 是一个箭头 晚安
trivial 的部分能明确化就明确化
if (costs[link] > costs[current] + link.cost) {
costs[link] = costs[current] + link.cost;
works.push( (node) {d[link.to], link.to} );
}
可以弄成 minBy 的抽提...
if (costs[link] > costs[current] + link.cost) {
costs[link] = costs[current] + link.cost;
works.push( (node) {costs[link.to], link.to} );
}
auto selected = minBy(costs[link], id, costs[current], [](auto x) { x+link.cost });
🤔 好像不行呢...睡觉了,虽然我都没注意到 to 是一个箭头 晚安
#acg https://ihentai.moe/ 虽然我之前没有去过 ehentai,但是我见过某 ehentai 的工具
ehentai 总体结构比较简单,就是一个以 gid 为 key 本子元数据为结果的 dict
这里是一位大佬根据令一位大佬 8k 本本子数据 创建的站
数据在 GitHub 上可以访问,不过需要 Git LFS(large filestore) (本子缩略图什么的>2G)
也是看到开源哥的点赞才知道有这玩意...
ehentai 总体结构比较简单,就是一个以 gid 为 key 本子元数据为结果的 dict
这里是一位大佬根据令一位大佬 8k 本本子数据 创建的站
数据在 GitHub 上可以访问,不过需要 Git LFS(large filestore) (本子缩略图什么的>2G)
也是看到开源哥的点赞才知道有这玩意...