我在Haskell上制作Backtracking时遇到问题,我知道如何进行递归函数,但是当我尝试获得多个解决方案或最好的解决方案(回溯)时,我会遇到麻烦.
有一个包含一些字符串的列表,然后我需要获得从字符串到另一个字符串的解决方案,从字符串中更改一个字母,我将获得列表,第一个字符串和最后一个字符串.如果有解决方案返回它所执行的步骤计数,如果没有解决方案则返回-1.这是一个例子:
wordF ["spice","stick","smice","stock","slice","slick","stock"] "spice" "stock"
Run Code Online (Sandbox Code Playgroud)
然后我有我的清单,我需要从头开始,"spice"并且"stock"
最好的解决方案是["spice","slice","slick","stick","stock"]通过四个步骤来"spice"实现"stock".然后它回来了4.
另一种解决方案是["spice","smice","slice","slick","stick","stock"]通过五个步骤来达到"stock"它然后返回`5.但这是一个错误的解决方案,因为还有一个更好的步骤,而不是这个步骤.
我有麻烦做回溯以获得最佳解决方案,因为我不知道如何使我的代码搜索另一个解决方案,而不是一个...
这是我试图制作的代码,但我得到了一些错误,顺便说一句,我不知道我的"制作"回溯方式是否良好,或者是否有一些错误,我没有看到..
wordF :: [String] -> String -> String -> (String, String, Int)
wordF [] a b = (a, b, -1)
wordF list a b | (notElem a list || notElem b list) = (a, b, -1)
| otherwise = (a, b, (wordF2 list a b [a] 0 (length list)))
wordF2 :: [String] -> …Run Code Online (Sandbox Code Playgroud) 我在ionic3应用程序上遇到以下错误
未捕获错误:模块"AppModule"导入的意外值"AngularFireAuth".请添加@NgModule注释.
这是我的app.module.ts:
import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { ListPage } from '../pages/list/list';
import { LoginPage } from '../pages/login/login';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { HttpModule } from '@angular/http';
import { Geolocation } from '@ionic-native/geolocation';
import { AngularFireDatabaseModule, AngularFireDatabase } from
'angularfire2/database';
import …Run Code Online (Sandbox Code Playgroud) 我在这段代码上得到了这个错误!
esImpar :: Integer -> Bool
esImpar a = if (a mod 2) /= 0 then True
else False
Run Code Online (Sandbox Code Playgroud)
错误: 无法匹配预期类型(整数 - >整数 - >整数) - >(整数 - >整数) - >整数 - >整数'与实际类型整数
函数"a"应用于三个参数,
但它的类型Integer'没有
在(/ =)的第一个参数中,即(来自整数2的mod)
在表达式中:(a mod 2)/ = 0
我有这个代码的问题:
rango2 :: Int -> [Int] -> [[Int]] -> [Int]
rango2 a b list = if (verif (map(+list!!a!!2)(list!!a)) (map(-list!!a!!2)(list!!a)) (b)) then [1]
else [0]
verif :: [Int] -> [Int] -> [Int] -> Bool
verif a b c = if ((c!!0 < ((a!!0)+1)) && (((c!!0)+1) > b!!0) && (c!!1 < ((a!!1)+1)) && (((c!!1)+1) > b!!1)) then True
else False
Run Code Online (Sandbox Code Playgroud)
运行时,会产生以下错误:
Couldn't match type `Int' with `Int -> Int'
Expected type: [[Int -> Int]]
Actual type: [[Int]]
In the first argument of …Run Code Online (Sandbox Code Playgroud)