根据地平线确定自己所在楼层

这张hackerGame2021的图片让我有的这个想法 确定拍照者所在楼层, , 可以数清楚对面有几层楼, 这里只能假设拍摄者所在的楼和对面楼长得一样. 拍摄者的视线是这样的, 绿色为拍摄者所在楼层, 橙色为对面楼, 红色为视线, 椭圆为地球.因为地面的弧度相对于两个楼之间很小, 所以可以近似看成是一个平面. 得到近似三角形, $$ \frac{x_2-x_1}{x_2}=\frac{y_1}{y_2} $$ 因为x2相对于x1近乎无限大, 所以等式左边等于1, 所以y1=y2, 故我们和海平面视线相交处与对面楼的交点, 就是我们所在的楼层高度. 因此是14楼

2023-03-23 · Moo

宁芝niz 68键位静电容键盘使用体验

引言 在此之前一直使用的是红轴机械键盘和笔记本自带键盘, 早就听闻静电容手感如何如何, 终于在去年买了一把, 35g 68键 侧刻版本. 物理使用体验 手感 手感是十分轻柔, 轻柔的让人感觉只要在上面拂过就可以打出字来, 但过于轻柔会导致手无意识的放在Space, Tab上时, 屏幕上跳出一堆空格或乱窜. 35g的键盘赠送了10g的压力弹簧, 可以根据自己选择安装在不同的键位上, 但部分按键安装会有一点点"弹簧音", 不知是通病还是偶发事件. 35g的触发力度在长时间Coding和打字的情况下是十分舒服的, 但如果用其来打游戏, 就会出现因为上文中提到的“手感异常轻柔”而导致的一系列误触问题, 比如用来打csgo会经常无意识的按到Space导致自己在掩体后面跳起来而被空摘. 综上这键盘在我的几个月使用体验下来, 只适合码字完全不适合打游戏. 声音 声音的话我个人认为是相当舒服的, 轻柔不扰人, 在办公室或者说图书馆使用是完全没问题的, 同时自己听起来很有敲击感, 戴上耳机后又会完全听不见. 续航 续航十分短, 充满电的情况下连续使用10天左右就已经没电了, 需要插电充电. 当然你可以通过c-c的线来把它当作有线键盘使用几个小时, 几个小时足矣充满电了. 同时他的开关不是有一个实体按钮来进行操作, 而是通过tab左边键盘侧边的一个小圆按钮长按来进行开关, 当你几个小时不用导致键盘自动关机的时候(注意是自动关机而不是休眠), 你就需要重新按小圆按钮来进行开机, 体验上不如有实体按钮来操作开关机的其他无线键盘来的爽, 比如mx keys你即使一天没用, 随便按下键盘就可自动开机. 自动关机共有四个挡位, 1,2,3和永久不关机, 在一天使用12h并永不关机的情况下续航大概10天, 相较于一般的无线键盘少很多. 键位体验 从图片中可以看出来, F键全都没了, 需要配合fn键组合按键才能正常使用, 而在日常工作中需要高频使用F5,F9,F12, 十分不爽. 蓝牙可以选择三个设备, 但不能同时连接, 连接一个就会断掉另一个, 在c-c连接设备的时候可以通过组合按键来实现蓝牙连接其他设备. 可以通过fn+command(alt)来切换win/mac键位, 关机保存, 保存在你选择的蓝牙设备中, 比如你1号设备是win, 2号设备是mac, 你将2号设备设为了mac键位, 那么这个设置就会保存在2号键位. 另外在Mac系统下, 切换同个应用的不同窗口需要使用到Ctrl+`组合键, 这个键盘1左边的键位不是`而是Esc, 需要你用一种极其别扭的手势来进行这个操作, 当然这个是68键的问题而不应该是这个键盘的问题. ...

2023-01-22 · Moo

Hello Hugo

Hello World! Migrate blog to Hugo today!

2022-05-11 · Moo

算法: 寻找最大良田正方形区域

Question A farmer wants to farm their land with the maximum area where good land is present. The “land” is represented as a matrix with 1s and 0s, where 1s mean good land and 0s mean bad land. The farmer only want to farm in a square of good land with the maximum area. Please help the farmer to find the maximum area of the land they can farm in good land. Example: ...

