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

相关文章

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

golang float和科学计数法转字符串的实现方式

《golangfloat和科学计数法转字符串的实现方式》:本文主要介绍golangfloat和科学计数法转字符串的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望... 目录golang float和科学计数法转字符串需要对float转字符串做处理总结golang float

golang实现延迟队列(delay queue)的两种实现

《golang实现延迟队列(delayqueue)的两种实现》本文主要介绍了golang实现延迟队列(delayqueue)的两种实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录1 延迟队列:邮件提醒、订单自动取消2 实现2.1 simplChina编程e简单版:go自带的time

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

golang 对象池sync.Pool的实现

《golang对象池sync.Pool的实现》:本文主要介绍golang对象池sync.Pool的实现,用于缓存和复用临时对象,以减少内存分配和垃圾回收的压力,下面就来介绍一下,感兴趣的可以了解... 目录sync.Pool的用法原理sync.Pool 的使用示例sync.Pool 的使用场景注意sync.

golang中slice扩容的具体实现

《golang中slice扩容的具体实现》Go语言中的切片扩容机制是Go运行时的一个关键部分,它确保切片在动态增加元素时能够高效地管理内存,本文主要介绍了golang中slice扩容的具体实现,感兴趣... 目录1. 切片扩容的触发append 函数的实现2. runtime.growslice 函数gro