Skip to content

Instantly share code, notes, and snippets.

@alexanderankin
Last active January 15, 2023 02:23
Show Gist options
  • Select an option

  • Save alexanderankin/b214ee0cb68274fdabcacc9216dda61b to your computer and use it in GitHub Desktop.

Select an option

Save alexanderankin/b214ee0cb68274fdabcacc9216dda61b to your computer and use it in GitHub Desktop.
import lombok.Data;
import lombok.experimental.Accessors;
public class BucketStateViewer {
public static void main(String[] args) {
BucketState valid = new BucketState()
.setObserver(ObserverRelativeToCenter.LEFT)
.setObserved(ObservedRelativeToCenter.LEFT)
.setRelative(ObservedRelativeToObserver.LEFT)
.setDistance(Distance.INCREASING)
.setRelativeVelocity(RelativeVelocity.DECREASING);
System.out.println(valid);
System.out.println(valid.amIValid());
BucketState invalid = new BucketState()
.setObserver(ObserverRelativeToCenter.LEFT)
.setObserved(ObservedRelativeToCenter.LEFT)
.setRelative(ObservedRelativeToObserver.RIGHT)
.setDistance(Distance.INCREASING)
.setRelativeVelocity(RelativeVelocity.INCREASING);
System.out.println(invalid);
System.out.println(invalid.amIValid());
}
enum ObserverRelativeToCenter {
LEFT, RIGHT, EQUALS,
}
enum ObservedRelativeToCenter {
LEFT, RIGHT, EQUALS,
}
enum ObservedRelativeToObserver {
LEFT, RIGHT, EQUALS
}
// ObserverObservedDistanceD1
enum Distance {
INCREASING, DECREASING,
}
// ObserverObservedDistanceD2
enum RelativeVelocity {
INCREASING, DECREASING,
}
@Accessors(chain = true)
@Data
static class BucketState {
ObserverRelativeToCenter observer;
ObservedRelativeToCenter observed;
ObservedRelativeToObserver relative;
Distance distance;
RelativeVelocity relativeVelocity;
boolean amIValid() {
if (observer == ObserverRelativeToCenter.LEFT &&
observed == ObservedRelativeToCenter.LEFT &&
relative == ObservedRelativeToObserver.RIGHT)
return false;
return true;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment