2021-06
17

八卦之心卷土重来

By xrspook @ 8:33:56 归类于: 烂日记

当你累得好像气都喘不过来的时候(实际上我感觉应该是周日献血400mL以后还没完全恢复,所以在激烈运动的时候,我的心率会偏高大概10-15,偏高的心率以及加码的运动量我肯定会有灵魂出窍的感觉。运动的时候喘得过气是必须的,哪怕强度再激烈一些。如果我恢复得当的话,献血的副作用一周后就会消失,我又可以满血复活了。我还没缓过来,昨天广州血液中心就发短信给我说全血已经运往三九脑科医院使用了),脑子里那些乱七八糟的八卦念头会消失得一干二净,昨天晚上我正是做了这样的事。以前我不懂这个绝招,但现在。我已经懂得这个套路了,而且这个运动必须是激烈的,不能是慢跑,因为慢跑只会让你落入一个运动的甜点,会让你想得更多,你跑的时候没办法做你想做的事,于是你跑完以后,不知不觉就要在上面投入很多时间和精力了。昨天晚上我需要做到的是打消我之前那些乱七八糟的念头,让自己重新回到正轨,回到我的自己身上。谁叫说起奋不顾身我在行得简直可以直呼随手拿来条件反射。

端午节假期的那几天下午我都在家里煲BLF,自然而然就会看到一些我不是故意看到的细节(重点错一直是我的习惯)。于是我凭借那些细节翻找我的电脑,找原因之后又顺便带出了另外一些我有印象,但是却不知道要去哪里找回那些记忆。这种感觉上有,但是却找不到的感觉让人纠结,所以端午节的那天晚上,我不知不觉就12点30才去睡觉了,因为当我接近12点的时候,再次打开电脑翻查某些图片的时候,我根本停不下来。这种乱七八糟继续延续到我的工作日,只要手头上的东西干完了,我就开始翻找我的电脑,翻找我的网盘,翻找我的blog。

以前只存了一些质量非常不好的小图片,那个应该是某个杂志的扫描,但是图片就只有十几KB那么大,里面的字根本不知道写的是什么。我过手扫描的杂志图片全部都是高清大图,无论是电子杂志的截图还是其它。但要知道那些小图大概是我2004年存回来的,而放图的那些人找到的那些图片时间更久远。我试图用现在的AI技术把图片放大,结果图是放大了,但字依然看不清。现在的搜索引擎都很厉害,我也试图把图片放在搜索引擎里让它自动识别去找大图,结果也是没有然后的。之所以这样是因为图片实在太小众了,而且图片质量太差,可以提取的信息 很少,不过还有一个非常重要的原因——现在的网络上还能找到那个图片吗?

除了找那个图片以外,我也要找另外一个图片对应的某段描述。于是昨天我就凭借我的记忆,不断地提取关键词搜索,我想要的结果没找到,却找到了一些让我八卦沸腾的东西,比如说JEA去年底得了新冠。也比如说BLF原班人马在2017年的时候在波哥大做过几场BLF的舞台剧,又比如说JEA大概在2015年时二婚。老婆是个模特,现在已经生了个小孩。这些信息点其实都不是我想要的,但是在我搜索过程中就自然而然就蹦出来了,我无法拒绝。同样蹦出来的还有JEA在努力经营他的Instagram,在上面发图发视频就算了,还经常在上面搞直播。这样的社交网络经营,我也是醉了。不过也可以理解,新冠疫情期间什么事都干不了,拍戏肯定是可能的了,要保住自己的流量,也就只能这样了。他臭美也就算了,那是他的工作和人生,然后我还认认真真地全部都拉了一遍,那可真的是要命,2012至今的东西啊,1500个以上。但在我拉一遍之前,我明明记得自己是有Instagram的账号的,但是当我登进去的时候却告诉我没有这个用户名,也没有这个账号,当我重新注册,用回我经典的用户名的时候,又说那个用户名不能使用。所以这到底是怎么回事呢?是我自己注销了自己的账号,然后又忘记了吗?如果是我注销了自己的账号,理论上他们应该会给我的邮箱发信息,但实际上我的邮箱没有那样的信息。为了去八卦JEA,我不得不注册了一个新的Instagram的账号。小迷妹的八卦欲望真的是势不可挡。但相对于以前干过的那些事,注册个注册个新的Instagram账号已经算非常简单了。

由于篇幅太长,这篇blog居然还没谈到我最想聊的核心内容字数就已经差不多了,只能下回分解。

2020-09
10

求知

By xrspook @ 9:42:18 归类于: 烂日记

