Go语言学习之"夏至之谜与七夕"

今天给大家瞎扯的就是我的解题过程,直接得到的答案通常是枯燥无味的,只有亲自去解题才能体会到中间的乐趣。

注:“夏至之谜”指的是一道题目,来自今年夏至当天的阿里云公众号。

“夏至之谜”部分截图

Go语言学习之
Go语言学习之
Go语言学习之
(图1,图片源于阿里云公众号)


“关键词”的格式化字符串和数字编码

Go语言学习之
(图2,图片源于阿里云公众号)


通过图1,我们能知道,谜底是由4个关键词(A、B、C、D)构成,每个关键词由格式化字符串和数字编码组成,其中第4个关键词的数字编码只有一个范围:

A:”%se%s%s%s%se”(格式化字符串)、5025370(数字编码)①

B:”%s%s”(格式化字符串)、22763(数字编码)

C:”%s%s%s%s”(格式化字符串)、13540483(数字编码)

D:”%s%si%s%snc%sn”(格式化字符串)、X(31945955~31945975,数字编码)

由以上线索可知:

A:数字编码5025370=5个字符,?e????e(关键词)

B:数字编码22763=2个字符,??(关键词)

C:数字编码13540483=4个字符,????(关键词)

D:数字编码X=5个字符,??i??nc?n(关键词)

注解:在GO语言中常用“fmt”包来进行格式化,“%s”为格式指令,用于字符串。例如:fmt.Printf("%s", string)

函数

Go语言学习之
(图3,图片源于阿里云公众号)


图3 中的函数可用可不用,除此之外没有其它更多有用信息,所以这里只是简单介绍下GO语言中函数的组成:

func functionName(optionalParameters) optionalReturnType {

body

}

func functionName(optionalParameters) (optionalReturnValues) {

body

}

func:关键字,functionName:函数名,optionalParameters:可选的参数,optionalReturnType:可选的返回类型,optionalReturnValues:可选的返回值

注意:函数使用func开头,左大括号不能另起一行。

参考信息

Go语言学习之
(图4,图片源于阿里云公众号)


图4 的信息量太大了:

关键词的数字编码进行分解后,利用字符串格式化操作可得到关键词

素数103,关系表内的value都是素数(最开始没注意到)

关键词的数字编码分解需要用到关系表,且通过图1已知每个数字编码分解后的字符个数

可能需要升序排序

素数?加密?

Go语言学习之
(图5,内容源于Google)


通过一些搜素,我了解一下跟加密相关的知识点,缓慢的学习过程中,不断展开的知识点和各种跳转链接,让我目不暇接。

在主动学习中得到的进步是让人快乐的,但是……“我要干什么来着?”

我发现自己掉坑里了……这TMD就是个递归算法。

让我一个人待一会儿,我想静静……

Go语言学习之

掉坑里

Go语言学习之
(图6,内容源于互联网)


曾哥说过成功三大要素:“第一,坚持;第二,不要脸;第三,坚持不要脸。”

精辟!我非常认同他的第一观点……

在通过重新查阅题目和查找资料的过程中,我找到了突破口。

Go语言学习之


素数相乘

Go语言学习之
(图7,内容源于Google)


虽然这个搜索依旧没给我答案,但是脑洞大开的我有了个想法,于是……

(同时回想到了之前的那个关系表,似乎有些特殊之处……)

Go语言学习之

于是我这样:

Go语言学习之

然后这样:

Go语言学习之

最后这样:

Go语言学习之

注解:

存在于第一行,用于指定包名

导入依赖包,上图导入的依赖包是“fmt”,前文对“fmt”有简单介绍

声明并初始化变量,变量声明的格式为:var name type

Go语言的保留函数,不接受任何参数,也不返回任何结果,不需要显示调用,可自动执行。可简单理解为程序运行时第一个执行的函数(实际上不是)

“for”循环,这里取列表“codes”内的每个元素,“index”赋予“_”(直接被丢弃),item赋予“code”

另一种初始化变量的方式,在编译时会根据value自动推导其类型

内置函数“append”在这的作用是将变量“key”追加到“list”中

“\n”:换行,“\t”:制表符,“%d”:十进制表示

……贝贝友情走错片场……

Go语言学习之

正解

Go语言学习之

现在,前3个关键词已经被求出:

welcome to join

第4个关键词虽然相比前3个会稍有麻烦,但相差不大,有兴趣的可以自己尝试。

注意:

为了方便阅读,这里不是最优写法,处女座请出门左转,谢谢

排序用的是标准库里的“sort”包……

懒癌犯了……

不写了……

再凑一行……

搞定……


本文作者:许鑫鑫(点融黑帮),目前就职于点融网DevOps部门,负责运维+开发,爱好电脑和足球。

你可能感兴趣的:(Go语言学习之"夏至之谜与七夕")