- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 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 минут)
- Ой, переполнение стека...
- ...
nihau 11.02.2016 14:08 # +1
Паблик филды, прайват филды которые от пабликов по именованию ничем не отличаются, нестед классы, нахуй не нужный this через this, какие-то полуоптимизации уровня Int16 в цикле на дворе не 78 год когда каждый пиксель на счету, не дай бог лишние 2 байта возьмешь, игнорирование var, ахуеть просто.
Чет пиздец пригорело у меня.
Lokich 11.02.2016 16:00 # 0
кстати, насколько я помню, int32 быстрее чем int16 работает, несмотря на его размер.
nihau 11.02.2016 16:26 # 0
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.
3_dar 11.02.2016 20:14 # 0
bormand 11.02.2016 21:14 # 0
kegdan 12.02.2016 00:13 # +1
Честно говоря мне даже интересно стало нахер такие подробности о стеке знать. Неужели на жабе пишут всякие микропрограммы для микро-же-контроллеров при живом си?
bormand 12.02.2016 00:14 # 0
Да, пишут модули для смарткарт. Правда там жаба совсем уж порезанная, без кучи и строк.
kegdan 12.02.2016 00:16 # 0
bormand 12.02.2016 00:24 # 0
kegdan 12.02.2016 00:49 # 0
3_14dar 12.02.2016 03:15 # 0
kegdan 12.02.2016 09:32 # 0
kegdan 11.02.2016 15:11 # 0
d_fomenok 12.02.2016 14:15 # +1