小编Guy*_*der的帖子

在 prolog 中断言和使用快速、大型数组

我正在使用函子在 SWI-Prolog 中使用 arg/3 来获取随机访问数组。我正在做的是将样本中的值加载到我创建的函子中,并断言该数组以供将来使用。

加载后,随机访问确实是 O(1),正如我使用 time/1 验证的那样。问题是从断言加载函子需要花费大量时间( time/1 表明它与数组的大小呈线性关系)。有什么办法可以将其加快到恒定时间吗?

最少的复制代码:

:- dynamic
    current_sample/1.

xrange(L,R,X):-
    L < R,
    ( X = L;
    X1 is L+1, xrange(X1,R,X)
    ).


arraybase_from_list__set_arg_from_list([], _, _).
arraybase_from_list__set_arg_from_list([Head|Tail], I, ResArray):-
    I1 is I+1,
    nb_setarg(I1, ResArray, Head),
    arraybase_from_list__set_arg_from_list(Tail, I1, ResArray).

arraybase_from_list(List, ResArray):-
    length(List, L),
    functor(ResArray, custom_array_data, L),
    arraybase_from_list__set_arg_from_list(List, 0, ResArray ).


test_array_create( N ):- % Creates a dummy array of squares of numbers fromo [0,N)
    findall( X2, (xrange( 0,N,X), X2 is X*X), XList ),
    arraybase_from_list( XList, Arr …
Run Code Online (Sandbox Code Playgroud)

arrays prolog swi-prolog prolog-directive-dynamic

2
推荐指数
1
解决办法
562
查看次数

反转 F# 中的列表

我想反转一个名为 revLists 的函数,它接受一个列表列表并反转所有子列表。

任何建议都会有所帮助。

这是我的想法:

let revLists[[]] = List.map (fun [[]] -> List.rev);;
revLists[[1;2;3],[4;5]];;
Run Code Online (Sandbox Code Playgroud)

f# list

2
推荐指数
1
解决办法
3288
查看次数

我可以通过各种方式声明一种在泛型类型上运行的类型?

我可以通过各种方式声明一种在泛型类型上运行的类型?

我看到了以下语法:

// There's a generic type called Aggregate that will be operated on by the Id type
type 'Aggregate Id = Created of 'Aggregate 
Run Code Online (Sandbox Code Playgroud)

上面的语法是另一种做出以下声明的方法吗?

// The Id type operates on a generic type called 'Aggregate
type Id<'Aggregate> = Created of 'Aggregate 
Run Code Online (Sandbox Code Playgroud)

我试图参考以下文档.但是,我没有看到替代技术的例子.

generics syntax f#

2
推荐指数
1
解决办法
50
查看次数

如何使用可变数量的参数实现方法?

如何使用可变数量的参数实现方法?

在C#中,我们可以使用params关键字:

public class MyClass
{
    public static void UseParams(params int[] list)
    {
        for (int i = 0; i < list.Length; i++)
        {
            Console.Write(list[i] + " ");
        }
        Console.WriteLine();
    }
 }
Run Code Online (Sandbox Code Playgroud)

那我怎么能在F#中做到这一点?

type MyClass() =

    member this.SomeMethod(params (args:string array)) = ()
Run Code Online (Sandbox Code Playgroud)

我从上面的代码收到以下错误:

The pattern discriminator 'params' is not defined
Run Code Online (Sandbox Code Playgroud)

f# paramarray

2
推荐指数
1
解决办法
204
查看次数

梳理生成器结果并将结果写入流

目前我可以生成表达式树.

expression_tree([_|N_s],N_s, [number(0)]).
expression_tree([_|N_s0],N_s1, [op(neg),[E1]]) :-
    expression_tree(N_s0,N_s1, E1).
expression_tree([_|N_s0],N_s2, [op(add), [E1, E2]]) :-
    expression_tree(N_s0,N_s1, E1),
    expression_tree(N_s1,N_s2, E2).

generate_expression(N_c, E) :-
    length(N, N_c),
    expression_tree(N,[], E).

?- generate_expression(N,E).
N = 1,
E = [number(0)] ;
N = 2,
E = [op(neg), [[number(0)]]] ;
N = 3,
E = [op(neg), [[op(neg), [[number(0)]]]]] ;
N = 3,
E = [op(add), [[number(0)], [number(0)]]] ;
N = 4,
E = [op(neg), [[op(neg), [[op(neg), [[number(0)]]]]]]] ;
N = 4,
E = [op(neg), [[op(add), [[number(0)], [number(0)]]]]] ;
N …
Run Code Online (Sandbox Code Playgroud)

prolog

2
推荐指数
1
解决办法
181
查看次数

在 SQL Server Management Studio 中保存文件失败

我是一名学生...我尝试将查询保存到文档中的文件中,但收到错误消息

c:\user\my_account\documents\script.sql 文件未找到
请检查文件名并重试。

其他问题:

  • 生成脚本失败
  • 无法从 word_db 获取对象列表
  • 结果错误

sql-server controlled-folder-access

2
推荐指数
1
解决办法
1981
查看次数

在 SWI-Prolog 中,是否有一种简单的方法可以使用 REPL 将数字从一个基数转换为另一个基数?

在使用 REPL 的 SWI-Prolog 中,可以轻松地从任何基数转换为基数 10,例如

?- X = 16'FF.
X = 255.

?- X = 2'11111111.
X = 255.
Run Code Online (Sandbox Code Playgroud)

然而这失败了。(没想到它会起作用,但显示了我的想法。)

?- 2'X = 16'FF.
ERROR: Syntax error: Operator expected
ERROR: 
ERROR: ** here **
ERROR: 2'X = 16'FF . 
Run Code Online (Sandbox Code Playgroud)

prolog swi-prolog

2
推荐指数
1
解决办法
533
查看次数

如何使用 GPT 3 进行文本分类?

我想知道我是否可以在文本分类问题中使用 OpenAI GPT-3 进行迁移学习?如果是这样,我如何使用 Tensorflow、Keras 开始它。

text-classification keras transfer-learning openai-api gpt-3

2
推荐指数
1
解决办法
4343
查看次数

如何使用 GPT-2 求出一个句子的概率?

我正在尝试编写一个程序,给定一个句子列表,返回最可能的一个。我想使用 GPT-2,但我对使用它还很陌生(因为我真的不知道该怎么做)。我计划在给定前面的单词的情况下查找单词的概率,并将所有概率相乘以获得该句子出现的总体概率,但是我不知道如何在给定前面的单词的情况下查找单词出现的概率。这是我的(伪)代码:

sentences = # my list of sentences

max_prob = 0
best_sentence = sentences[0]

for sentence in sentences:
    prob = 1 #probability of that sentence

    for idx, word in enumerate(sentence.split()[1:]):
        prob *= probability(word, " ".join(sentence[:idx])) # this is where I need help

    if prob > max_prob:
        max_prob = prob
        best_sentence = sentence

print(best_sentence)
Run Code Online (Sandbox Code Playgroud)

我可以帮忙吗?

python nlp probability gpt-2

2
推荐指数
1
解决办法
5090
查看次数

在C++中自动推断运算符?

在C++中,编译器/语言是否有可能自动推导出未实现的运算符?

例如,如果我有:

class X
{
public:
   bool operator ==(const X &x) const;
};
Run Code Online (Sandbox Code Playgroud)

是否有一种方法可以隐式推断出!=

我会将这些问题用于半相关的问题:地图的唯一要求是如何实现<运算符?它如何比较平等?

c++ operator-overloading

1
推荐指数
1
解决办法
395
查看次数