我在Prolog中有一个由边和权重表示的图表:
connected(a,b,2).
connected(b,e,1).
connected(b,l,5).
connected(b,g,2).
connected(c,s,2).
connected(d,a,2).
connected(d,k,4).
connected(d,l,7).
connected(e,m,2).
Run Code Online (Sandbox Code Playgroud)
我需要编写一个带有节点和距离列表的谓词.
?- dist([a,b,e],X).
X=3
Run Code Online (Sandbox Code Playgroud)
我试着写它,但它非常笨拙并且没有给出预期的结果.
我的基本想法是:如果它是2个元素的列表,那么看看它们是否已连接.如果列表中有多于2个元素:查看第一个元素和第二个元素是否已连接,则递归查看下一个元素是否已连接.我已经为头部和尾部定义了2个辅助谓词.
dist([A, B], X) :-
connected(A, B, X).
dist([A|B], Length) :-
connected(A, hd(B,H,N), X), % sees if A & next element in the list are connected
dist(tl(B,H,N), Length1), % recursive call with the list excluding element A
Length is X + Length1.
hd([H|T],H,Q).
tl([H|T],T,Q).
Run Code Online (Sandbox Code Playgroud)
我是Prolog的新手,我仍然想要理解语言语义.请建议一个有效的方法来解决这个问题.
我有一个 PostgresQL 表,它将 JSON 存储为 jsonb:
Column | Type | Modifiers | Storage | Stats target | Description
--------+---------+-----------------------------------------------------------+----------+--------------+-------------
id | integer | not null default nextval('history_id_seq'::regclass) | plain | |
data | jsonb | not null | extended | |
Run Code Online (Sandbox Code Playgroud)
JSON 的结构:
{
"20180201": {
"foo": [{
"name": "item1",
"desc": "an item 1"
}, {
"name": "item2",
"desc": "an item 2"
}],
"bar": [{
"name": "item1",
"desc": "an item 1"
}, {
"name": "item2",
"desc": "an item 2"
}] …Run Code Online (Sandbox Code Playgroud) 我有一个表单,我可以通过文本框输入文本.如何在点击提交时将这些数据输入数据库.
这是模板中表单的代码.
<form method="post" action="app/save_page">
<p>
Title:<input type="text" name="title"/>
</p>
<p>
Name:<input type="text" name="name"/>
</p>
<p>
Phone:<input type="text" name="phone"/>
</p>
<p>
Email:<input type="text" name="email"/>
</p>
<p>
<textarea name="description" rows=20 cols=60>
</textarea><br>
</p>
<input type="submit" value="Submit"/>
</form>
Run Code Online (Sandbox Code Playgroud)
我在views.py中有一个函数用于保存页面中的数据.但我不知道如何恰当地恭维它:
def save_page(request):
title = request.POST["title"]
name = request.POST["name"]
phone = request.POST["phone"]
email = request.POST["email"]
description = request.POST["description"]
Run Code Online (Sandbox Code Playgroud)
现在我如何将这些发送到数据库?
我将什么放在views.py中以便这些数据进入数据库?那么如何打开数据库连接并将其放入数据库并保存呢?
我应该这样做:
connection=sqlite3.connect('app.db')
cursor= connection.cursor()
.....
.....
connection.commit()
connection.close()
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在尝试使用AFNetworking下载文件时测量每个GET请求所花费的时间.我正在循环中重复下载文件.我遇到的问题是我测量总时间的方式,它给出了比实际更大的总时间.例如,对于50次下载,它提供72秒,但实际上它只花了大约5秒.我还怀疑5秒太低而不能下载50次(每个文件的下载大小为581 kb).
在这种情况下,如何有效地测量时间?我需要时间从请求被解雇到收到响应.
我下载文件的方法:
- (void) HTTPGetRequest
{
startTime = CACurrentMediaTime(); // Start measuring time
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:http://myServer];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"GET"
path:@"/download/Text581KB.txt"
parameters:nil];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[httpClient registerHTTPOperationClass:[AFHTTPRequestOperation class]];
// Save downloaded file
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:@"Text581KB.txt"]];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
double elapsedTime = (CACurrentMediaTime() - startTime); // Measuring time
totalTime += elapsedTime; // Measuring total …Run Code Online (Sandbox Code Playgroud) 我有基于样本项目设置此文章。
这是我的目录结构:
goloang/
??? fooproject
??? src
??? foo
? ??? foo.go
??? fooer
??? fooer.go
Run Code Online (Sandbox Code Playgroud)
我已经设置了 GOTPATH
$ echo $GOPATH
/Users/Bharat/Dev/golang/fooproject
Run Code Online (Sandbox Code Playgroud)
我正在尝试运行,foor.go但即使它存在于GOPATHie in引用的位置中,我也会收到找不到包错误src/foo。
这是我运行它的方式:
$ pwd
/Users/Bharat/Dev/goloang/fooproject/src/fooer
$ go run fooer.go
fooer.go:4:3: cannot find package "foo" in any of:
/usr/local/go/src/foo (from $GOROOT)
/Users/Bharat/Dev/golang/fooproject/src/foo (from $GOPATH)
Run Code Online (Sandbox Code Playgroud)
这些是文件内容。
src/foo/foo.go:
package foo
import (
"fmt"
)
func Bar() {
fmt.Println("bar")
}
Run Code Online (Sandbox Code Playgroud)
src/fooer/fooer.go:
package main
import (
"foo"
)
func main() {
foo.Bar() …Run Code Online (Sandbox Code Playgroud)