Golang-指定文本,求奇数行正数平方和

2024-09-05 12:08

本文主要是介绍Golang-指定文本,求奇数行正数平方和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在stack看到HENNGE公司的招聘信息,于是去参加了一次线上笔试。对方法发了三道题,此为第一道题——使用Golang处理文本。

下为要求:

仔细思考后,发现一个规律:

  1. 第1行指定总行数;
  2. 偶数行n指定下一行奇数行n+1行的个数;
  3. 全部数据喂完后出结果,意味着最后是扔进数组,放到最后遍历。

提示:

  1. 要求不能使用for;
  2. 只能使用基本库。

因为Golang的循环语句出来了for,只剩下goto和递归。因为用goto会下地狱,因此我用递归。因为没学过Golang,只看了几个小时的语句介绍,可能写的比较菜,见谅。

package mainimport ("fmt""io/ioutil""regexp""strconv""strings"
)var output []intfunc main() {var err1 errorvar testfile0 []string// That's the test file name// this demo get data from the test.txtfile, err1 := ioutil.ReadFile("./test.txt")if err1 != nil {fmt.Println(err1)}testfile0 = strings.Split(string(file), "\r\n")total, _ := strconv.Atoi(testfile0[0])count := 0m := 0list(m, testfile0, count, total)// fmt.Println(output)outPrint(0, output)
}func squareSum(n int, arr []string) int {// fmt.Println("传进来的参数,代表个数:", n)// fmt.Println("此时指定奇数行的值:", arr[n-1])num, _ := strconv.Atoi(arr[n-1])if n == 1 {num1, _ := strconv.Atoi(arr[0])// fmt.Println("最后一个的平方:", num1*num1)return num1 * num1}if num >= 0 {// fmt.Println("平方:", num*num)return num*num + squareSum(n-1, arr)}return squareSum(n-1, arr)}func outPrint(i int, output []int) {if i+1 > len(output) {return}// fmt.Println("i", i)// fmt.Println("output[i]", output[i])fmt.Println(output[i])i++outPrint(i, output)return
}func list(m int, testfile0 []string, count int, total int) {if m+1 >= len(testfile0) {// fmt.Println(count)if count == total {fmt.Println("success, the first line number equal the test line ")return}fmt.Println("error, the first line number not equal the test line")return}if (m+1)%2 == 0 {var sum int = 0// fmt.Println("m:", m)// fmt.Println("testfile0[m+1]:", testfile0[m+1])pretext := regexp.MustCompile(`\s`)text := pretext.ReplaceAllString(testfile0[m+1], `,`)// fmt.Println("得到的数组:", text)// fmt.Println("上一行,指定的数字个数:", testfile0[m])var arr []string = strings.Split(text, ",")num, _ := strconv.Atoi(testfile0[m])sum = squareSum(num, arr)count++// fmt.Println("total:", sum)output = append(output, sum)// fmt.Println(output)// outPrint(0, output)// return output}m++list(m, testfile0, count, total)// fmt.Println(output)return
}

 

 

 

 

 

 

这篇关于Golang-指定文本,求奇数行正数平方和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138914

相关文章

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virtual disk”问题

《VMWare报错“指定的文件不是虚拟磁盘“或“Thefilespecifiedisnotavirtualdisk”问题》文章描述了如何修复VMware虚拟机中出现的“指定的文件不是虚拟... 目录VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virt

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

Java操作xls替换文本或图片的功能实现

《Java操作xls替换文本或图片的功能实现》这篇文章主要给大家介绍了关于Java操作xls替换文本或图片功能实现的相关资料,文中通过示例代码讲解了文件上传、文件处理和Excel文件生成,需要的朋友可... 目录准备xls模板文件:template.xls准备需要替换的图片和数据功能实现包声明与导入类声明与

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

遮罩,在指定元素上进行遮罩

废话不多说,直接上代码: ps:依赖 jquer.js 1.首先,定义一个 Overlay.js  代码如下: /*遮罩 Overlay js 对象*/function Overlay(options){//{targetId:'',viewHtml:'',viewWidth:'',viewHeight:''}try{this.state=false;//遮罩状态 true 激活,f

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数