我写了一个java程序,基本上实现了wordle的功能。例如,给定2 3x3行
// Answer
AAA
BBB
CCC
// Guess
AYY
AAA
ZZZ
import java.util.Scanner;
// Currently test case 6 not working
public class test {
public static void main(String[] args) throws FileNotFoundException {
Scanner io = new Scanner(System.in);
int green = 0, yellow = 0;
char[][] answer = new char[3][3];
char[][] guess = new char[3][3];
{
String tempString = io.next();
for (int i = 0; i < 3; i++) {
answer[0][i] = tempString.charAt(i);
}
tempString = io.next();
for (int i = 0; i < 3; i++) {
answer[1][i] = tempString.charAt(i);
}
tempString = io.next();
for (int i = 0; i < 3; i++) {
answer[2][i] = tempString.charAt(i);
}
tempString = io.next();
for (int i = 0; i < 3; i++) {
guess[0][i] = tempString.charAt(i);
}
tempString = io.next();
for (int i = 0; i < 3; i++) {
guess[1][i] = tempString.charAt(i);
}
tempString = io.next();
for (int i = 0; i < 3; i++) {
guess[2][i] = tempString.charAt(i);
}
//System.out.println(Arrays.deepToString(answer));
//System.out.println(Arrays.deepToString(guess));
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (answer[i][j] == guess[i][j]) {
answer[i][j] = (char) -1;
guess[i][j] = (char) -1;
green++;
}
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (answer[i][j] != guess[i][j]) {
char needToFind = guess[i][j];
for (int k = 0; k < 3; k++) {
for (int l = 0; l < 3; l++) {
if (answer[k][l] == needToFind) {
yellow++;
guess[i][j] = (char) -1;
answer[k][l] = (char) -1;
break;
}
}
}
//System.out.println("-----2"); debug here don't mind me
//System.out.println(Arrays.deepToString(answer));
//System.out.println(Arrays.deepToString(guess));
//System.out.println(yellow);
}
}
}
System.out.println(green);
System.out.println(yellow);
}
}
/*
plan
Get input using 2d arrays
Create 2 matrix arrays: answer and guess
Get the values into the array
Use for loop that loops 9 times
If the value at answer is the same at same index in guess, green++
Use another for loop 9 times, if the indexes are NOT the same (and is not -1), then find if another of the same value exists in another index, if so, change the answer index into -1 and yellow++;
*/
我目前不太担心速度,它的性能和我对简单实现的期望差不多。
这就是我想到的:
伪代码:
IF letter at CURRENT_INDEX -> "green"
ELSEIF letter anywhere in string array -> "yellow"
ELSE (not found) -> "red"
代码:
public static void main(String[] args) {
String[] guess = {"AYY","AAA","ZZZ"};
String[] answer = {"AAA","BBB","CCC"};
Stream<String> aWords = Arrays.asList(answer).stream(); // "AAABBBCCC"
String aFlat = aWords.collect(Collectors.joining());
String [][] color = new String[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
String guessLetter = Character.toString((guess[i]).charAt(j));
if (Character.toString(answer[i].charAt(j)).equals(guessLetter)) {
color[i][j] = "green";
} else if (aFlat.contains(guessLetter)) {
color[i][j] = "yellow";
} else {
color[i][j] = "red";
}
}
}
System.out.println();
}
程序的输出如下:
[
[green, red, red], // for "AYY" vs "AAA"
[yellow, yellow, yellow], // for "AAA" vs "BBB"
[red, red, red] // for "ZZZ" vs "CCC"
]
唯一与当前索引中的字母匹配的字母是guess[0][0]
guess[0][1]
和guess[0][2]
是红色的,因为在扁平的aFlat
字符串中找不到字母Y
。
guess[1][x]
全部为黄色,因为字母A
位于扁平的aFlat
字符串上,但不在答案数组的正确索引位置。
最后,guess[2][x]
是红色的,因为在扁平的aFlat
字符串上找不到字母Z
。
我写了一个java程序,它基本上和wordle一样。例如,给定2 3x3行 如果猜测与答案匹配(在本例中,索引[0][0]),则将其标记为“绿色” 如果猜测与确切位置的答案不匹配,但它是有效的(例如,答案[1][0]处的答案与猜测[1][0]处的答案不匹配,但是猜测[0][1]处的答案),则将被计为“黄色” 这是我目前拥有的代码。它适用于这个测试用例和除一个之外的所有其他测试用例。我似乎没能抓住我
我的JUnit测试用例失败了。行出现错误 mockito.When(BlogEntryService.Find(1L)).ThenReturn(entry); 故障跟踪是 java.lang.NullPointerException位于com.sample.controller.BlogentryControllerTest.GetExistingBlogEntry(BlogentryContro
我试图解决黑客等级问题,以计算字符串中包含的特殊回文字符串的数量 要考虑特殊回文字符串,所有字符都应相同,除中间字符外的所有字符都相同 例如,string=asasd,那么回文字符串是{a、s、a、s,d、asa、sas} 在这个程序中,两个测试用例分别用字符串asasd和aaaa传递 字符串abcbaba的一个测试用例失败 我研究了第二个条件,但我对执行感到震惊 你们能用你们的建议帮我解决问题吗
我有一个简单的测试用例: FileManager中的函数删除 /myDir下的所有文件,然后再次保留文件。 如上所述,我有一个。运行时,我可以按以下顺序查看所有打印: 但是,测试在失败。有两件事我不明白: > 我不明白,它在中失败了,为什么我仍然可以看到打印的,听起来就像是失败了,它没有停止运行,而是继续运行下一个测试?JUnit测试用例中的场景背后发生了什么?? 我不明白的另一件事是为什么tes
这是我的问题代码 假设a=1,b=2,c=3,...,z=26的值。您将得到一个数字字符串S。 编写一个程序,返回可以从给定字符串生成的所有可能代码的列表。
我如何在我的Grails Spock测试中实现Groovy的新特性?每次我尝试,我都会得到一个看起来像这样的堆栈跟踪。Groovy路径是否有一些我可能不知道的限制? JDK 版本: Groovy Verison: Grails版本: 简化代码: } 堆栈跟踪: