我需要找到一個ALGO解決這樣的問題: 解決邏輯一個句子內像邏輯算法理解表達IF然後
IF @1 and @2 or @3 or @4 and @5 THEN *STUFF
請求爲:
0)忘掉「 THEN * STUFF」
1)AND,OR組合可以是任意數字,組合,任何一種串連的
2)還可以是一個簡單的像IF @ 1那麼東西。
3)OR具有優先權,這意味着@ 1和@ 2或3 @總是以任意類型的組合變成IF @ 1和(@ 2或@ 3)。我需要將這種語言轉換爲另一種語言,現在我有像convertSingle(@n),轉換OrGroup(List single),轉換AndGroup(List orGroup)的函數。
5)我完全控制了代碼的這一面,所以只要我可以轉換單個元素並與OR和AND的其餘部分「連接」,我就可以編寫一切。
現在我使用這個解決方案,並相信我的工作,但我覺得不好。這不是優雅,我覺得這是被迫的,我希望做出這個遞歸,但是依靠我自己,現在找不到解決方案。 這是我的算法中大氣壓:
從一般的句子開始,如:IF @ 1 @ 2 @ 3 @ 4 @ 5
它的倒塌,尋找或在正則表達式的方法,併成爲IF#1和#2
節省什麼意思#1,#2(它只是一個或組分組倒塌),因此
1#= @ 1 OR @ 2 OR @ 3
2#= @ 4 OR @ 5
- 然後尋找AND和最後崩潰後本成爲IF%1然後..
%1 =與門由分組組成要麼。
- 我需要一個「特殊情況解決方案」簡單一個一樣,如果然後@ 1,不能裝進一個先前溶液..
在最後我有一個工作(用於測試由現在)解決方案。但我不喜歡那樣。我真的不知道爲什麼,但是這個「步驟崩潰」的算法,我覺得這不太好。 但是對我來說,這是我能想到的最好的。
我想知道如果別人聰明的人,那麼我可以建議我一個更好的解決方案。
謝謝。
OR有優先嗎?你確定? – Mshnik
是的,我確定。我可以理解它在「數學方式」中很奇怪,這種自然語言是由詞彙組成的。如果你有與優先級的解決方案,告訴我,這不重要。 –
遞歸地劃分表達式是一個很好的方法。你將基本上構造一個語法樹。你會在葉子上有單個數字。所以也應該有一個由單個數字組成的表達式。 –