github.com/joshprzybyszewski/masyu@v0.0.0-20230508015604-f31a025f6e7e/model/iterator.go (about) 1 package model 2 3 import "fmt" 4 5 type Iterator int 6 7 func (i Iterator) String() string { 8 return fmt.Sprintf("%dx%d %s", i.GetSize(), i.GetSize(), i.GetDifficulty()) 9 } 10 11 func (i Iterator) Valid() bool { 12 return MinIterator <= i && i <= MaxIterator 13 } 14 15 func (i Iterator) GetSize() Size { 16 if i < MinIterator || i > MaxIterator { 17 return invalidSize 18 } 19 20 if i == 0 { 21 return six 22 } 23 if i <= 3 { 24 return eight 25 } 26 if i <= 6 { 27 return ten 28 } 29 if i <= 9 { 30 return fifteen 31 } 32 if i <= 12 { 33 return twenty 34 } 35 if i == 13 { 36 return daily 37 } 38 if i == 14 { 39 return weekly 40 } 41 if i == 15 { 42 return monthly 43 } 44 if i <= 18 { 45 return twentyfive 46 } 47 48 return invalidSize 49 } 50 51 func (i Iterator) GetDifficulty() Difficulty { 52 if i < MinIterator || i > MaxIterator { 53 return invalidDifficulty 54 } 55 56 if i == 0 { 57 return easy 58 } 59 if i >= 13 && i <= 15 { 60 return hard 61 } 62 if i > 15 { 63 return Difficulty(i - 15) 64 } 65 66 return Difficulty((i-1)%3) + 1 67 }