颜林林的“左耳听风ARTS”打卡记录

ARTS第三十六周(2020年5月25日~31日)

2020-05-31

Algorithm

LeetCode题库

编号 难度 题目 我的解答 执行用时 内存消耗 排名 备注
240 中等 搜索二维矩阵 II 200531-1.cpp 168 ms 10.8 MB 37.77%
241 中等 为运算表达式设计优先级 200531-1.cpp 8 ms 11.8 MB 56.05%

Review

1. 从编译角度去理解一个C++程序

分享链接:Analyzing the Simplest C++ Program

通常我们在学习C++语言时,都把它当作一门高级语言来使用,虽然C++经常与C并列讨论,但其实我们很少像C语言般去考虑C++程序怎么跟对应的可执行文件组成部分相对应的。正因为如此,这篇文章显得很独特且有价值,它使用一个很简单的C++程序,深度解析其编译过程及结果,涉及到编译器和链接器背后,隐含加入的各种标识和相应代码。跟随该文章学习(并实际操作一遍),对于理解编译基本原理,以及C++语言的实现过程,是非常有帮助的。

Tip

1. 管理并使用不同版本的R包

分享链接:Introduction to renv

R语言的发展非常迅速,得益于大量R包的涌现和不断更新,但这也带来问题:有时候,R包之间并不能总是保持和谐,遇到冲突时,就得考虑分别使用某个包的不同版本。

在过去,有一个packrat包,尝试用互相隔离的技术手段,让同一系统下,能够安装不同版本的R包,在彼此隔离的环境中,分别安装不同的R包。在遇到(依赖)R包很多时,其下载安装过程相当耗时。目前最新的renv包,则能比较好地解决这个问题,让不同版本的R包在管理和使用起来变得更加方便。

Share

1. 两行JS代码实现的迷宫

分享链接:https://github.com/nickyreinert/maze/blob/master/pseudo_maze.mini.html

这两行代码的运行效果比较神奇,是一个关于随机数的不错的应用示例。与之相应的,有一篇文章:

How to create a maze algorithm with JavaScript

几乎手把手地讲解怎么实现一个生成真正迷宫的程序。