• 0.00

  • -3.04

  • ,

Топик о человек под ником Fry

Пишу топик о человеке под ником Fry, который по сути является человеком гнилым , ибо заминусовал не только мои ответы, но и мой профиль. На основании чего? Для меня загадка…

Так вот, уважаемое JavaRush community, предыстория такова — в теме своего блога я написал о том, что одна из двух задач level07.lesson06.task02 и level07.lesson06.task03 не является корректной. Хочется отметить, что за день до этого, я также написал личное письмо Hubert-у с просьбой проверить корректность во избежании ошибок и исправить при необходимости систему проверки заданий.

Решая задачу level07.lesson06.task02 я написал следующий код:
package com.javarush.test.level07.lesson06.task02;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

/* Самая длинная строка
1. Создай список строк.
2. Считай с клавиатуры 5 строк и добавь в список.
3. Используя цикл, найди самую длинную строку в списке.
4. Выведи найденную строку на экран.
5. Если таких строк несколько, выведи каждую с новой строки.
*/
public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> list = new ArrayList<>();

        for (int i = 0; i < 5; i++)
        {
            String s = reader.readLine();
            list.add(s);
        }

        String max = list.get(0);
        for (int i = 0; i < list.size() - 1; i++)
        {
            if (list.get(i).length() < list.get(i + 1).length())
            {
                max = list.get(i + 1);
            }
        }

        System.out.println(max);

        for (int i = 0; i < list.size(); i++)
        {
            if ((list.get(i).length() == max.length()) && list.get(i) != max)
            {
                System.out.println(list.get(i));
            }
        }
    }
}

Задача прошла проверку!
Решая следующую задачу level07.lesson06.task03, идентичную предыдущей, где надо было только заменить знак ">" на "<" задача проверку не прошла.
Анализируя код я понял, что есть необходимость добавить еще одно условие проверки:
package com.javarush.test.level07.lesson06.task03;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

/* Самая короткая строка
1. Создай список строк.
2. Считай с клавиатуры 5 строк и добавь в список.
3. Используя цикл, найди самую короткую строку в списке.
4. Выведи найденную строку на экран.
5. Если таких строк несколько, выведи каждую с новой строки.
*/
public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> list = new ArrayList<>();

        for (int i = 0; i < 5; i++)
        {
            String s = reader.readLine();
            list.add(s);
        }

        String min = list.get(0);
        for (int i = 0; i < list.size() - 1; i++)
        {
            if ((list.get(i).length() > list.get(i + 1).length()) && (list.get(i).equals(min)))
            {
                min = list.get(i + 1);
            }
        }

        System.out.println(min);

        for (int i = 0; i < list.size(); i++)
        {
            if ((list.get(i).length() == min.length()) && (list.get(i) != min))
            {
                System.out.println(list.get(i));
            }
        }
    }
}

Вы можете найти это условие в строке 30, вот оно:
list.get(i).equals(min)

Да, действительно, без этого условия программа отрабатывала некорректно.
Возвращаясь к предыдущей программе (level07.lesson06.task02) можно увидеть, что строка 30 не содержит подобного условия!
Строка 30:
if (list.get(i).length() < list.get(i + 1).length())

Как результат, проверочный тест выявил ошибку:
gggggg
hhhhhh
gh
uuuuuu
gggggg
Вывод текста:
uuuuuu
gggggg
hhhhhh
gggggg

Как вы можете видеть, результат вывода не верный! Первая строка должна была бы быть «gggggg».
И тем не менее система приняла данный код как верный!!! Я реально прошел эту задачу, хотя сейчас понимаю, что она не верна.
Именно об этом я и написал, когда говорил об ошибке системы.

Так вот именно за эту ситуацию и мои слова о том, что есть место ошибке, товарищ Fry заминусовал мой профиль. Забавно также и то, что он как-то писал в своем блоге об «обычных ослах, у которых в жизни только два мнения: его и неправильные» и рекомендовал обходить таких людей стороной… Действительно очень забавно и показательно, когда пишешь о гипотетической ситуации главным героем которой потом же и становишься)))
  • ,

Корявое оформление задач на тренировку ввода кода

Одна из многих задачек на тренировку ввода кода.

Корявые места отмечены подчеркиваниями. 9-10 строки — один отступ вместо стандартного размера табуляции. Строка 16 выбивается на -1 от 15. Смотрю на это и не понимаю — зачем сделано так коряво? Приучают людей к такому написанию кода?))) Или смыслом всей этой чепухи является проверка на внимательность?))
  • ,

Решение задач на JavaRush?

Вопрос возник в связи с тем, что в процессе учебы на JavaRush и решения задач я заметил, что непосредственно само решение у меня часто отличается от решения большинства людей. Т.е. зачастую я использую средства языка, которые мы не проходим на текущем уровне.

Например, задачу level05.lesson12.home05 я так и не решил стандартными средствами Т.е. я бегло пробежался по тексту обсуждения (несмотря код) и понял, что через исключения (как решил ее я) задачу никто не решал. И хотя система приняла мое решение, возникает вопрос — правильно ли это? Т.е. я чего-то не понял в средствах моего уровня и вынужден был прыгнуть на уровни выше, чтобы решить ее с помощью тех средств. Т.е. есть определенный пробел?

Задачу level05.lesson12.bonus03 опять же решил немного иначе, нежели большинство людей — воспользовался встроенными методами и классами Java, в то время, когда люди писали свои методы сравнения. Опять же задача прошла и да, она лаконична, но опять есть какие-то сомнения.

Хотелось бы услышать мнения пользователей и, откровенно говоря, хотелось бы услышать хотя бы один ответ от разработчиков ресурса (если они увидят этот topic) по этому поводу.