Javascipt 实践:背景特效
省选前因为长期闷在机房,训练过程中也遭受巨大打击,啥事都不想做,有弃赛的冲动。最后省选惨败,副产品是拿 Javascirpt 搞了一个背景特效。
原理
给每个粒子带 2.5 单位正电荷,鼠标点击后确定一个 200 单位负电荷的中心,中心周围一定半径内施加一匀强磁场和一定阻力,让粒子自由运动。如果粒子触及边界就反弹。距离较近的电荷之间会视距离远近连结不同颜色、不同粗细的线。
效果
意外的是,在施加了一定阻力的情况下,磁场圈内部的粒子在运动过程中,会吸聚一波不受磁场作用的外层粒子,结成好看的纹理。(如图,淡蓝色圆圈内部是磁场)
问题
由于 Javascript 比较慢,不能模拟太精细,洛伦兹力存在较大误差。为此请教了一下物社社长,发现除了直接模拟做数值解外,解析解需要泛函分析,给吓跑了 QwQ 这鱼摸着摸着变鲨鱼了。
Python 实践:爬虫
爬虫也是我省选前那段逃课时期的摸鱼作,动机是河狸学长的脑洞说能不能自动从 LOJ 搬题到校内 OJ.
登录 LibreOJ 并爬数据
LibreOJ 不欢迎 Python 代码的访问,但是通过伪造 UA 就可以上。人力分析 url 后写死进代码,让它到对应位置下载题面和数据。题面的各部分内容可以用 xpath 分析出来,数据处理部分还没做。
登录校内 OJ
分析了一下校内 OJ 的表单,成功提交了代码,做了个本地提交客户端。但是在包装题目修改页面的 multipart/formdata 时发现数据文件栏没法留空,这部分还没做。LibreOJ 的公式用的是 KaTeX 渲染,和校内的 MathJax 有巨大差别,这部分也还没做。
省选惨败后去打游戏了,此坑作罢。