Kitty(Javascript)

Здравейте !
Имам лек проблем с задачата “Kitty”.Всички примерни тестове минават,но в “judge” ми дава “IR”.
Това е моя код " https://pastebin.com/LcyAMFMy " .Ще се радвам някой да ми каже къде греша.

Привет,
Като проблем виждам, че се опитваш да излезеш от for цикъла с return, а трябва да е break.
Също така винаги принтираш полседния ред, независимо дали котето е deadlocked.
Ще те посъветвам при принт да използваш или само ’ ’ или само " ".

1 Like

Много ти благодаря ! (100/100)

Здравейте,
Не ми минава задачата в Judge.
Къде бъркам?

package com.company;

import java.util.Arrays;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String codesInput = scanner.nextLine();
String[] codes = codesInput.split("");
String movesInput = scanner.nextLine();
String[] moves = movesInput.split(" ");
Integer[] movesInt = new Integer[moves.length];

int souls = 0, food = 0, deadlocks = 0, jumps = 0, count = 0;

for (int i = 0; i < movesInt.length; i++) {
movesInt[i] = Integer.parseInt(moves[i]);
}

if (codes[0].equals("@")) {
souls++;
codes[0] = “0”;
} else if (codes[count].equals("*")) {
food++;
codes[0] = “0”;
} else {
System.out.println(“You are deadlocked, you greedy kitty!”);
System.out.printf(“Jumps before deadlock %d%n”,
jumps);
return;
}

for (int i = 0; i < movesInt.length; i++) {

count = count + movesInt[i];
while (count < 0 || count > codes.length - 1) {
if (count < 0) {
count += codes.length;

}
if (count > codes.length - 1) {
count -= codes.length;
}
}
jumps++;
if (codes[count].equals("@")) {
souls++;
} else if (codes[count].equals(" <em>")) {
food++;
} else if (codes[count].equals(“x”)) {
deadlocks++;
if (count % 2 == 0) {
souls–;
codes[count]="@";
} else {
food–;
codes[count]="</em> ";
}
if (souls &lt; 0 || food &lt; 0) {
System.out.println(“You are deadlocked, you greedy kitty!”);
System.out.printf(“Jumps before deadlock %d%n”,
jumps);
return;
}
}

}

System.out.printf(“Coder souls collected: %d%n”, souls);
System.out.printf(“Food collected: %d%n”, food);
System.out.printf(“Deadlocks: %d%n”, deadlocks);

}
}

Здравей, Юлиян,

В първите два блока (т.е. тези след if и else if) на условния оператор

if (codes[count].equals("@")) {
    souls++;
} else if (codes[count].equals("*")) {
    food++;
}  // etc.

намиращ се в тялото на втория цикъл for, са пропуснати присвояванията

codes[count] =  "0";

(Виж аналогичния условен оператор преди началото на този цикъл.)


Също така бих искал да предложа, в бъдеще, ако публикуваш дълги откъси от код, да ползваш някакъв сайт от рода на pastebin.com, или ако предпочиташ да ги включиш директно в текста на поста, да ги ограждаш с тройки обратни кавички, ``` ... ``` (на отделни редове), например така:
```

public class Main {
	public static void main(String[] args) {
		// etc. ...
	}
}

```
Доколкото разбирам, текстовият редактор в този форум поддържа Markdown синтаксис, при който непразен текст, ограден с две звездички, * ... *, се изписва с наклонен шрифт, а самите звездички се пропускат. Това, както и липсата на форматиране, доста затрудняват четенето на код, който не е escape-нат с обратни кавички, ` ... ` (за кратки пасажи, в които повторните интервали и новите редове се пренебрегват) или с тройки обратни кавички (за по-дълги пасажи, както по-горе). За повече информация: Markdown Cheatsheet.