标签: pattern-matching

编写一个显示左关联性等于右关联性的函数

我一直在尝试编写一个函数来显示左关联与右关联相同。对于这种情况,基本上意味着 (x, (y, z)) 与 ((x, y), z) 相同,反之亦然。我尝试过在逻辑中使用 let 和 但那不起作用。到目前为止我已经

lAssociation :: (a, (b, c)) -> ((a, b), c)
lAssociation (a, b) = ((a, fst b), snd b)
Run Code Online (Sandbox Code Playgroud)

但由于某种原因我收到解析错误。我不确定我错过了什么。我是 Haskell 的新手,想要了解,因此非常感谢任何帮助、建议或建议

haskell pattern-matching

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

Haskell非法模式匹配

我被告知这个函数声明是非法的:

f3 1(f2 x)y

我明白为什么这是非法的,我认为它与第二个参数(f2 x)有关.任何人都可以向我解释这个吗?

haskell pattern-matching

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

如何使用postgresql SIMILAR TO和变量

我有一个函数,使我需要使用SIMILAR TO带有变量的表达式的选择,我不知道如何做到这一点.这是代码:

DECLARE pckg_data cl_data;
DECLARE contacts contacts_reg%ROWTYPE;
DECLARE sim_name varchar;
 BEGIN
SELECT client_reg._name, 
       client_reg.last_name, 
       client_reg.id_card, 
       client_reg.address
INTO pckg_data
FROM client_reg WHERE(client_reg._name = (cl_name ||' '|| cl_lastname));
RETURN NEXT pckg_data;

SELECT ('%'||cl_name || ' ' || cl_lastname ||'%') INTO sim_name;

FOR contacts IN SELECT contacts_reg.id 
FROM contacts_reg, contactscli_asc, client_reg
WHERE(contacts_reg._name SIMILAR TO sim_name) LOOP
    SELECT client_reg._name, client_reg.last_name, client_reg.id_card,
                   client_reg.address, client_reg.id
    INTO pckg_data
    FROM client_reg, contactscli_asc WHERE(contactscli_asc.contact = contacts.id 
    AND client_reg.id = contactscli_asc.client);
END LOOP;

END;
Run Code Online (Sandbox Code Playgroud)

postgresql plpgsql pattern-matching

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

原始 Boyer-Moore 和 Boyer-Moore-Horspool 算法的区别

我无法理解 Horspool 在他的算法中所做的更改。如果您有 Boyer-Moore-Horspool 算法的任何链接,请告诉我。

algorithm pattern-matching boyer-moore

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

匹配矩阵中的模式

我的数据如下:

                         S  
0101001010000000000000000100111100000000000011101100010101010
1001010000000001100000000100000000000100000010101110101010010
1101010101010010000000000100000000100101010010110101010101011
0000000000000000001000000111000110000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)

S表示我正在谈论的列.它是col 26.所有四行在该位置共享1.

我需要能够计算从2到4的每一行:

  • 左侧和右侧的列数与第1行相同?

对于第2行,它将是右边的3(当它达到1/0时)和左边的8(当它达到0/1时).

应该将每行的结果输入到这样的矩阵中:

row2 8 3
row3 11 9
Run Code Online (Sandbox Code Playgroud)

是否有快速有效的方法来做到这一点?我正在处理的矩阵非常大.

r matrix pattern-matching

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

如何检查文件是否包含字符串?

我试图在 Google 上搜索文件和字符串之间的模式匹配功能,但我找不到它。我也尝试使用strings.Contains(),但它在大输入文件中给出了错误的结果。

Go中是否有用于在某个文件中搜索字符串的功能?

如果不是,是否有其他方法可以解决此问题?

这是我的代码:

package main

import (
    "bufio"
    "fmt"
    "io/ioutil"
    "os"
    "strings"
)

func main() {

    reader := bufio.NewReader(os.Stdin)
    fmt.Print("Enter text: ")
    text, _ := reader.ReadString('\n')

    // read the whole file at once

    b, err := ioutil.ReadFile("input.txt")
    if err != nil {
        panic(err)
    }

    s := string(b)
    length := len(s)

    //check whether s contains substring text
    fmt.Println(strings.Contains(s, text))

}
Run Code Online (Sandbox Code Playgroud)

pattern-matching go

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

模式绑定:为什么允许递归模式?

Prelude> let (Just x) = Just (x - 1) in x
*** Exception: <<loop>>
Run Code Online (Sandbox Code Playgroud)

为什么编译器接受那个 decl?它可以在语法上告诉它绑定到循环(?)

GHC 知道:

Prelude> :set -XBangPatterns
Prelude> let !(Just x) = Just (x - 1) in x
    Recursive bang-pattern or unboxed-tuple bindings aren't allowed:
Run Code Online (Sandbox Code Playgroud)

[ ExceptionGHCi 7.10.2 上的那个和编译器失败消息。在 GHC 8.10 没有有用的消息,只是循环。]

递归模式绑定是否有一些合理的用途?我认为对于模式绑定 decl,lhs 的自由变量应该与 rhs(?)

我所说的“模式绑定”是指根据 Haskell 语言报告 2010 的第 4.4.3.2 节,特别是从数据构造函数/最外层范围开始的 lhs。

(我希望有比 lhs 上的单个 var 更令人兴奋的东西。这仍然算作“模式绑定”,请参阅评论。)

当然对于函数decls,编译器必须允许递归,因为它无法从语法上判断函数是否会循环:

Prelude> let { f 0 = 0;
               f x = f (x - 1) } …
Run Code Online (Sandbox Code Playgroud)

haskell pattern-matching

-2
推荐指数
2
解决办法
128
查看次数

查找文件并移动文件夹

我在Debian Linux上有大量的文件文件,组织在一个大文件夹树中.我需要的是找到具有特定名称模式的所有文本文件,然后将包含文件夹移动到目标.

例:

/home/spenx/src/a12/a1a22.txt
/home/spenx/src/a12/a1a51.txt
/home/spenx/src/a12/a1b61.txt
/home/spenx/src/a12/a1x71.txt

/home/spenx/src/a167/a1a22.txt
/home/spenx/src/a167/a1a51.txt
/home/spenx/src/a167/a1b61.txt
/home/spenx/src/a167/a1x71.txt
Run Code Online (Sandbox Code Playgroud)

命令:

find /home/spenx/src -name "a1a2*txt"
mv /home/spenx/src/a12 /home/spenx/dst
mv /home/spenx/src/a167 /home/spenx/dst
Run Code Online (Sandbox Code Playgroud)

结果:

/home/spenx/dst/a12/a1a22.txt
/home/spenx/dst/a167/a1a22.txt
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

SK

linux shell find pattern-matching

-3
推荐指数
1
解决办法
5805
查看次数

特定角色的strsplit,证明该角色不应该被特定角色所遵循

我想在遇到"a"时拆分字符串,条件是"a"不应该跟"b"

string <- "abcgualoo87ahhabta"
Run Code Online (Sandbox Code Playgroud)

我应该得到输出

string <- [1]abcgua
[2]loo87a
[3]hhabta
Run Code Online (Sandbox Code Playgroud)

r pattern-matching strsplit

-3
推荐指数
1
解决办法
105
查看次数

正则表达式模式 [a-zA-Z] 没有给出正确的结果

在我的 Android 应用程序中,我需要验证用户输入的字符串只有 3 个字符长,并且只有字母表中的字符。满足 3 个字符长的条件并正常工作,但检查字符串是否在字母表中的条件不起作用。我附上了下面的代码。

public class MainActivity extends AppCompatActivity {

    EditText etGSTIN ;
    Button btVerify ;
    TextView tvStateName ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        etGSTIN = findViewById(R.id.etGSTIN);
        btVerify = findViewById(R.id.btVerify);
        tvStateName = findViewById(R.id.btStateName);


        btVerify.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String gstin = etGSTIN.getText().toString().trim();
                String regex = "...";

                String regex1 = "[a-zA-Z].";
                Log.d("Entered in Oclick","Entered in OnClick()");


                if(Pattern.matches(regex,gstin)){
                    Log.d("ENterd in First if","MEssage");

                 
                    if (Pattern.matches(regex1,gstin)) {
                        Log.d("Entered in Nested If","Entered in Nested IF"); …
Run Code Online (Sandbox Code Playgroud)

java regex android pattern-matching

-3
推荐指数
1
解决办法
74
查看次数

使傅立叶结果对旋转,缩放,平移不变

我想知道傅立叶矩阵中的哪些值对图像的大小,旋转,平移等的变化负责.

我编写了一个二维DFT函数,输出一个复数的dft矩阵.

如何删除图像缩放,平移和旋转的负责值,例如当我有2个图像时:

此搜索

Image2 = Image1旋转90度

一旦我们比较两个图像的DFT矩阵,我们发现它们是相等的.

这是我拥有的DFT功能的代码:

%----------------------------------------------------------------
function [Xk] = dft1(xn)
N=length(xn);
n = 0:1:N-1; % row vector for n
k = 0:1:N-1; % row vecor for k
WN = exp(-1j*2*pi/N); % Twiddle factor (w)
nk = n'*k; % creates a N by N matrix of nk values
WNnk = WN .^ nk; % DFT matrix
Xk = (WNnk*xn );
%----------------------------------------------------------------

%----------------------------------------------------------------
function out=dft2(x)

y=zeros(size(x));
y1=y;
C=size(x,2); %number of columns
for c=1:C
y(:,c)=dft1(x(:,c));
end
R=size(x,1); %number of …
Run Code Online (Sandbox Code Playgroud)

matlab image-processing pattern-matching fourier-descriptors

-5
推荐指数
1
解决办法
3120
查看次数