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  }