- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想详尽地测试一个字符串匹配算法,命名为myAlgo(Char[] a, Char[] b)
详尽的测试包括否。不同的 char 字母,alplhabet“l”,在“n”长数组中。然后测试计算所有组合,同时将其与具有相似属性(如真值表)的另一个数组的所有组合进行比较,例如
我既无法计算生成大小为 n 的数组和字母 l 的每个组合的东西,也无法编写能够将计算组合到迭代测试用例中的代码(测试所有组合比较的两个数组),尽管使用能够生成组合的代码,制作嵌套的 for 循环应该进行所需的测试。
我的目标是通过让它计算它不应该计算的东西来打破我的算法。
Test(char[] l, int n)
l = [a;b] //a case could be
n = 2 //a case could be
myAlgo([a;a],[a;a]); //loops over my algorithm in the following way
myAlgo([a;b],[a;a]);
myAlgo([b;a],[a;a]);
myAlgo([b;b],[a;a]);
myAlgo([a;a],[a;b]);
myAlgo([a;b],[a;b]);
myAlgo([b;a],[a;b]);
myAlgo([b;b],[a;b]);
myAlgo([a;a],[b;a]);
myAlgo([a;b],[b;a]);
...
myAlgo([b;b],[b;b]);
我自己的解决方案(仅适用于有限的“l”集)并且还在以后的迭代中开始打印奇怪的输出。
公开课测试{
//aux function to format chars
public static String concatChar(char [] c){
String s = "";
for(char cc : c){
s += cc;
}
return s;
}
public static void main(String[] args) {
String ss1 = "AA"; //TestCases, n = 2
String ss2 = "AA";
char[] test1 = ss1.toCharArray();
char[] test2 = ss2.toCharArray();
Fordi fordi = new Fordi(); //my algorithm
TestGenerator tGen = new TestGenerator(); //my testGenerator
for(int i=0; i<Math.pow(4.0, 2.0);i++){ //to test all different cases
for(int j=0; j<Math.pow(4.0, 2.0);j++){
int k = fordi.calculate(test1, test2); //my algorithm
String mys1 = concatChar(test1); //to print result
String mys2 = concatChar(test2); //to print result
System.out.println(mys1 + " - " + mys2);
System.out.println(k);
test2 = tGen.countArray(test2); //"flip" one number
}
test2 = ss1.toCharArray();
test1 = tGen.countArray(test1); //"flip"
}
}
我的 arrayflipper 代码:
public char[] countArray(char[] a){
int i=0;
while(i<a.length){
switch (a[i]){
case 'A':
a[i]='B';
clearBottom(a,i);
return a;
case 'B':
a[i]='C';
clearBottom(a,i);
return a;
case 'C':
a[i]='D';
clearBottom(a,i);
return a;
case 'D':
i++;
break;
default:
System.out.println("Something went terribly wrong!");
}
}
return a;
}
public char[] clearBottom(char [] a, int i){
while(i >0){
i--;
a[i] = 'A';
}
return a;
}
最佳答案
据我了解,您的目标是创建所有由 L 字母表中的字母组成的 n 字符长字符串(作为数组中的元素单独存储)?
实现此目的的一种方法是对字母进行排序(A=0、B=1、C=2 等)。然后,您可以从 AAA...AAA(n 个字符长)的起始字符串继续加 1。本质上,您实现了一个加法算法。加 1 会将 A=0 变成 B=1。例如,n=3 和 L=3:
开始:AAA (0,0,0)。
加1变成AAB(0,0,1)
再次加1变成AAC(0,0,2)
再次加 1(因为我们没有字母,现在我们进位)ABA (0, 1, 0)。
您可以将此过程归结为寻找最右边未达到最大值的数字并将其加 1(然后该数字右侧的所有数字都归零)。所以在字符串 ABCCC 中,B 数字是最右边的未用完的数字,它上升 1 变成 C,然后右边的所有用完的数字都回到 0(A),留下 ACAAA 作为下一个字符串。
您的算法只是重复加 1,直到字符串中的所有元素都达到最大值。
关于Java:测试算法:所有可能的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26932605/
降本手段一招鲜,增效方法吃遍天; 01 互联网行业里; 降本策略千奇百怪,手段却出奇一致;增效方法五花八门,手段更是花里胡哨; 对于企业来说;
有什么方法可以使用 angularjs 中的部分进行代码分组吗? 原因 --- 我的 Controller 包含太多代码。该 Controller 包含了多个方法和大量功能的代码,降低了代码的可读性。
不幸的是,我的数据库的数据模型必须改变,所以我正在寻找最轻松的方式来迁移我的数据。 此时情况如何: create table cargo{ id serial primary key, per
在 QTextEdit 对象中,假设我想知道字符在鼠标光标下的位置。 我会写... void MyQTextEditObject::mousePressEvent(QMouseEvent* mouse
是否可以在 C++ 中返回一个 return 语句或做一些具有类似功能的事情? 例如,如果代码中有几个函数将指针作为输入,并且每个函数都检查指针是否为 nullptr,这将很方便。如果它是一个 nul
我的 PC 上有一个控制台应用程序,它是 signalR 服务器。 我有一个 html 页面,它是互联网上的 signalR 客户端。但我尝试连接服务器,但我有一个错误的请求 400 错误。如果服务器
我想将应用程序作为后台进程运行。当点击应用程序图标时,它不会显示任何 View ,只会启动后台进程。 最佳答案 对于 iOS 这是不可能的,但是对于 android,react native 有 he
我知道有(昂贵的)框架可以让你在 VS C# 中编写 android 应用程序并将其编译为 android apk。 我也知道,可以在 VS 中编写 Java 应用程序(link)。 是否有可能,甚至
我在做: can :manage, :all if user.role == 'admin' can :approve, Anuncio do |anuncio| anuncio.try(:apr
我是一名优秀的程序员,十分优秀!