2010-07-14 32 views
0

這就是問題所在:,我需要一個隨機字符串保持詞語的機智

功能名稱:randomSentenceRedux

參數:

1.string - 一個String對象來操縱

返回值:

經過轉換的字符串,其中原始語句的單詞格式爲隨機順序。

測試用例(S):

>>>print randomSentenceRedux("My name is Sally Sue") 
My is name Sue Sally 
>>>print randomSentenceRedux("hello") 
hello 
>>>print randomSentenceRedux("Don't scream at me!") 
Don't at scream me! 
>>> 

說明: 寫一個函數來隨機單詞的順序輸入字符串的字符串,並返回結果字符串。你可能會假設單詞被一個空格分開。您不能使用python的隨機模塊中找到的shuffle函數

+3

你有寫過的任何代碼嗎?只是發佈一個作業問題,並希望得到一個解決方案是不屑一顧。 – 2010-07-14 19:07:25

+1

如果你不能使用標準函數,使用Python有什麼意義? – 2010-07-14 23:41:33

回答

1

不知道Python語法如何適合,但使用Java,您會在空格分隔符上標記字符串,然後使用小於該長度的隨機索引令牌數組,並訪問該令牌數組的元素,將其彈出,打印並重復,直到令牌數組爲空。

1

這是一個非常簡單的算法:

  • 拆分句子在每一個空間(不知道的Jython但兩者Java和Python有內置的功能爲)
  • 洗牌陣列
  • 加入生成的字符串數組
  • 打印新字符串

對於這部分,你到底需要幫助嗎?

UPDATE

算法洗牌

  • 創建一個新的(空)陣列
  • 雖然在老數組項
  • 在0與數之間的隨機數舊數組中的項目-1
  • 從舊數組中刪除項目並將其推送到新數組的末尾
  • 重複直到有舊陣列沒有更多的項目

有更先進,definatly更高效的洗牌算法,但這種簡單的算法應該讓你開始。

+0

我認爲他正在尋找明確的替代算法來使用shuffle。 – Andy 2010-07-14 19:20:08

+0

對不起,我需要幫助的部分是隨機部分。我不允許使用shuffle函數,除此之外,我不知道要使用什麼。 – carson 2010-07-14 19:20:53

+0

@carson:試試Google搜索「洗牌算法」左右。 – Daenyth 2010-07-15 00:02:29

1

關於洗牌 - 一個想法來投奔項目(for i in range(len(lst)))的列表,並在i位置的每個元素,用隨機元素交換它(randrange(len(lst))位置說)

關於交換兩個變量,記得在Python你可以做a,b = b,a,那可行 - 而不是temp=a; a=b; b=temp你必須在其他語言中做。

關於分詞,就像strVar.split()一樣簡單,重新組裝就像' '.join(lst)一樣簡單。

我不包括確切的代碼,因爲這是一個作業你需要做的工作......但考慮到上面應該很容易,不是嗎?

2

您應該查看維基百科有關Fisher-Yates shuffle的文章。它高效而簡單。這裏是他們給出的僞代碼:

To shuffle an array a of n elements: 
for i from n - 1 downto 1 do 
    j ← random integer with 0 ≤ j ≤ i 
    exchange a[j] and a[i] 

它應該很容易轉換爲Python。

相關問題