2020年4月

编写一个算法来判断一个数 n 是不是快乐数。

「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为  1,那么这个数就是快乐数。

如果 n 是快乐数就返回 True ;不是,则返回 False 。

思路

  1. 数字转字符列表依次计算平方的和
  2. 检查是不是在已知的非快乐数中,是则继续计算;不是且不为1,那就是新的非快乐数,记录并返回False;都不是则它是未知的快乐数,记录并返回True
  3. 平方和部分用字典预存储0-9的平方结果
class Solution:
    def isHappy(self, n: int) -> bool:
        stock = {
            "0" : 0,
            "1" : 1,
            "2" : 4,
            "3" : 9,
            "4" : 16,
            "5" : 25,
            "6" : 36,
            "7" : 49,
            "8" : 64,
            "9" : 81,
        }
        self.happy_stack = [0, 1]
        self.non_happy_stack = []

        def check(n):
            if n in self.happy_stack:
                return True
            _sum = sum([stock[num] for num in str(n)])
            if _sum in self.non_happy_stack:
                return False
            elif _sum != 1:
                self.non_happy_stack.append(_sum)
                return check(_sum)
            else:
                self.happy_stack.append(_sum)
                return True
        return check(n)

数字各位平方和

不知道这样会不会快一点

def get_sum(n):
    _sum = 0
    while n > 0:
        _sum += (n % 10) ** 2
        n = int(n / 10)
    return _sum

  • 查看硬盘信息
fdisk -l
  • 硬盘分区(注意你的硬盘名字,我的是/dev/vdb
fdisk /dev/vdb

然后可以输入m查看帮助。

  1. 输入n,即添加一个新分区
  2. 选择primary,我试过选择extend在后面格式化操作失败
  3. 后面几个选项,柱面起始结尾默认就行,因为是整块挂载
  4. 输入p查看分区情况,输入w保存结果
  • 格式化硬盘

df -h可以看到硬盘了
然后mkfs -t ext4 /dev/vdb1,注意是vdb1不是vdb

  • 挂载
mkdir /home/disk
mount /dev/vdb1 /home/disk

修改/etc/fstab,末尾添加,就可以开机自动挂载硬盘了

/dev/vdb1 /home/disk ext4 defaults 0 0
  • 其他

如果没有格式化就会提示下面这样的错误## 标题文字 ##

wrong fs type, bad option...

项目官方地址:Header Editor
谷歌商店:Header Editor

虽然之前有分享Gooreplacer,不过测试发现不支持referer的修改,不知道是不是姿势不对还是操作有问题。
Header Editor除了重定向、拦截修改请求头外,还有一个特性是可以修改响应体,不过可惜的是在Firefox上才行,其他部分的功能和Gooreplacer区别不会太大。
个人体验是Header Editor功能方面会更强一些,有一个不太舒服的地方是添加规则的按钮在右下角,打开设置界面后还切了好几次后才注意到。。
2020-04-29T13:43:19.png

举一个修改referer的例子
修改前:
2020-04-29T13:48:02.png
设置:
规则类型在最开始的编辑的时候可选,保存后退出再编辑就不能变更了
2020-04-29T13:52:53.png
修改后:
2020-04-29T13:52:08.png

Header Editor改referer有什么用呢,我想大概是有些搞盗链的网站会比较喜欢这个功能。不过感觉推荐的人不多。

感觉没什么人介绍Editor。。
参照前面的配置文章配置好(提供的压缩包直接解压即可使用)

编写vpy脚本

每个压制的视频配置可能不同,对新的压制任务建议直接另存脚本修改。
2020-04-18T17:35:57.png
编写好脚本后通过Check script检查脚本有没有错误
2020-04-18T17:38:58.png
通过Preview可以预览情况
2020-04-18T17:40:46.png

配置额外脚本模板

VapourSynth一般是做预(初步简单的)处理,所以需要配合x264之类完成最后的压制,这里通过Editor来做(为什么不写bat,后面说...)。

选择Encode video
2020-04-18T17:45:50.png
然后再Preset输一个名字,Header选择Y4M(因为要传给Encoder处理),然后Executable选择你要使用的压制软件,Arguments设定你的压制参数之类的,然后点Save保存预处理模板。
2020-04-18T17:48:35.png

在这里你可以直接开始跑压制了,不过对于有许多任务的时候不建议。

添加更多的任务到VapourSynth jobs server watcher中

比如我这里要压制二十多集的电脑线圈,通过Enquene encode job添加到server中,选择前面设定好的模板,然后修改一下一些参数,输出名什么的。
2020-04-18T17:53:37.png
然后Save就会添加到server中了,注意点Preset的Save会变更这个预设的内容
2020-04-18T17:56:00.png

通过这样一些列操作,就能愉快的压制了,如果出现什么错误,VapourSynth jobs server watcher也会hold住的。

当然前面这一些列操作完全等价于下面的bat脚本(位于EncodeWorker文件夹下)

Tools\VSPipe.exe --y4m "go04.vpy" - | Binaries\ffmpeg.exe -i - -i "[Yousei-raws] Dennou Coil 04 [BDrip 1920x1080 x264 FLAC].mkv" -map 0:v -pix_fmt yuv420p -c:v libx264 -me_method umh -crf 21 -map 1:a -c:a aac -b:a 192K "outputs\04.mp4" -y

回到刚才的问题,为什么不直接bat呢,因为不好看进度,虽然有魔改版的x264可以,但我又不用...

最后

Tips! VapourSynth压制字幕时,指定字体文件夹而不用安装挺方便,AVS的不太清楚(没用过)

另外分享几张压制输出的效果图
2020-04-18T18:05:36.png
2020-04-18T18:06:13.png
2020-04-18T18:06:49.png
2020-04-18T18:07:08.png
2020-04-18T18:08:52.png

另外有个问题,VapourSynth Editor把配置记录放哪儿了呢,即使是全新解压出来,一运行就能看到之前的记录,就很奇怪。。