// Path: src/main/java/com/tom_e_white/set_game/model/Triple.java
// public class Triple {
//   
//   private final Card first, second, third;
//   private final Set<Card> cards; // for equals and hashcode, where order doesn't matter
//   
//   public Triple(Card first, Card second, Card third) {
//     this.first = first;
//     this.second = second;
//     this.third = third;
//     cards = new HashSet<>();
//     cards.add(first);
//     cards.add(second);
//     cards.add(third);
//   }
//   
//   public Card first() { return first; }
//   public Card second() { return second; }
//   public Card third() { return third; }
//   
//   public boolean contains(Card card) {
//     return card == first || card == second || card == third;
//   }
//   
//   /**
//    * @return true if the three cards comprise a Set, false otherwise.
//    */
//   public boolean isASet() {
//     return Cards.isASet(this);
//   }
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) return true;
//     if (o == null || getClass() != o.getClass()) return false;
//     Triple triple = (Triple) o;
//     return cards.equals(triple.cards);
//   }
// 
//   @Override
//   public int hashCode() {
//     return cards.hashCode();
//   }
// 
//   public String toString() {
//     return String.format("{%s, %s, %s}", first, second, third);
//   }
// 
// }


import com.tom_e_white.set_game.model.Triple;
package com.tom_e_white.set_game.predict;


/**
 * A Set with an associated probability that it was found in a layout.
 */
public class SetPrediction implements Comparable<SetPrediction> {
    private final Triple set;
    private final float probability;

// Path: src/main/java/com/tom_e_white/set_game/model/Triple.java
// public class Triple {
//   
//   private final Card first, second, third;
//   private final Set<Card> cards; // for equals and hashcode, where order doesn't matter
//   
//   public Triple(Card first, Card second, Card third) {
//     this.first = first;
//     this.second = second;
//     this.third = third;
//     cards = new HashSet<>();
//     cards.add(first);
//     cards.add(second);
//     cards.add(third);
//   }
//   
//   public Card first() { return first; }
//   public Card second() { return second; }
//   public Card third() { return third; }
//   
//   public boolean contains(Card card) {
//     return card == first || card == second || card == third;
//   }
//   
//   /**
//    * @return true if the three cards comprise a Set, false otherwise.
//    */
//   public boolean isASet() {
//     return Cards.isASet(this);
//   }
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) return true;
//     if (o == null || getClass() != o.getClass()) return false;
//     Triple triple = (Triple) o;
//     return cards.equals(triple.cards);
//   }
// 
//   @Override
//   public int hashCode() {
//     return cards.hashCode();
//   }
// 
//   public String toString() {
//     return String.format("{%s, %s, %s}", first, second, third);
//   }
// 
// }


// Path: src/main/java/com/tom_e_white/set_game/predict/SetPrediction.java
import com.tom_e_white.set_game.model.Triple;

package com.tom_e_white.set_game.predict;


/**
 * A Set with an associated probability that it was found in a layout.
 */
public class SetPrediction implements Comparable<SetPrediction> {
    private final Triple set;
    private final float probability;

    public SetPrediction(Triple set, float probability) {