first successful run to solve a simple puzzle
This commit is contained in:
+26
-1
@@ -82,10 +82,28 @@ func (f *Field) GetBlock(r, c int) (*Block, error) {
|
||||
block.cells[row][column] = &f.cells[startRow+row][startCol+column]
|
||||
}
|
||||
}
|
||||
|
||||
return block, nil
|
||||
}
|
||||
|
||||
func (f *Field) GetEachPartAtPos(pos *Position) []Part {
|
||||
row, err := f.GetRow(pos.row)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
column, err := f.GetColumn(pos.column)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
block, err := f.GetBlock(pos.blockRow, pos.blockColumn)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return append([]Part{}, row, column, block)
|
||||
}
|
||||
|
||||
func (f *Field) GetCell(r, c int) (*Cell, error) {
|
||||
if r > f.rows || c > f.columns {
|
||||
return nil, outOfBound
|
||||
@@ -111,6 +129,13 @@ func (f *Field) ForEachPart(fn func(part Part)) {
|
||||
})
|
||||
}
|
||||
|
||||
func (f *Field) ForEachPartAtPos(pos *Position, fn func(part Part)) {
|
||||
parts := f.GetEachPartAtPos(pos)
|
||||
for _, part := range parts {
|
||||
fn(part)
|
||||
}
|
||||
}
|
||||
|
||||
func (f *Field) ForEachRow(fn func(row *Row)) {
|
||||
for i := range f.rows {
|
||||
row, err := f.GetRow(i)
|
||||
|
||||
Reference in New Issue
Block a user