2011-10-04 64 views
0

我正在使用C#,但將來可能需要在其他語言中使用它。連接電線 - 算法

許多遊戲都有這樣的謎題。有一組電線(有兩種電線:直線和曲線),有一個信號來自的地方,信號必須離開的地方。但是電線的排列不允許發生這種情況。您必須轉動一些電線才能爲信號創建路徑。

是的,我試圖再次找到美洲大陸,以便在未來不再嘗試找到它。

在未來的某個地方,我也會嘗試同樣的事情,但這次使用的是將信號分成2或3個信號的導線。

問題是,我想不出一種算法,我可以想象如何將它變成一個代碼。我一直在想一些,我想不出什麼好的。

那麼,你能幫助我嗎?我將能夠將該算法理解爲「程序必須做什麼」,但我基本上需要幫助將算法理解爲「如何編寫代碼」。

謝謝!

+1

你究竟想要什麼?執行解決方案(並找出它是否正確)或算法來解決這個難題的算法?規則究竟是什麼?它是否類似於「連接管道」遊戲? – svick

+0

一兩張照片會有所幫助。一般來說,如果您知道'程序需要做什麼',您可以先將其轉化爲代碼,首先將其分解成不需要人類理解的操作,然後將這些操作轉換爲代碼。如果你必須在第二部分中思考,你就知道你沒有完全完成第一部分。 – AakashM

+0

爲了回答這個問題,你需要知道很多事情,唯一的答案是「參加編程課程」。投票結束,因爲它太模糊。 – Skizz

回答

1

看看一些maze generation algorithms - 他們做同樣的事情,你正在尋找,這就是你需要創建網格。從我鏈接的人中挑選一個簡單的「細胞雕刻師」;隨機旋轉所有的線材,等等!

在你的問題中留言指出,轉彎的算法轉換成代碼涉及到它分解的點點滴滴 - 所以這就是我們要做的:

你會與潛在線位置的格柵開始(可能2D,但是3D遊戲會非常棒)。爲了產生一個可解的水平,你可以做一些事情 - 產生一個水平,看看它是否可解(壞),或產生一個解決的水平,然後「解決」它(更好)。正如我上面提到的,生成一個解決的關卡涉及到與迷宮生成非常相似的算法 - 一個解決的關卡會有很多可以穿越的「路徑」,就像迷宮一樣。解決這個問題只會繞過所有的線段,並旋轉它們。

但是什麼是迷宮一代?我鏈接到的資源包含一些適合您使用的算法 - 簡單的隨機DFS應該足夠滿足您的需求。

你會注意到我覆蓋了涉及分支電線的一般情況,不包括分支意味着你必須做更多的編碼,智能地「修剪」分支 - 也就是說,當你的一條真正路徑回溯因爲可能需要進行隨機移動才能達到一個有趣的水平,所以會在一個角落裏說出來。

你還應該注意,如果我理解正確,那麼這種遊戲的解決方案需要使用所有給定的線(我知道這樣的一些遊戲)。否則,考慮到上述一代戰術,遊戲可能會更簡單。

+0

我需要一個如何編寫代碼的想法。當我發佈這個問題時,我已經做了一個算法,但是我不知道如何連接代碼中的線。但大約2個月前,我發現聯盟找到了解決我的問題的算法。好極了!儘管如此,你的算法值得記住,但它不能回答我的問題。謝謝! – AlexSavAlexandrov

+0

親愛的我 - 我完全誤解了。哦,不客氣。 – Filipq