当我在使用Excel的时候遇到问题,通常我都会去搜索,搜索出来的东西通常来说论坛和知乎的结果会比较靠谱。当然了,不是搜索所有东西都是这两种途径获取的信息最信得过。如果是搜索影视相关的东西,尤其是资源类的东西,那就必须靠感觉和经验。搜索编程类的问题,个人博客通常能帮大忙,尤其是那些已经有好段历史的博客。基础信息的搜索通常可以找教程,通常最基本的东西,官方都是有教程的,但要做到更进一步,尤其是有些特别的私人定制需求,那就必须拜访民间的知名教程。

在没有互联网之前,书本是我们不求人获得知识的唯一途径。那个时候,要不翻自己手头上的书,要不去图书馆翻书,没有别的选择,但书之所以成为书,肯定是因为已经有比较有把握的积淀,这是一件好事,但同时也是件不怎么好的事,因为这就意味着书里说的东西可能已经过时了,有时甚至已经很过时了。从前,要上手一个新软件,手边没有教程类的书还真不行,过去我们都是按照书本上的步骤一点点模仿的,但书上的版本和我们实操的版本往往又有区别,所以时间还得耗费在找到底在哪里上面,运气不好的时候根本就找不到,因为可能某些功能已经被删除了。后来,教程类的东西我感觉自己越看越少了,接触的东西多了,摸索软件我靠的是经验直觉。倒不是因为软件运行的机理我明白了,而是我对软件的功能分布有点心里有数,即便完全没见过,我也可以根据我过往的经验去猜测我想要的东西在哪里,所以找按钮从按图索骥变成我感觉它就在那里,如果不在那里我觉得它应该在哪里。完全清楚某个软件的按钮分布其实意义不大,最重要的是理解做软件的人大概会把功能如何划分。纯粹靠熟练去摸索软件的操作,一个大更新以后绝对傻眼。比如Office从2003转为2007,界面发生了巨大变化,搞不懂其中的分类逻辑,哪怕你对2003再熟练,但操作2007的时候依然会让人觉得你是个Office白痴。

一直以来,我都对论坛这种东西有好感,几乎可以这么说,我的互联网生涯总是在不同时期侧重地在不同的论坛里流连。要不不干,要不干好。在完全不同的领域,我也不知道自己是怎么可以做到从路人甲变成管理员,为什么论坛的管理者就觉得我就应该是他们的一份子的呢?他们是如何看上我的呢?我不知道,我也从来没有问过他们为什么要这么做,反正这种事屡屡发生了。我不知道这种事在我现实工作中什么时候会发生,又或者说到底会不会发生,反正我是不会强求的,正如我从来没强求过自己要当论坛管理员一样。至今我仍然觉得自己适合当高级技术员而不是高级管理员。我喜欢独自解决我自己的问题,同时,我也挺喜欢帮别人解决他们的问题。多管闲事这种嗜好会让我在无意之中得到提升。在线性的工作中我们不可能遇到各种各样的问题,但正是因为我们八卦要帮别人的忙,所以我们才有机会在乱七八糟的其它领域大开我们的脑洞。提前打开脑洞这种事说不准什么时候会派上用场,到那个时候,别人会惊讶你为什么居然会知道,但我就是知道怎么破,这很平常好吗。

在专注解题的路上,不知不觉中我就储备出问题的成因及对策了。

2020-04
21

PK我自己

By xrspook @ 19:04:38 归类于: 扮IT

用了几分钟时间,写了个用字典法查找10万单词的词汇表回文词的脚本。字典法肯定要比列表二分法快,但到底快多少呢?实测大概10倍。相比之下,字典法语言实在简练太多。二分法的函数还得考虑递归和起点终点神马,字典法一个in杀到底。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# import time
# def in_bisect(library, first, last, myword): # 二分法搜索,10万数据查询最多只需不到20步
#     if first > last: # 这是一句拯救了我的条件
#         return -1
#     else:
#         mid = (first + last)//2
#         if myword == library[mid]:
#             return mid
#         elif library[mid] > myword:
#             return in_bisect(library, first, mid-1, myword)
#         else:
#             return in_bisect(library, mid+1, last, myword)
# j = 0
# count = 0
# library = []
# fin = open('words.txt')
# for line in fin:
#     word = line.strip()
#     library.append(word)
# library.sort()
# start = time.time()
# for i in range(len(library)-1): # 二分法搜索 
#     j = in_bisect(library, 0, len(library)-1, library[i][::-1])
#     if j > -1 and library[i] < library[j]:
#         print(library[i], library[j])
#         count += 1
# print(count)
# end = time.time()
# print(end - start)
# 397, 1.2810001373291016 # 二分法搜索
 
import time
def set_dict(fin): # 字典法搜索
    d = {}
    for line in fin:
        word = line.strip()
        d[word] = 0
    return d
