大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说scala:查询圆周率pi,希望您对编程的造诣更进一步.
pi.txt保存了圆周率,精确到小数点后100万位:
wget https://raw.githubusercontent.com/xuejianbest/SoftConfig/master/pi.txt
代码:
import scala.io.Source
object PiUtil {
private val filename = "bin/pi.txt"
private val bs = Source.fromFile(filename)
private val pi_str = bs.getLines.mkString
bs.close
def main(args: Array[String]): Unit = {
find("2345678") //查询数字串2345678在圆周率中位置
show(995998, 10) //从圆周率小数点后995998位开始,显示10位
}
/* * 查询给定数字串在圆周率中的位置,打印出其前后的数字 */
def find(find_str: String) {
var idx = pi_str.indexOf(find_str)
if(idx == -1){
println("在前100万位中未找到")
}
while (idx != -1) {
val loc = idx - 1
val dlt = 5 //显示要查找数字串前后多余位数
val bef = get(loc - dlt, dlt)
val mid = get(loc, find_str.length)
val aft = get(loc + find_str.length, dlt)
println(s"index: $loc\t|${Seq(bef, mid, aft).mkString("\t")}")
idx = pi_str.indexOf(find_str, idx + 1)
}
}
/* * 返回pi指定小数位数、指定长度的数字串 */
def get(bg: Int, len: Int) = {
require(len > 0, "len must > 0")
val res = pi_str.slice(bg + 1, bg + len + 1)
res
}
/* * 打印pi指定小数位数、指定长度的数字串 */
def show(bg: Int, len: Int) = {
val res = get(bg, len)
println(res)
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/37374.html