1. C# / Говнокод #19430

    0

    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
    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
    class Program
        {
            static void Main(string[] args)
            {
                Cell[] cells = new Cell[15];
                cells[1] = new Cell(); //и ещё 14 подобных строк
                cells[1].AddAdjacentCell(cells[2], 1);
                cells[1].AddAdjacentCell(cells[5], 2); //и так для всех 15 ячеек
                Spore spore01 = new Spore(true, false, true, true, false, true);
                Spore spore02 = new Spore(true, true, true, true, true, true);
                for(Int16 i = 1; i <= 14; i++)
                    for (Int16 k = 1; k <= 14; k++)
                    {
                        if (i != k)
                        {
                            Console.Write("Trying " + i + " " + k + "... ");
                            cells[i].AddSpore(spore01);
                            cells[k].AddSpore(spore02);
                            bool badAttempt = false;
                            for(Int16 c = 1; c <= 14; c++)
                            {
                                if (cells[c].state == CellState.Empty)
                                {
                                    badAttempt = true;
                                    break;
                                }
                            }
                            Console.WriteLine(badAttempt.ToString());
                        }
                    }
    Console.ReadLine();
            }
        }
        class Cell
        {
            public CellState state;
            private Cell[] adjacentCells = new Cell[6];
            private Spore currentSpore = null;
            public Cell()
            {
                this.state = CellState.Empty;
                for (Int16 i = 0; i <= 5; i++)
                {
                    this.adjacentCells[i] = null;
                }
            }
            public void AddAdjacentCell(Cell cell, Int16 direction)
            {
                if (direction >= 6)
                    return;
    
                this.adjacentCells[direction] = cell;
            }
            public void Ray(Int16 direction)
            {
                if (this.adjacentCells[direction] == null)
                    return;
                if (this.adjacentCells[direction].state == CellState.Spore)
                    return;
                this.state = CellState.Light;
                this.adjacentCells[direction].Ray(direction);
            }
            public void AddSpore(Spore spore)
            {
                this.state = CellState.Spore;
                this.currentSpore = spore;
                for (Int16 i = 0; i <= 5; i++)
                {
                    if (this.currentSpore.directions[i] == true)
                        this.Ray(i);
                }
            }
            public void Reset()
            {
                this.state = CellState.Empty;
                this.currentSpore = null;
                for (Int16 i = 0; i <= 5; i++)
                {
                    this.adjacentCells[i] = null;
                }
            }
        }
        enum CellState
        {
            Empty,
            Light,
            Spore
        }
        class Spore
        {
            public bool[] directions = new bool[6];
            public Spore(params bool[] rays)
            {
                for (Int16 i = 0; i <= 5; i++)
                    this.directions[i] = rays[i];
            }
        }
    }

    (обсуждение программы для поиска решений для одной головоломки под Андроид)
    - Да щас напишем, хуль там делать то?
    (через 5 минут)
    - Ой, переполнение стека...
    - ...

    Запостил: A1mighty, 11 Февраля 2016

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

    • Я всё понимаю, код написать-выкинуть-забыть. Но вы, сука, вообще гайдлайны игнорируете что-ли? Самим же проще будет читать.
      Паблик филды, прайват филды которые от пабликов по именованию ничем не отличаются, нестед классы, нахуй не нужный this через this, какие-то полуоптимизации уровня Int16 в цикле на дворе не 78 год когда каждый пиксель на счету, не дай бог лишние 2 байта возьмешь, игнорирование var,
      Console.WriteLine(badAttempt.ToString());
      ахуеть просто.
      Чет пиздец пригорело у меня.
      Ответить
      • чем тебе this не угодил?
        кстати, насколько я помню, int32 быстрее чем int16 работает, несмотря на его размер.
        Ответить
        • Тем что он там не нужен.

          int32:
          The runtime optimizes the performance of 32-bit integer types (Int32 and UInt32), so use those types for counters and other frequently accessed integral variables.
          Ответить
          • Может от заменил на инт16 чтобы стека меньше хавать.
            Ответить
            • А там стек не как в жабе сделан (байткод не позволяет хранить ничего мельче 32 бит на стеке)?
              Ответить
              • >> А там стек не как в жабе сделан (байткод не позволяет хранить ничего мельче 32 бит на стеке)?

                Честно говоря мне даже интересно стало нахер такие подробности о стеке знать. Неужели на жабе пишут всякие микропрограммы для микро-же-контроллеров при живом си?
                Ответить
                • > на жабе пишут всякие микропрограммы для микро-же-контроллеров
                  Да, пишут модули для смарткарт. Правда там жаба совсем уж порезанная, без кучи и строк.
                  Ответить
    • пятнашки что ли?
      Ответить
    • if (this.currentSpore.directions[i] == true)
      Ответить

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