1. Java / Говнокод #18953

    −42

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    /* Таблица умножения
    */
    public class Solution
    {
    public static void main(String[] args)
    {
    int a = 1;
    int b = 2;
    int c = 3;
    int d = 4;
    int e = 5;
    int f = 6;
    int g = 7;
    int h = 8;
    int i = 9;
    int j = 10;
    
    System.out.println(a * a + " " + b * a + " " + c * a + " " + d * a + " " + e * a + " " + f * a + " " + g * a + " " + h * a + " " + i * a + " " + j * a);//1
    System.out.println(a * b + " " + b * b + " " + c * b + " " + d * b + " " + e * b + " " + f * b + " " + g * b + " " + h * b + " " + i * b + " " + j * b);//2
    System.out.println(a * c + " " + b * c + " " + c * c + " " + d * c + " " + e * c + " " + f * c + " " + g * c + " " + h * c + " " + i * c + " " + j * c);//3
    System.out.println(a * d + " " + b * d + " " + c * d + " " + d * d + " " + e * d + " " + f * d + " " + g * d + " " + h * d + " " + i * d + " " + j * d);//4
    System.out.println(a * e + " " + b * e + " " + c * e + " " + d * e + " " + e * e + " " + f * e + " " + g * e + " " + h * e + " " + i * e + " " + j * e);//5
    System.out.println(a * f + " " + b * f + " " + c * f + " " + d * f + " " + e * f + " " + f * f + " " + g * f + " " + h * f + " " + i * f + " " + j * f);//6
    System.out.println(a * g + " " + b * g + " " + c * g + " " + d * g + " " + e * g + " " + f * g + " " + g * g + " " + h * g + " " + i * g + " " + j * g);//7
    System.out.println(a * h + " " + b * h + " " + c * h + " " + d * h + " " + e * h + " " + f * h + " " + g * h + " " + h * h + " " + i * h + " " + j * h);//8
    System.out.println(a * i + " " + b * i + " " + c * i + " " + d * i + " " + e * i + " " + f * i + " " + g * i + " " + h * i + " " + i * i + " " + j * i);//9
    System.out.println(a * j + " " + b * j + " " + c * j + " " + d * j + " " + e * j + " " + f * j + " " + g * j + " " + h * j + " " + i * j + " " + j * j);//10
    }
    }

    Запостил: olol123, 02 Ноября 2015

    Комментарии (49) RSS

    • Брутально. Видимо автора попросили заменить магические числа на константы...
      Ответить
    • царский анролл
      Ответить
    • просто и со вкусом
      Ответить
    • WCT ?
      Ответить
    • не можешь работать головой - работай руками..
      Ответить
    • for (int i=1;i<11;i++){
      for (int j=1;j<11;j++){
      System.out.print( j*i + " ");
      }
      System.out.println();
      }
      Ответить
      • серьезно?!!!
        Ответить
        • Сижу на работе без дела первый день. Хотелось хоть как то поучаствовать в беседе. не нужно иронии.
          Inkanus-gray, да пробелы есть лишние, но наглядность вывода сохранил)
          Думаю в этом примере не принципиально наличие лишнего пробела.
          Ответить
          • Это если не добываться. А если доебаться ....
            Ответить
      • Эта программа выводит лишний пробел в конце каждой строки.
        Ответить
      • Корректнее так (калька с C#, поэтому может работать не так, как надо):

        int len = 10;

        for (int i = 0; i < len * len; ++i)
        {
        if (i % len == 0)
        {
        if(i > 0)
        System.out.println();
        }
        else
        System.out.print(" ");
        System.out.format("%03d ", (i / len + 1) * (i % len + 1));
        }
        Ответить
        • А чем это лучше двух циклов? Имхо, только запутаннее стало.
          Ответить
          • На sizeof(int) меньше памяти жрёт.
            Ответить
            • Зато деление жрёт больше проца.
              Ответить
              • У вас монитор чёрно-белый?
                Ответить
                • Чёрно-зелёный.
                  Ответить
                  • Ладно. Вот без деления: http://ideone.com/ETtBnX
                    Ответить
                    • Можно выводить числа с паддингом под 8 разрядов. Тогда их поместится как раз по 10 штук в строке, и не надо будет выводить энтеры ;)
                      Ответить
                      • А как это будет выглядеть, если перенаправить вывод в файл!
                        Ответить
                  • Wake up, Neo. The matrix has you
                    Ответить
        • Ну ты и кулибин, блин. Изобрел 2 цикла по цене 3 в одном
          Ответить
          • Зато в общем виде и сама по себе практика разворачивания в один цикл (в особенности это касается всяких непристойных алгоритмов) — годная вещь. Если бы не было форматирования (предположим, у нас есть некий абстрактный view, а это все происходит в model с array), для больших N, это было бы более чем осмысленно. В общем, сама по себе практика не настолько порочна, как может показаться.
            Ответить
            • Попытка засунуть N-мерную таблицу в одномерную сущность имеет смысл, да. В конце концов, в РСУБД этим постоянно занимаются. Если бы модель выдавала туплы (i, j, i*j), а view отображало бы третий элемент тупла в табличке, используя первые два как координаты - ну ок, имеет право на жизнь. Если бы модель тупо выдавала массив i*j, а view раскидывало бы их по ячейкам справа-налево сверху-вниз - тоже.

              Но даже там значения было бы удобнее генерить двойным циклом, а не выёбываться, вычленяя их делением из линейного индекса...

              Эта практика, имхо, не порочна только в одном случае - когда линейный индекс даётся свыше, на входе алгоритма, и нам надо выдать значение для конкретного индекса.
              Ответить
              • > когда линейный индекс даётся свыше, на входе алгоритма, и нам надо выдать значение для конкретного индекса
                Что-то типа такого имелось в виду:
                // этот метод навязан нам интерфейсом, мы ничего не можем с этим поделать
                int getCell(int linearIndex)
                {
                    int y = (linearIndex / width) + 1;
                    int x = (linearIndex % width) + 1;
                    return x * y;
                }
                Но и то, имхо, архитектура говёная, раз заставляет такое делать, а не передаёт индекс ячейки по-нормальному как пару (x, y).
                Ответить
                • и то скорее

                  int y = (linearIndex / width) + 1;
                      int x = (linearIndex % width) + 1;


                  Будет где нибудь в функции-адаптере
                  Ответить
            • сначала ты индексы сворачиваешь, потом ты индексы разворачиваешь...

              ладно если у нас только свернутый индекс на входе, но тут то зачем все это
              Ответить
      • Умножение не нужно. Оно же тормозит.
        for (int i=1;i<11;i++){
            int p = 0;
            for (int j=1;j<11;j++){
                p += i;
                System.out.print(p + " ");
            }
            System.out.println();
        }


        http://ideone.com/o8OoN1
        Ответить
        • Циклы тоже. http://ideone.com/m5RGtC
          Ответить
        • экономим место

          for (int i = 0; i++ < 10; Console.WriteLine())
                          for (int j = 0, p = 0; j++ < 10; Console.Write((p += i) + " "));



          http://ideone.com/ouk6eX
          Ответить
          • Не экономим, просто так вышло:
            for(var i=1,j=0,p=0,s='';i<=10;s+=(++j)>10?'\n'[p=j=+!++i]:(p+=i)+' ')i+j-20||alert(s)

            "i+j-20||" вместо ";" кажется слишком расточительным, но без этого теряется особый шарм этого кода.
            Ответить
    • Заебали лабы постить. Единственный смешной момент- что числа заменили константами (разве что они не final)
      Ответить

    Добавить комментарий