scala:查询圆周率pi

scala:查询圆周率pi文章浏览阅读1.4k次。pi.txt保存了圆周率,精确到小数点后100万位。importscala.io.SourceobjectPiUtil{privatevalfilename="bin/pi.txt&quot

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

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注