RMPW Week 1

Read 《新参者》仿佛还是在沿用《白夜行》的写作方式,表面上一直游离在剧情主线之外,一直在叙述一些仿佛和凶杀案无关的事情,实际上环环相扣,直到最后,才会把所有的事情全都串起来。整本书不算特别惊艳,如果《白夜行》可以是9.7分,那《新参者》可能也就8.0分,行凶者是谁也不觉得有多意外,可能是很晚才出场的缘故,一般最不可能是凶手的,结果是凶手,这种反差可能才会更为强烈,行凶的动机也略微俗套。书中觉得出彩的,反而是一些温暖人心的小事情,大多都是关乎亲情。不同的店铺,不同的家庭,不同表达爱的方式。印象中特别深刻的是,三井峰子对其多年未见、关系紧张的儿子弘毅表达的爱意,那是一个美丽的误会,但却深入人心。 动机这东西,只要本人不说,就没人知道。 男人解决不了婆媳间的矛盾,事情没那么简单。你能做的就是倾听各自的说辞。只要默默听就行,一定不要反驳,不然只会火上浇油。听完就做出理解的表情,说她有道理,说得对,然后告诉她会找机会把她的想法转达给另一方。当然,千万不要真去转达。总有一天,她还会责问你,事情办得怎样了。到时你就要忍,让她们把矛头指向你。你能做的只有这些。 这个嘛,果然是因为你。 三井女士搬到小传马町后,每天应该都过得很快乐。她完全沉浸在默默守望的愉悦中了。 我从和户纪子的事中明白了一个道理,那就是男人要想让女人幸福,就得像牛马一样工作。但峰子的行动又告诉我,仅仅那样也不行。我真是蠢极了。 我的确疼爱儿子,而且对这点很有自信。但疼爱和重视不一样。所谓重视,是考虑孩子的未来,不断为他做出最好的选择,我却没能那么做。我只是为自己有了一个可以倾注爱的对象而极其高兴。 当然,孩子总有一天会长大,不会永远那么可爱,有时还会闯祸。这种时候,父亲往往会选择逃避。工作一忙,他们更为自己找到一个体面的借口。我也一样。妻子跟我说起儿子时,我只嫌她啰唆,根本不想跟她一起解决问题。当妻子因此责怪我时,我总会说自己有工作。即便工作不忙,我也总把这句话当武器,将所有麻烦都推给妻子,甚至在听说儿子交了狐朋狗友时,我也并不在意。我乐观地认为,稍微活泼一点的男孩子总有一段时期会这样。实际上,我的乐观只是在自欺欺人。 Movies 去年五六月份就听说克里斯托弗·诺兰要拍一部关于原子弹的电影,当时并不知道奥本海默这个人,后来才去了解了一下。说到诺兰的实拍,不免会在各平台看到很多梗图,印象最深的是女王和天行者的表情图,真的要实拍吗?真的吗……这时想起来还是让人忍俊不禁。时间过得太快了,本来以为诺兰的新作还要很久才能看到,没想到电影那么快就上映了。我上次看诺兰的电影应该是《信条》,虽然很烧脑,但是看完还是觉得不错,我还是比较喜欢有点新意或真正用心去拍的电影。 有时候我也在想什么才是一部好电影?是票房好?是口碑好?还是看导演是谁?演员是谁?或者说我喜欢的就是? 《奥本海默》整部电影时长长达3个小时,在电影院里算是相当长了,剧情主要讲述了奥本海默这个项目经理在二战期间带领团队研制原子弹的过程,这就是”曼哈顿计划“,以及二战结束后所遭遇的不公正待遇。看完这部电影,我不禁想起《模仿游戏》、《萨利机长》,还有《钱学森》、《横空出世》,这些电影都与《奥本海默》有相似之处,可能是因为它们都涉及到有毒的青苹果、拍摄手法、个人遭遇以及有关原子弹的话题。 诺兰在这部电影中依旧使用了他擅长的时间线穿梭叙事手法,如果观影中稍不注意,就会觉得这电影被剪得稀碎,难以理清整部电影剧情的走向。加上彩色和黑白画面的交叉使用,就好像正派和反派的对立着,从不同视角叙说这一段历史,然后才汇集于故事的结局之中,让这种稀碎感更为严重,总的来说,电影还是很能发人深思的。 核武器的滥用会给人类的未来带来怎样严重的后果?电影中展现了很多奥本海默对后果的想象,无尽的爆炸,无休止的灭亡,哀乐响彻蓝色星球上空。 “现在我成了死神,世界的毁灭者。” 基里安·墨菲曾在蝙蝠侠三部曲中饰演稻草人,但我不记得他也出演过《盗梦空间》,这个演员的长相确实很有特点,尤其是他那如海洋一样深邃的眼睛。我听说他主演的《浴血黑帮》电视剧也很不错,打算找时间看一看。 电影中也讲了奥本海默的情史,不得不说,奥本海默,你可真的是玩得花。 在《奥本海默》中,只有在实验引爆时才出现蘑菇云,本来以为会看到小男孩和胖子的实拍,可惜并没有。 电影的音乐非常出色,特别是几段旋律,例如American Prometheus、Can You Hear The Music和Destroyer Of Worlds等,我自己也专门找了一下这些曲子。 另外,爱因斯坦在电影中出现了几次,这些画面我都非常喜欢,特别是最后和奥本海默在湖边的对话,一下子就升华了电影的主题。 “有一天,当他们对你的惩罚足够多时,他们会给你提供鲑鱼和土豆沙拉,发表演讲,给你一枚奖章。请记住,这不是为了你,而是为了他们”。 尽管原子弹在二战的胜利中发挥了重要作用,作为有良心的科学家,我们应该始终为全人类的未来着想。然而,现实往往是残酷的,鸟尽弓藏,到头来只不过是政治斗争中的牺牲品,棋盘上的一枚棋子。 Poetry Writing 其实,本来不打算整这第二个打卡活动了,也就是RMPW,本来ARTS已经够花时间的了。但是不整这个,一来对不上AR7这个网名,本来这个的意思就是这两个打卡活动的开头字母,外加每周一次的意思。 每次打算去做这个事情,总是害怕做不到怎么办?读书笔记要整理,电影要看,诗词要背,文章要写。仔细想一下,还是很花时间的,看什么书,什么电影,背哪些诗词,自己是很明白的,但是要写什么,倒是难住我了。一开始的设计思路是,把看的书,外加看的电影和背的诗词,联系起来,然后在跑步时,构思一下文章,甚至一篇小说,但是,总觉得太耗时间了,在跑步机上面我要看书的。然后就是,基于世界名画,构思一篇小说,或者看图写话,用文字准确描绘名画的场景,这样一来可以知道世界名画相关知识,增长知识面,二来我也比较感兴趣。但还是觉得不妥,总觉得要素过多,不便于坚持下去,一开始应该从简单的开始,先能坚持一段时间,再慢慢上强度,思来想去,就变成现在这样子,“每周一篇原创作品,畅所欲言,题材不限,体裁不限,如不是诗词,字数800字左右。”本来打算只是100字的,贵在坚持嘛,但是又太简单了,毕竟是以周为单位,不是以天为单位。 但具体要写些什么呢? 我自己本来就有写日记,心里话都在里面了(你信么?不信就对了),然后平时工作上面遇到的严重问题,检讨和反思过程也要写一下,加上健身日记,也写写心得体会,接下去要去完善的部分,还有平时的技术博文,感觉自己写东西的机会还是很多的,但大多都率性而为,没有任何约束就是了,通常都是简单检查一下,有没有错别字,有没有病句就够了,至于遣词造句,梳理文章整体脉络,结构,逻辑自洽,是没有什么深入的,别人看得懂就行。想到这些,我就觉得,还是对自己要求高一些,毕竟,我都快忘了写文学方面文章的感觉是什么样的了。不管悲春伤秋?矫揉造作?无病呻吟?还是堆砌辞藻?都有吧,也都忘得七七八八了。 写到这里,我好像明白为什么这个RMPW被我推迟了一个多月了,因为总是打算去做这些事情之后,才去完成这些环节的工作,比如要去看新的书籍、电影、诗词,完成之后,才可以开始不是?但是,其实不一定非要这样,还有其他的思路,就是先掏空自己,先把自己所做过的会的,先整理出来,看的书和电影,读书时代背了还记得的诗词,先把这些依次输出,一来相对简单,而且刚好可以借此机会重温,二来会促使自己要不断输入,不然就没有东西可写了。 在小学那时数学老师就告诉我们,写文章的技巧,就是不管三七二十一,想到什么写什么,不要去想写下的文字到底符不符合作文主旨,哪怕前言不搭后语,都可以,全都写出来之后,你就知道自己应该怎么办了。

