-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCell.cs
56 lines (50 loc) · 1.25 KB
/
Cell.cs
1
2
3
4
5
6
7
8
9
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sudoku
{
public class Cell
{
public Game Game { get; set; }
public int Id { get; set; }
public List<Group> Groups { get; } = new List<Group>();
public int ColumnId
{
get
{
return Id % Game.Config.Order;
}
}
public int RowId
{
get
{
return Id / Game.Config.Order;
}
}
public int? Value { get; set; }
public int[] PossibleValues
{
get
{
return Game.Config.PossibleValues
.Where(v => this.Groups.TrueForAll(g => g.Cells.Any(c => c.Value == v) == false))
.ToArray();
}
}
public Row Row
{
get { return this.Groups.OfType<Row>().SingleOrDefault(); }
}
public Column Column
{
get { return this.Groups.OfType<Column>().SingleOrDefault(); }
}
public Square Square
{
get { return this.Groups.OfType<Square>().SingleOrDefault(); }
}
}
}