2013-06-27 59 views
-4

我想用設計模式方法創建兩個算法。主要是尋找設計方法而不是算法。機器人應清潔並返回ibtial位置。 1機器人無塵室2)回到原來的路徑 我有潔淨室的算法,但尋找設計模式的方法, 清理房間後,你需要儘可能快地返回到左上角。到最後,則需要打印用於清潔房間的路徑以及機器人使用的移動總量。 它將提供一個硬件接口,它將提供moveleft(),moveright(),walk()和noofcells_travelled等,但該接口不應該在我們的解決方案中實現(我們的算法應該可以與此硬件接口兼容) 如何到 執行清理算法和返回算法設計方法。哪種設計或圖案很好?機器人無塵室並返回c#[尋找設計方案]

+1

完成任何可以添加到問題的研究? – 2013-06-27 04:08:45

+0

我希望我的妻子接受我使用這種算法...(閱讀:我可以看到許多情況下,雖然整個房間還沒有被清理過,但算法結束) – RandomSeed

+0

請正確拼寫並拼寫。或者至少始終如一。 – ESRogs

回答

2

如果您需要設計答案(而不是算法答案)。

定義三個接口:兩個用於算法,一個用於機器人。使用您的僞代碼實現算法接口以進行清理算法,並使用Karl的CPM答案作爲返回算法。

爲算法實施例的接口:

public interface ICleaningAlgorithm { 
    void Clean(IRobot robot); 
} 

public interface IReturnAlgorithm { 
    void Return(IRobot robot); 
} 

實施例類(不實施):

public class CleaningAlgorithm : ICleaningAlgorithm { 
    public void Clean(IRobot robot) { 
     /* pseudocode from the post */ 
    } 
} 

public class ReturnAlgorithm { 
    public void Return(IRobot robot) { 
     /* some shortest path algorithm */ 
    } 
} 

這假定室和機器人狀態只能通過機器人接口訪問。 如果您必須分別在房間內存儲房間狀態(訪問位置)和機器人位置,則您的算法將接受某種單獨的RoomState

+0

是的,我正在尋找設計模式 – emy

+0

我們已經有了這個機器人的硬件接口,我們正在爲此編寫清潔軟件。但是我們不能實現這個接口 – emy

+0

您能否詳細說明一下?我需要清理並重新回到初始位置(左上角位置),需要兩個清潔區域和一個清理區域,另一個區域用於清理。你能夠吸食嗎? – emy