2023-11-12 · 1 分钟 · 38 字

ARTS Week 3

Algorithm 本周的算法题为 128. 最长连续序列 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入:nums = [100,4,200,1,3,2] 输出:4 解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。 实现代码如下: var longestConsecutive = function (nums) { // 如果数组为空,则值为0,否则最小为1 let sequenceMaxValue = nums.length == 0 ? 0 : 1 let category = {} // 去重,使用对象key唯一性的特性实现数组去重。 nums.forEach(item => { if (category[item]) { category[item].push(item) } else { category[item] = [item] } }) let result = [] // 获取最终的去重后的数组 for (const key in category) { if (Object.hasOwnProperty.call(category, key)) { result.push(Number(key)) } } // 将数组排序,从小到大排序 result.sort((x, y) => { return x - y }) // 设置顺序起点为数组下标为0的位置 let latestStartIndex = 0 // 设置顺序起点值,下标为0的值 let latestStartValue = result[0] // 用来记录每个顺序,以起点为key,总共有多少次。 let sequenceCountObject = {} result.forEach((item, index) => { // 因为设置了latestStartValue = result[0],默认会走else逻辑,sequenceCountObject[0]会多一次。 if (index > 0) { // 实现的逻辑是,比如数组为[1,2,3,4,5,8,9,10],当后一个数,减去它的下标等于当前值latestStartValue(4-3=1),意味着还是处于顺序中,如果不是,比如到8了,那就开始新的顺序起点。 // 其中,因为第一个起点数,不是每次都是下标0开始的,所以不能只是item - latestStartIndex,而是item - (index - latestStartIndex)拿到差值。 if (item - (index - latestStartIndex) !== latestStartValue) { latestStartIndex = index latestStartValue = result[index] } else { // 如果当前值减去下标差值一直等于顺序起点值,意味着还处于顺序中,就加到对象这个以每个起点下标为key的值上,+1。 if (sequenceCountObject[latestStartIndex]) { sequenceCountObject[latestStartIndex] = sequenceCountObject[latestStartIndex] + 1 } else { //当对象中还没有存在这个起点下标的key时,默认从1开始,因为当latestStartIndex开始新的起点的时候,是走上面的if逻辑的,意味着这里要把起点的次数算上,所以是1+1,第一个1是起点,第二个1是记录次数 sequenceCountObject[latestStartIndex] = 1 + 1 } } } }) // 获取多个顺序长度的最大值,如果比当前值大,则赋值最新。 for (const key in sequenceCountObject) { if (Object.hasOwnProperty.call(sequenceCountObject, key)) { const value = sequenceCountObject[key] if (value > sequenceMaxValue) { sequenceMaxValue = value } } } return sequenceMaxValue 解题思路: ...

2023-11-08 · 2 分钟 · 247 字

关于RMPW

RMPW 是我基于陈皓提出的 ARTS 所设想的一个关于写作方面的训练活动,以周为单位。 Read:每周一本书,概括该书内容,摘抄好句,思考感悟。 微信读书-正版书籍小说免费阅读 (qq.com) Movies:每周一部电影,概括作品内容,摘抄好句,思考感悟。 LIBVIO-官网 Poetry:每周背一首诗词/诗歌。 古诗文网-古诗文经典传承 (gushiwen.cn)上面有译、注、赏、音、背功能,还是很方便的。 writing:每周一篇原创作品,畅所欲言,题材不限,体裁不限,如不是诗词,字数800字左右。

2023-11-08 · 1 分钟 · 13 字

ARTS Week 2

Algorithm 本周的算法题为 49. 字母异位词分组 - 力扣(LeetCode) 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [["bat"],["nat","tan"],["ate","eat","tea"]] 实现代码如下所示: let strs = ["eat", "tea", "tan", "ate", "nat", "bat"] var groupAnagrams = function (strs) { let sortedStrs = [] strs.forEach(str => { let sortedStr = str.split("").sort().join(""); sortedStrs.push(sortedStr) }) let categories = {} sortedStrs.forEach((str, index) => { if (categories[str]) { categories[str].push(strs[index]) } else { categories[str] = [strs[index]] } }) let result = [] for (const key in categories) { result.push(categories[key]) } return result } groupAnagrams(strs) 解题思路: 通过查看示例1的输出数组得知,相同字母但顺序可以不一样,所以我们可以考虑,将各元素重新排序,那么就可以知道哪些元素是相同的。首先,先遍历 strs 数组,使用 split("") 将字符串str分割为字符数组,然后使用 sort() 对字符数组进行排序,最后使用 join("") 将排序后的字符数组拼接为字符串。 sortedStrs 其值如下: [ 'aet', 'aet', 'ant', 'aet', 'ant', 'abt' ] 然后开始将 sortedStrs 中的元素进行分类,将相同元素归入同一个数组中,使用对象key的唯一性进行实现,遍历 sortedStrs ,将元素作为对象 categories 的key值,如果key没有存在,则生成新的key,并将元素自身添加至value数组中,如果已存在,则将元素添加至value数组中。在以下代码中,如果 sortedStrs 中有相同的元素,则加入到 categories[str] 数组中,但是因为 sortedStrs 是排序后的数据,虽然元素被排序了,但是下标 index 是不变的,所以就 push 原数组 strs 相同下标的元素。因为如下所示: ...

2023-10-29 · 1 分钟 · 209 字

ARTS Week 1

Algorithm 本周的算法题为 1. 两数之和 - 力扣(LeetCode) 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 实现代码如下所示: let nums = [2, 7, 11, 15], target = 9 var twoSum = function (nums, target) { let output = [] nums.forEach((item, i) => { nums.forEach((data, j) => { if (i !== j) { if (item + data === target) { output.push(i) output.push(j) } } }) }) output = Array.from(new Set(output)) return output }; twoSum(nums, target) 解题思路是,遍历两次 nums 数据,然后将 nums[i] 和 nums[j] 相加,如果其值等于 target ,则添加到 output 数组中,以示例1的数据举例,因为遍历两次,会出现 [0,1] 和 [1,0] 的情况,所以需要对数组去重,数组去重使用 Array.from(new Set(output)) 实现。至此,是可以实现示例1的需求了,但是如果是示例2时,就会出问题。 ...

2023-10-22 · 2 分钟 · 258 字