2014-10-30 62 views
-1

我想在紅寶石,做以下線性序列發生器

注創建程序: 該公式以線性序列制定出的整數是a[n]=a[1]+(n-1)d例如,序列中2;6;10;14;18;22;262=a[1]18=a[5]d=4這是常見的差異,所以按照這個順序的公式是a[n]=2+(n-1)4。要計算出a[10]a[10]=2+(10-1)4,因此a[10]=38。然後制定出什麼n是,如果a[n]給出,你需要那麼根據2;6;10;14;18;22;26如果26給出然後26=2+(n-1)4,然後重新組合成一個等式因此26-2+4=4nn=7示例順序公式重新組合成一個等式a[n]-a[1]+d=dn

方案

程序應該能夠產生具有共同差(d),例如一個序列。 4;10;16;22;28或允許我輸入一個具有d的序列> 3個整數,但我不輸入d(3是計算d所需的最小整數)。然後,我會輸入n,它將按照該序列計算出a[n],因此根據序列4; 10; 16; 22; 28 n=20因此a[20]=4+(20-1)6因此a[20]=118(注意,給出的序列只會是x位置,您需要輸入x例如。x=5 1;3;5;6;8x=3 1;3;5其中x>3 integers

然後該程序也應當是能制定出n如果我給它從該序列a[n]的整數,它用下式例如4;10;16;22;28;34;40發現n,我給40然後該公式將是40=4+(n-1)6,它需要找到n,但爲了做到這一點,它將需要重新排列公式到一個公式,以找到n因此它將是40-4+6=6n因此n=7(注意代表a[n]的數字不必在序列中顯示,但必須具有相同的偏移量價值和相同的普遍差異例如。我庫侖已經使用44代替40對於以上)

所以在最後的程序必須能夠:

  • 生成具有共同差異的隨機數序列
  • 生成,如果一個隨機數序列共用差分被輸入
  • 允許一些序列的輸入大於3

大於3點的整數利用上述它必須能夠:

  • 鍛鍊a[n]
  • 鍛鍊n

我怎麼會寫這個程序?

+3

這不是真正的SO的範圍。你爲什麼不穀歌一些方法,嘗試一些事情,並回來一個特定的錯誤,你遇到? – Bowdzone 2014-10-30 07:43:19

+0

似乎你需要設置範圍。 – Sylar 2014-10-30 07:44:37

+0

您能否展示一個示例(輸入和輸出)以及迄今爲止嘗試的內容? – Stefan 2014-10-30 08:14:19

回答

0

不是一個完整的答案,因爲這味道像家庭作業,但一個提示。您可以使用Range作爲序列。例如:

first = 48 
last = 72 
step = 4 

seq = (first..last).step(step).to_a 

seq[4] 
#=> 64 
+0

感謝您的幫助,順便說一下我想要一種學習數學的方式,同時通過編寫和解釋它來幫助我理解工作,從而提高編程水平更好,該方案將給我序列練習 – PuppetCode 2014-10-30 16:45:16