我有一个字符串:
String str = "a + b - c * d / e < f > g >= h <= i == j";
Run Code Online (Sandbox Code Playgroud)
我想在所有运算符上拆分字符串,但在数组中包含运算符,因此生成的数组如下所示:
[a , +, b , -, c , *, d , /, e , <, f , >, g , >=, h , <=, i , ==, j]
Run Code Online (Sandbox Code Playgroud)
我现在有这个:
public static void main(String[] args) {
String str = "a + b - c * d / e < f > g >= h <= i == …Run Code Online (Sandbox Code Playgroud) 我正在尝试获取一组随机点(x,y),用于将图形节点绘制到屏幕上.我需要为传入的每个节点名称生成一个随机生成的点.
我在SO页面上找到了这个代码,并稍微修改它以适合我,但它并没有真正做我需要的.
我需要一个随机列表(尽可能随机)(Int,Int).
无论如何,这是我到目前为止所拥有的,当然,它每次都给出相同的值,所以它不是特别随机:)
rndPoints :: [String] -> [Point]
rndPoints [] = []
rndPoints xs = zip x y where
size = length xs
x = take size (tail (map fst $ scanl (\(r, gen) _ -> randomR (25::Int,1000::Int) gen) (random (mkStdGen 1)) $ repeat ()))
y = take size (tail (map fst $ scanl (\(r, gen) _ -> randomR (25::Int,775::Int) gen) (random (mkStdGen 1)) $ repeat ()))
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激.
我正在努力弄清楚如何在Haskell中读取(以及如何表示)图形.
来自文件的输入看起来像
NODES 3
EDGE 1 2
EDGE 1 3
EDGE 2 3
Run Code Online (Sandbox Code Playgroud)
我已经想出如何使用以下方法从文件中获取各行输入:
loadFile :: String -> IO [[String]]
loadFile filename = do
contents <- readFile filename
return $ map words $ lines contents
Run Code Online (Sandbox Code Playgroud)
这给出了如下输出:
loadFile "input.txt"
[["NODES","3"],["EDGE","1","2"],["EDGE","1","3"],["EDGE","2","3"]]
Run Code Online (Sandbox Code Playgroud)
我真正需要弄清楚的是如何将这个图形数据表示为图形.我正在考虑将其设置为边缘列表:
type Edge = (Int,Int)
type Graph = [Edge]
Run Code Online (Sandbox Code Playgroud)
但后来我不确定如何开始实现我需要的功能,如addNode,addEdge,getNodes,getEdges.
任何帮助或指向我正确的方向将是真棒!注意:我不能使用任何已经开发的图形模块.
所以,对于tl; dr版本: