2014-11-06 78 views
-3

我有一個文本文件,其中包含超過11000個選擇題和匹配問題。這些問題有不同的大小,除了有不同數量的給定選擇。下面是從文本文件花了五年給出選擇匹配問題的一個樣本:

Type: MT
1) Can you match each of these cities to their location? Drag the cities on the right to match them with the locations on the left.
~ Correct. You got all these matches correct.
@ Incorrect. You got some of these wrong.
a. North = Turin
b. Center = Rome
c. South = Naples
d. Sicily = Palermo
e. Sardinia = Cagliari

在將該文件處理成HTML生成引擎之前,我需要對所有這些問題進行洗牌,即將文件中的每個問題的位置隨機更改爲,因此最終產品將變得無法預測。每個問題編號(如類型:)中提到的是不重要的。

我在link找到了一個Word vba代碼,但它確實需要大量的專家更改以適應不同大小的問題。

隨機選擇多個選項的文本問題

對此問題的專家協助深表讚賞。提前致謝。

+1

讀起來有點像「請爲我寫這篇文章」,嘗試修改代碼,然後在遇到特定問題時將代碼發回* – 2014-11-06 17:06:31

回答

1

首先,我同意上面評論中的Tim Williams,這不完全是StackOverflow發佈期望的特定級別。

這就是說,如果我是你,我會把這個問題分解成兩個部分。

  • 首先判斷是否有可用於識別構成「問題」的塊的文本字符串。例如,如果每個問題都以「Type:」開頭,那麼您可以在文件中找到第一個實例,然後找到第二個實例,並且它們之間的所有內容都構成一個「問題」。然後,你可以把這個問題放在一個數組中。

  • 第二 - 隨機化數組。有很多方法可以做到這一點。有人可能會使用0和兩次問題數組長度之間的randrand函數,併爲每個隨機數切換問題。然後,重複相對於數組中項目總數的次數(例如,如果有100個問題,則執行125次「切換」以充分隨機化輸出,然後將數組打印回原始文件。

對於上面的方法,你需要一些分隔符的文件(我以爲分隔符是「類型」)。突破的問題。如果這樣的分隔符不存在,則可能需要一些更復雜的邏輯

+0

非常感謝您的Kusha答案使我向前邁進了一步解決方案。我也很感謝蒂姆的評論,但我並不是故意寫給我的,而是一個需要思考的問題。一旦我找到正確的代碼,我會將它發佈給所有人。 – 2014-11-06 18:17:17

+0

沒問題。還有一件事要考慮 - 如果你決定選擇一個類似「Type:」的分隔符,請確保它足夠具體,它不會出現在你的問題的文本中。如果發生這種情況,您最終可能會將一個問題分解爲數組中的兩個條目,這會使輸出非常混亂。出於代碼審查的目的,保存非隨機數組的輸出(在步驟1之後但在上面的步驟2之前)可能是明智的,以便您可以確保問題的解析按照設計工作。 – 2014-11-06 18:20:39