Jawa / Говнокод #25947 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
import java.util.Random;
public class Main {
    public static void main(String[] args) {
        Galaxy g = new Galaxy(3,77,34);
        g.start();
    }
}
class Galaxy extends Thread {
    private int min = 1;
    private int max = 100;
    private final int step = 5;
    private final int TIME = 1000;
    volatile private int a, b, c;
    Galaxy(int a, int b, int c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }
    public void start() {
        Thread t = new Thread(this, "one");
        t.start();
        Thread t2 = new Thread(this, "two");
        t2.start();
        Thread t3 = new Thread(this, "three");
        t3.start();
    } @Override
    public void run() { while(true) { try {
                Thread.sleep(new Random().nextInt(TIME));
                if(currentThread().getName().equals("one")) {
                    if(new Random().nextInt(2) == 1 && a > 0)
                        a--;
                    else {
                        if (a < max)
                            a++;
                    }
                    int var = a;
                    if(b == var || (b-1) == var || (b+1) == var)
                        if((b+step) > max)
                            b-=step;
                        if((b-step) < min)
                            b+=step;
                    if(c == var || (c-1) == var || (c+1) == var)
                        if((c+step) > max)
                            c-=step;
                        if((c-step) < min)
                            c+=step;
                }
              if(currentThread().getName().equals("two")) {
                    if(new Random().nextInt(2) == 1 && b > 0)
                        b--;
                    else {
                        if(b < max)
                            b++;
                    }
                    int var = b;
                    if(a == var || (a-1) == var || (a+1) == var) {
                        if((a+step) > max)
                            a-=step;
                        if((a-step) <= min)
                            a+=step;
                    }
                    if(c == var || (c-1) == var || (c+1) == var) {
                        if((c+step) > max)
                            c-=step;
                        if((c-step) <= min)
                            c+=step;
                    }
                }
               if(currentThread().getName().equals("three")) {
                    if(new Random().nextInt(2) == 1 && c > 0)
                        c--;
                    else {
                        if(c < max)
                            c++;
                    }
                    int var = c;
                    if(a == var || (a-1) == var || (a+1) == var) {
                        if((a+step) > max)
                            a-=step;
                        if((a-step) <= min)
                            a+=step;
                    }
                    if(b == var || (b-1) == var || (b+1) == var) {
                        if((b+step) > max)
                            b-=step;
                        if((b-step) <= min)
                            b+=step;
                    }
                }
                for(int i = min; i <= max; i++) {
                    int p = 0;
                    if(i == a || i == b || i == c)
                        p = 1;
                    System.out.print(p);
                }
                System.out.println();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }}}}

После запуска ждал 10 минут. Но они так и не сблизились. Программа словно остерегается сближения. Как живая.
Рашан ИИ!

Запостил: codershitter codershitter, (Updated )

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

  • Сложна
    Делаем какие-то манипуляции с числами и ждем, что один поток прервет другой и собьются инварианты? Только этого не будет, каждый поток просыпается, выполняет работу и засыпает снова за интервал, меньший кванта времени.
    Ответить
  • Много копипаствы.

    Немного непонятно зачем, (b-1) и т.п. брать в скобки, у арифметических операторов же приоритет выше, чем у сравнений и логических.

    Форматирование какое-то хуёвое — месиво.

    else {
        if
    Ммда...

    А вообще, что эта портянка из ифов делает?
    Ответить

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8