count = 0
fin = open('words.txt')
start = time.time()
mydict = set_dict(fin)
for word in mydict:
    if word[::-1] in mydict and word < word[::-1]:
        print(word, word[::-1])
        count += 1
print(count)
end = time.time()
print(end - start)
# 397, 0.14300012588500977 # 字典法搜索
2020-04
21

字典真牛

By xrspook @ 12:03:27 归类于: 扮IT

字典用好了以后666得不知道该如何形容。创造字典,搜索词典,快得就像眨眼间。列表需要考虑的长度问题,字典里一个in就高效快捷了。

这是一道扯淡的习题,因为条件没固定,参考答案可以怎么参考呢?

Exercise 5: Two words are “rotate pairs” if you can rotate one of them and get the other (see rotate_word in Exercise 5). Write a program that reads a wordlist and finds all the rotate pairs. Solution: http://thinkpython2.com/code/rotate_pairs.py.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
def rotate_word(something, n): # a-z: 97-122, A-Z: 65-90
    newletter1 = ''
    for letter in something:
        if ord(letter) < ord('A') or ord('Z') < ord(letter) < ord('a') or ord('z') < ord(letter):
            newletter2 = newletter1 + letter
        else:
            if ord(letter) + n > ord('z'):
                newletter2 = newletter1 + chr(ord(letter) + n - 26)
            elif ord('a') > ord(letter) + n > ord('Z'):
                newletter2 = newletter1 + chr(ord(letter) + n - 26)
            else:
                newletter2 = newletter1 + chr(ord(letter) + n)
        newletter1 = newletter2
    return newletter2
def set_dict(fin):
    d = {}
    for line in fin:
        word = line.strip().lower()
        d[word] = 0
    return d
fin = open('words.txt')
count = 0
d = set_dict(fin)
for word in d:    
    for i in range(1, 14): # 8.13.5的习题没有说要移多少位,参考答案直接定义为1-14位,你猜我在想什么
        if rotate_word(word, i) in d:
            print(word, i, rotate_word(word, i))
            count += 1
print(count)
# ......
# zax 1 aby
# zax 4 deb
# zebu 7 glib
# zebu 10 jole
# zee 1 aff
# zee 9 inn
# zips 12 lube
# zoa 6 fug
# zoa 12 lam
# 1137
2020-04
20

更爽

By xrspook @ 12:00:26 归类于: 扮IT

战胜参考答案从昨晚开始貌似就成了我最大的快乐。互锁词的生成要比昨天的回文词复杂一些,因为这意味着搜索的次数更多了。虽然都是用二分法搜索的思路,但我就是要比参考答案快接近30倍肿么破。至于为什么会这样,我没有研究,或许我应该仔细研究一下。

10万条的单词表里:二词互锁1254条,我用时1.4秒,参考答案用时39.1秒;三词互锁991条,我用时1.5秒,参考答案用时43.4秒。一箩筐的成就感啊啊啊啊啊啊啊~~~

Exercise 12: Two words “interlock” if taking alternating letters from each forms a new word. For example, “shoe” and “cold” interlock to form “schooled”. Solution: http://thinkpython2.com/code/interlock.py. Credit: This exercise is inspired by an example at http://puzzlers.org. Write a program that finds all pairs of words that interlock. Hint: don’t enumerate all pairs! Can you find any words that are three-way interlocked; that is, every third letter forms a word, starting from the first, second or third?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import time
def in_bisect(library, first, last, myword): # 二分法搜索,10万数据查询最多只需不到20步
    if first > last: # 这是一句拯救了我的条件
        return -1
    else:
        mid = (first + last)//2
        if myword == library[mid]:
            return mid
        elif library[mid] > myword:
            return in_bisect(library, first, mid-1, myword)
        else:
            return in_bisect(library, mid+1, last, myword)
def interlock(library, i, num):
    m = 0
    n = num
    while m < num:
        if in_bisect(library, 0, len(library)-1, library[i][m::n]) == -1:
            return False
        else:
            m += 1
            n -+ 1
    return True
count = 0
library = []
fin = open('words.txt')
for line in fin:
    word = line.strip()
    library.append(word)
library.sort()
start = time.time()
# for i in range(len(library)-1): # 二词互锁
#     if interlock(library, i, 2):
#         print(library[i], library[i][::2], library[i][1::2])
#         count += 1
for i in range(len(library)-1): # 三词互锁
    if interlock(library, i, 3):
        print(library[i], library[i][::3], library[i][1::3], library[i][2::3])
        count += 1
print(count)
end = time.time()
print(end - start)
# 1254, 1.3558001518249512 # 二词互锁 xrspook解法
# 1254, 39.10080027580261  # 二词互锁 参考答案
# 991, 1.4504001140594482  # 三词互锁 xrspook解法
# 991, 43.366000175476074  # 三次互锁 参考答案
© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress