我一直在尝试编写一个函数来显示左关联与右关联相同。对于这种情况,基本上意味着 (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 的新手,想要了解,因此非常感谢任何帮助、建议或建议
我被告知这个函数声明是非法的:
f3 1(f2 x)y
我明白为什么这是非法的,我认为它与第二个参数(f2 x)有关.任何人都可以向我解释这个吗?
我有一个函数,使我需要使用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) 我无法理解 Horspool 在他的算法中所做的更改。如果您有 Boyer-Moore-Horspool 算法的任何链接,请告诉我。
我的数据如下:
S
0101001010000000000000000100111100000000000011101100010101010
1001010000000001100000000100000000000100000010101110101010010
1101010101010010000000000100000000100101010010110101010101011
0000000000000000001000000111000110000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)
S表示我正在谈论的列.它是col 26.所有四行在该位置共享1.
我需要能够计算从2到4的每一行:
对于第2行,它将是右边的3(当它达到1/0时)和左边的8(当它达到0/1时).
应该将每行的结果输入到这样的矩阵中:
row2 8 3
row3 11 9
Run Code Online (Sandbox Code Playgroud)
是否有快速有效的方法来做到这一点?我正在处理的矩阵非常大.
我试图在 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) 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)
[ Exception
GHCi 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) 我在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
我想在遇到"a"时拆分字符串,条件是"a"不应该跟"b"
string <- "abcgualoo87ahhabta"
Run Code Online (Sandbox Code Playgroud)
我应该得到输出
string <- [1]abcgua
[2]loo87a
[3]hhabta
Run Code Online (Sandbox Code Playgroud) 在我的 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) 我想知道傅立叶矩阵中的哪些值对图像的大小,旋转,平移等的变化负责.
我编写了一个二维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