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  # 三次互锁 参考答案
2020-04
20

你的自由

By xrspook @ 9:28:53 归类于: 烂日记

昨晚睡觉的时候越睡越热,究其原因,首先是因为空气湿度越来越大,几乎没有风,早上起来的,天灰蒙蒙的一片,云层非常厚,要下雨却下不出来的样子。我不知道现在的人是怎么想的。现在的这种温度,开个风扇也就可以了,但是,就我家附近的人却选择了开空调,所以,当我早上起来的时候,到处都是空调的轰鸣声。之所以说的是到处,因为开空调的不止是一户人家。换作是我,不吝啬电费,上班的时候,我会在办公室开空调吗?虽然其实开个风扇就可以了。我在办公室部署了起码两个小风扇。宿舍的风扇,我一整年都不会收起来。曾经试过收起来一段时间,但是没过两天还是拿出来了,不是因为冬天的时候我真的觉得热,是因为湿度太大,我要加速空气流通。开风扇还是开空调这个问题让我想起了外国的某些人,宁愿死去也要复工的人。虽然没到非开空调不可,但开空调的人非常有可能只是没有把风扇拿出来,所以直接开空调了。可能并不是因为他们的空调准备好了,风扇没有,之所以选择开空调。又或者那是一些非常懒惰的人。从去年不用开空调到今年,昨天晚上开空调,期间都没有清洗过空调。这样做的人大把。他们不知道怎么把空调的滤网拆出来洗,因为他们没有自己亲手做过,也没有见家人这么干过。如果他家真的是非常有钱的话,至少他们会请个工人回去做这种事。但实际上情况如何,我不知道。反正在我家空调滤网这种东西,一年得起码洗两次以上。我家的风扇,用完以后会清洗完再封装起来的,所以下次再用的时候,不过是拿出来而已。

那些觉得自己宁愿得新冠也不愿意继续隔离、要去复工的人,想只想着他自己的利益。他一个人死不要紧,但是这样强大传染性的新冠病毒,必然导致身边的人很多人都会受感染,并最终不治,死的不是一个,而是一片。你自己的命,你有权选择,但别人的命,你没资格主宰。看到电视上某些采访视频,他们说再不复工,他们就没钱过日子,连吃都成问题了。在美国不要紧,即便你没有钱,但你还能活下去,虽然领取救济或者或让你觉得丢脸,毕竟救济还是有的,但是在印度那种地方就很不一样。没有工作、没有收入来源,就意味着没有吃的,没有钱去交生活中最基础的费用。对中国人来说,停工肯定会影响我们的生活,但只要不是被堵在了外头,只要我们在家里,我们不愁没得吃、没得用,虽然会相对紧缺,但绝不到饿死的地步。时间再长一点,对我们的影响会大一点。很多人没有了收入来源,往后的日子要打个问号。对我们来说,封城的恶果没有到要生要死的地方不。没工作我们也很惨,当然可能那些影响,会在往后的日子里慢慢浮现出来。留得青山在,哪怕没柴烧。

还记得值班的时候,我问那些老家在河南农村的同事,他们封城的日子怎么过。他们在农村完全出不去,但实际上根本不愁吃,他们家里屯了一大堆东西,或许你不喜欢吃,但绝对饿不死你。

自由永远是相对的,而你的自由必定意味着必然会影响到别人。

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress