zoukankan      html  css  js  c++  java
  • python 算法练习

    根据给定的线性函数来确定函数的表达形式:

      examples:

      get_function([0,1,2,3,4]) => f(x)=x

      get_function([1,4,7,10,13]) => f(x)=3x+1

      get_function([0,3,6,9,12]) => f(x)=3x

    将数组的长度限制在5.

      话不多少,先上代码,之后做分析。

     1 def get_function(sequence):
     2     m = sequence[0]
     3     n = sequence[1] - m
     4     if [n*x+m for x in range(5)] != sequence:
     5         return "Non-liner sequence"
     6     return "f(x)={}".format(get_format(m,n))
     7 
     8 def get_format(m, n):
     9     if not n:
    10         return m
    11     n_string = "{}{}x".format("-" if n<0 else "", abs(n) if abs(n) !=1 else "")
    12     m_string = "{}{}".format("+" if m>0 else "-", abs(m) if m else "")
    13     return "".join([n_string,m_string])

      此段代码其实考察的是求线性函数的思想,只不过通过python代码表现。

      线性函数的系数Δ=(y2-y1)/(x2-x1),如果Δ>0,则说明系数符号为“+”,反之则为“-”,此为11行的含义,对于为何是n和m这两个数,应该很好理解。既然符号已经确定,那么对于系数而言只需要求出其绝对值即可,增函数或减函数已经通过系数符号确定了。

      既然系数已经确定,那下面需要解决的就是截距问题(根据几何意义本人理解的叫法),如果根据几何截距的概念是很好理解的,如果x=0时,y>=0,则说明截距的符号为"+",反之则为"-",同理既然符号确定了,那么数值只需求其绝对值即可。此为12行的含义。

      对于行4则是验证是否为线性函数的简单方式,通过get_format格式化最后的函数输出。

      与君共勉。。。。。。。。。。。。。。。。。。。。。。。。。奔跑的人生背包客!

  • 相关阅读:
    junit源码解析--测试驱动运行阶段
    junit源码解析--初始化阶段
    junit源码解析--核心类
    junit测试套件
    junit参数化测试
    junit忽略测试方法
    Junit4常用注解
    泛型技术
    在使用Java8并行流时的问题分析
    Linux 常用性能分析命令
  • 原文地址:https://www.cnblogs.com/kirago/p/5049561.html
Copyright © 2011-2022 走看看