python 算法練習

根據給定的線性函數來肯定函數的表達形式:python

  examples:數組

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

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

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

將數組的長度限制在5.orm

  話很少少,先上代碼,以後作分析。blog

 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代碼表現。get

  線性函數的係數Δ=(y2-y1)/(x2-x1),若是Δ>0,則說明係數符號爲「+」,反之則爲「-」,此爲11行的含義,對於爲什麼是n和m這兩個數,應該很好理解。既然符號已經肯定,那麼對於係數而言只須要求出其絕對值便可,增函數或減函數已經經過係數符號肯定了。string

  既然係數已經肯定,那下面須要解決的就是截距問題(根據幾何意義本人理解的叫法),若是根據幾何截距的概念是很好理解的,若是x=0時,y>=0,則說明截距的符號爲"+",反之則爲"-",同理既然符號肯定了,那麼數值只需求其絕對值便可。此爲12行的含義。io

  對於行4則是驗證是否爲線性函數的簡單方式,經過get_format格式化最後的函數輸出。

  與君共勉。。。。。。。。。。。。。。。。。。。。。。。。。奔跑的人生揹包客!

相關文章
相關標籤/搜索