Задача: Трамвайные билеты. Покритикуйте

Модератор: Absurd

Ответить
m1st
Сообщения: 5
Зарегистрирован: 19 июл 2010, 17:08

07 окт 2010, 18:38

Написать программу определения количества шестизначных "счастливых" трамвайных билетов, у которых сумма первых трех цифр совпадает с суммой трех последних.
Оптимизировать решение по времени выполнения. Количество билетов вывести в файл output.txt

Привет, решение данной задачи на Java. Покритикуйте.

Код: Выделить всё

package olympicexercises;

import java.io.*;
import java.util.*;
import java.text.*;


public class LuckyNumbersSolver
{

  /**
   * Нахождение шестизначных "счастливых" трамвайных билетов, у которых сумма первых трех цифр совпадает с суммой трех
   * последних
   *
   * @param numbers - массив номеров
   * @return массив счастливых номеров
   */
  private static List<String> findLuckyNumbers(List<String> numbers)
  {
    List<String> luckyNumbers = new ArrayList<String>();
    for (String number : numbers) {
      int sumLeft = Character.digit(number.charAt(0), 10) + Character.digit(number.charAt(1), 10) + Character
          .digit(number.charAt(2), 10); // суммируем первые 3 цифры в номере
      int sumRight = Character.digit(number.charAt(4), 10) + Character.digit(number.charAt(5), 10) + Character
          .digit(number.charAt(6), 10); // суммируем последние 3 цифры в номере
      if (sumLeft == sumRight) { // проверяем на совпадение сумму первых трех цифр с суммой трех последних
        luckyNumbers.add(number); // добавляем "счастливый" номер в массив
      }
    }
    return luckyNumbers;
  }


  public static void main(String[] args) throws IOException
  {
    final List<String> numbers = new ArrayList<String>();
    NumberFormat nf = NumberFormat.getInstance();
    nf.setMinimumIntegerDigits(6);
    final int start = 0, end = 999999;
    final String from = nf.format(start), to = nf.format(end), message;

    for (int i = start; i <= end; i++) // инициализация коллекции номеров для поиска
      numbers.add(nf.format(i));

    System.out.println(findLuckyNumbers(numbers));
    message = "Count of lucky train tickets from " + from + " to " + to + ": " + findLuckyNumbers(numbers).size();
    System.out.println(message);

    // Выгрузим "счастливые" номера в файл
    final PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("src/olympicexercises/output.txt")));
    out.println(message);
    out.println(findLuckyNumbers(numbers));
    out.close();
  }
}
 
ggfyytyty
Сообщения: 0
Зарегистрирован: 24 окт 2012, 11:19
Откуда: Peru
Контактная информация:

24 окт 2012, 11:31

Биржа Баннеров T&M.
http://w717.com
11 видов Рекламы.Купим ссылки/
GeorgeSoca
Сообщения: 0
Зарегистрирован: 12 окт 2015, 04:09
Откуда: Guam
Контактная информация:

15 окт 2015, 00:09

На нашем сайте вы можете чувствовать себя в безопасности! Кроме того, мы используем зеркальные жесткие диски на все наши серверы, поэтому мы также взять резервную два раза в день на отдельных серверах. Мы используем ISPmanager, как на панели управления. ISPmanager является панель управления, которая позволяет легко управлять своей веб-сайт. С нами вы можете разместить столько веб-сайты и домены, которые вы хотите для учетной записи хостинга.
virtual hosting
Ответить