2021-03-11 · Moo

密码学RSA非对称算法原理

首先我们看一个非对称加密在现实中的具体应用(笑 有学生没带作业, 老师需要在群里提醒家长, 但直接发学生的照片就会被所有家长知道没带作业的学生是谁, 这样会导致学生和家长都很没面子. 所以老师使用了公钥(大家都能看到的): 学生的鞋子. 大家看到的只是三个学生的鞋子, 并不知道学生具体是谁, 即看到的是密文. 家长看到了鞋子, 因为拥有私钥(即只有家长自己知道自己家孩子穿的什么样的鞋), 所以可以知道老师发的照片中学生是谁, 破解了密文, 这就完成了一次非对称性的加密和解密. 换成严谨一点的语言描述, 如下: A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。 A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。 A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。 A将这个消息发给B(已经用B的公钥加密消息)。 B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。 从上文可以看出, 非对称加密体系不要求通信双方事先传递密钥或有任何约定就能完成保密通信,并且密钥管理方便,可实现防止假冒和抵赖,因此,更适合网络通信中的保密通信要求. 原理 根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥. 获取公钥私钥过程 选择两个很大的素数p和q 这里取$p=67,q=71$ 计算$n=p⋅q, n$公开, 即为公钥的一部分. (如果$n=p⋅q=4757_{(10)}=1001010010101_{(2)}$, 二进制的n为13位, 则称该加密为13位加密, 实际应用中一般才用1024位或2048位的加密来保证安全). 计算 n 的欧拉函数 $φ(n)$ 设$m=φ(n)=φ(q)⋅φ(q)=(q−1)(p−1)=66×70=4620.$ 在数论,对正整数n,欧拉函数φ(n)是小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1(1), φ(8)=4(1,3,5,7), 这里的p,q都是质数, 所以从1到(n-1)都与其互质, φ(n)=n−1 再选一个数字e, e与m互质, 且1<e<m, e也是公开的, 即公钥的另一部分. 这里取e=101, 这里e的选择有一个小坑, 我们一会再说 找到一个整数 d,可以使得 e∗d 等价于$e*d−1=y∗m, y∈N+$, 将数字带入$101×d−1=y×4757$, 这里可用扩展欧几里得算法解, 下文给出过程, 这里省略. 给出结果$(d,y)=(1601,35)$, 即$d=1601$, 从这里可以看出, d是由我们上面第4步任意取的e决定的, 所以我们只要选取不同的e, 就可以得到不同的d, 就是不同的密钥对. ...

2020-10-07 · Moo

算法: 有效的括号

问题描述 给定一个只包括 '(', ')', '{', '}', '[', ']' 的字符串, 判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认为是有效字符串. 题目地址:https://leetcode-cn.com/problems/valid-parentheses/ (看了评论才知道是B站开发岗面试题) 示例 输入: "()" 输出: true 输入: "()[]{}" 输出: true 输入: "(]" 输出: false 输入: "([)]" 输出: false 输入: "{[]}" 输出: true 解答 思路一 class Solution: def isValid(self, s): while '{}' in s or '()' in s or '[]' in s: s = s.replace('{}', '') s = s.replace('[]', '') s = s.replace('()', '') return s == '' 对于正确的来说, 每次都能去掉一对括号, 最后就成了空. 思路二 其实这个题主要是考大家关于栈的应用 原理 栈先入后出特点恰好与本题括号排序特点一致, 即若遇到左括号入栈, 遇到右括号时将对应栈顶左括号出栈, 则遍历完所有括号后 stack 仍然为空; 建立哈希表dic构建左右括号对应关系:key 左括号, value 右括号;这样查询 2 个括号是否对应只需 $O(1)$ 时间复杂度;建立栈 stack, 遍历字符串s 并按照算法流程一一判断. 流程 如果 c 是左括号, 则入栈 push; 否则通过哈希表判断括号对应关系, 若 stack 栈顶出栈括号 stack.pop() 与当前遍历括号 c 不对应, 则提前返回 false. ...

2020-09-15 · Moo