liulyllyのblog
2021-12-23 09:26:19

本文主要记录学习 CS61A SU20 课程的一些感想

因为是课程笔记,所以基础知识不再赘述

实验,作业答案可见:Writeups

函数式编程定义

函数 可以 被作为参数传递,这是和面向过程相比最大的不同

它是一种声明式编程范式,其中函数是让输入值经过表达式树转换到输出值的映射,而不是更新程序运行状态的一系列命令式语句

这是在强调函数式编程的无副作用性:函数式编程有时被视为纯函数式编程的同义词,后者将所有函数视为确定性的数学函数(纯函数)。当使用一些给定参数调用纯函数时,它将始终返回相同的结果,并且不受任何可变状态(或其他副作用)的影响

查看更多
2021-12-10 22:17:59

总算把各种期中混杂着复变期末全部结束了,摸鱼一会

本文将安利一个开源的纯 JS 的 LC-3 模拟器,并介绍自己改的一个 LC-3 评测姬

查看更多
2021-09-10 21:09:09

本文将简单介绍一种静态界面需要加密的情景,并给出使用 AES 加密算法的一种实现。

静态内容的加密

有些时候,我们可能需要在页面上添加一些需要密码才能查看到内容。但对于一个静态页面而言,页面源代码初始时便已经由服务器发送到了设备上,所以仅仅只通过增加一个输入密码框来“欺骗”用户并不能很好地起到保密的作用。鉴于此,我们得考虑静态页面源代码中相关内容就已经被加密,而用户通过自己的设备输入密钥,运算,来获取原有的明文。

查看更多
2021-08-26 19:00:54

本文将简要介绍各种排序算法。

简介

排序算法(英语:Sorting algorithm)是一种将一组特定的数据按某种顺序进行排列的算法。

性质

稳定性

定义:如果一个排序算法能保证两个相等的数,经过排序之后,其在序列的前后位置顺序不变,那么这个排序算法就具有稳定性。

当要排序的内容是一个复杂对象的多个数字属性,且其原本的初始顺序存在意义时,排序算法的稳定性将会发挥作用。

查看更多
2021-08-01 17:03:21

本文主要介绍一些算法基础。内容参考自:算法基础简介 - OI Wiki (oi-wiki.org)

本文主要包括以下内容:算法复杂度,枚举,模拟,递归,动态规划,贪心,前缀和和差分。

算法复杂度

算法的时间复杂度可以看作基本操作的计数或估测,空间复杂度则可以看成算法所需要的空间。假设 nn 为数据规模,那么算法的时间 or 空间复杂度都可以表示成 nn 的一个函数 f(n)f(n) 。

考虑 nn 足够大时,引入高阶,同阶,低阶无穷大的概念,那么有:

f(n)=Θ(g(n))f(n)=\Theta (g(n)),当且仅当 f(n)f(n) 与 g(n)g(n) 同阶;

f(n)=O(g(n))f(n)=O (g(n)),当且仅当 f(n)f(n) 比 g(n)g(n) 低阶或同阶(确定了 f(n)f(n) 上界);

f(n)=Ω(g(n))f(n)=\Omega (g(n)),当且仅当 f(n)f(n) 比 g(n)g(n) 高阶或同阶(确定了 f(n)f(n) 下界);

f(n)=o(g(n))f(n)=o (g(n)),当且仅当 f(n)f(n) 比 g(n)g(n) 低阶。

f(n)=ω(g(n))f(n)=\omega (g(n)),当且仅当 f(n)f(n) 比 g(n)g(n) 高阶。

查看更多
2021-07-09 09:36:41

本篇博客将记录 Hexo 默认 landscape 主题的夜间模式实现,以及 Git 工作流的简单介绍。

基本思路

要想实现夜间模式,就意味着应用 CSS 的改变。这里作为 JS 练习,采用纯前端的方法实现:如果当前开启了夜间模式,那么就向根结点,即 HTML 结点增加一个类 dark-theme,再重写深色模式使用的样式表,放置在原有样式表最后即可。

查看更多
2021-06-05 22:19:04

接上一篇博客:数独的模拟逻辑解法的实现,本篇博客将介绍数独的 A* 算法求解。

A* 算法

原理分析

A* 算法是游戏中寻找路径的一种常见解法,它能在保证找到最短路径的同时,以一种较为节省计算资源开销的方式达到这一目的。关于理论分析,可以见斯坦福计算机系写的一篇 算法介绍,或者见它的 中文译文,这个网页似乎有点兼容性问题,所以你也可以查看 csdn 的转载。

查看更多
2021-06-03 23:38:03

本文将主要介绍人工解数独时采用的唯余法的算法实现,并给出将其改造成迭代加深算法时,解所在最低层数的确定。

唯余法

当数独谜题中的某一个宫格,因为所处的列、行及九宫格中,合计已出现过不同的 8 个数字,使得这个宫格所能填入 的数字,就只剩下那个还没出现过的数字时,我们称这个宫格有唯余解。

可以看到,唯余法就是利用排除法得出数独某个位置可能的唯一解。但在人工用这种方法解数独时,可能会出现以下问题:

  1. 只剩唯一解的数独格子难以直接观察得到。采用唯余法观察时,行,列,宫格的重复性都要考虑,对人的视力提出了巨大的挑战。
  2. 可能,而且很可能不存在能直接确定答案的数独格子。比如可能排除到最后,这个格子还剩 4 和 6 能填,确定不了具体需要填哪一个数。
查看更多
2021-05-21 20:16:47

前言

本文写于 2021 高考临近前,旨在给即将进入大学的各位提供一些微小的帮助。

考虑到本人能力,视野有限,故选校 / 学习部分更多是站在一个 985 理工科的视角上,若不符合个人情况,仅供参考。

查看更多