|
|||||||||
| Home >> All >> [ cgsuite overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
cgsuite
Class UnsimplifiedGame

java.lang.Objectcgsuite.UnsimplifiedGame
- All Implemented Interfaces:
- java.lang.Comparable, Game, java.io.Serializable
- public class UnsimplifiedGame
- extends java.lang.Object
- implements Game, java.lang.Comparable
- extends java.lang.Object
A wrapper for another Game that is immune to simplifications.
An instance of this class contains a reference to exactly one other game.
It behaves exactly as its component, except that any calls to
simplify 55 and
simplifyExpression 55 will be
ignored.
This class is primarily useful when you want the Combinatorial Game Suite
interface to display a game in a form other than simplest form. For
example, every canonical game has a unique representation as the sum of
heated infinitesimals. In CGSuite, this "thermal dissociation" is wrapped
in an UnsimplifiedGame, since otherwise the sum would
be collapsed back into canonical form before it could be displayed to the
user.
| Field Summary | |
private Game |
g
|
| Fields inherited from interface cgsuite.Game |
SIMPLIFY_COOL, SIMPLIFY_FREEZE, SIMPLIFY_HEAT, SIMPLIFY_ORDINAL_SUM_G, SIMPLIFY_ORDINAL_SUM_H, SIMPLIFY_OVERHEAT, SIMPLIFY_PRODUCT_G, SIMPLIFY_PRODUCT_U, SIMPLIFY_SUM |
| Constructor Summary | |
UnsimplifiedGame(Game g)
Constructs a new UnsimplifiedGame. |
|
| Method Summary | |
CanonicalGame |
canonicalize()
Calculates the canonical form of this game. |
int |
compareTo(java.lang.Object o)
Compares this object with another, and returns a numerical result based on the comparison. |
boolean |
equals(java.lang.Object o)
Determine whether this Object is semantically equal to another Object. |
Game |
getG()
Gets the component of this game. |
Game |
getInverse()
Gets the inverse of this game. |
java.util.Collection |
getLeftOptions()
Gets a Collection containing all left options of this game. |
java.util.Collection |
getRightOptions()
Gets a Collection containing all right options of this game. |
int |
hashCode()
Get a value that represents this Object, as uniquely as possible within the confines of an int. |
boolean |
isShortGame()
Returns true if this game is a short game. |
Game |
simplify()
Calculates a simplified form of this game. |
Game |
simplifyExpression(int simplifyType,
Game[] args)
Calculates a simplified form of the indicated expression. |
java.lang.String |
toString()
Convert this Object to a human-readable String. |
| Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Field Detail |
g
private Game g
| Constructor Detail |
UnsimplifiedGame
public UnsimplifiedGame(Game g)
- Constructs a new
UnsimplifiedGame.
| Method Detail |
equals
public boolean equals(java.lang.Object o)
- Description copied from class:
java.lang.Object - Determine whether this Object is semantically equal
to another Object.
There are some fairly strict requirements on this method which subclasses must follow:
- It must be transitive. If
a.equals(b)andb.equals(c), thena.equals(c)must be true as well. - It must be symmetric.
a.equals(b)andb.equals(a)must have the same value. - It must be reflexive.
a.equals(a)must always be true. - It must be consistent. Whichever value a.equals(b) returns on the first invocation must be the value returned on all later invocations.
a.equals(null)must be false.- It must be consistent with hashCode(). That is,
a.equals(b)must implya.hashCode() == b.hashCode(). The reverse is not true; two objects that are not equal may have the same hashcode, but that has the potential to harm hashing performance.
This is typically overridden to throw a java.lang.ClassCastException if the argument is not comparable to the class performing the comparison, but that is not a requirement. It is legal for
a.equals(b)to be true even thougha.getClass() != b.getClass(). Also, it is typical to never cause a java.lang.NullPointerException.In general, the Collections API (
java.util) use theequalsmethod rather than the==operator to compare objects. However, java.util.IdentityHashMap is an exception to this rule, for its own good reasons.The default implementation returns
this == o. - It must be transitive. If
hashCode
public int hashCode()
- Description copied from class:
java.lang.Object - Get a value that represents this Object, as uniquely as
possible within the confines of an int.
There are some requirements on this method which subclasses must follow:
- Semantic equality implies identical hashcodes. In other
words, if
a.equals(b)is true, thena.hashCode() == b.hashCode()must be as well. However, the reverse is not necessarily true, and two objects may have the same hashcode without being equal. - It must be consistent. Whichever value o.hashCode() returns on the first invocation must be the value returned on all later invocations as long as the object exists. Notice, however, that the result of hashCode may change between separate executions of a Virtual Machine, because it is not invoked on the same object.
Notice that since
hashCodeis used in java.util.Hashtable and other hashing classes, a poor implementation will degrade the performance of hashing (so don't blindly implement it as returning a constant!). Also, if calculating the hash is time-consuming, a class may consider caching the results.The default implementation returns
System.identityHashCode(this) - Semantic equality implies identical hashcodes. In other
words, if
compareTo
public int compareTo(java.lang.Object o)
- Description copied from interface:
java.lang.Comparable - Compares this object with another, and returns a numerical result based
on the comparison. If the result is negative, this object sorts less
than the other; if 0, the two are equal, and if positive, this object
sorts greater than the other. To translate this into boolean, simply
perform
o1.compareTo(o2) <op> 0, where op is one of <, <=, =, !=, >, or >=.You must make sure that the comparison is mutual, ie.
sgn(x.compareTo(y)) == -sgn(y.compareTo(x))(where sgn() is defined as -1, 0, or 1 based on the sign). This includes throwing an exception in either direction if the two are not comparable; hence,compareTo(null)should always throw an Exception.You should also ensure transitivity, in two forms:
x.compareTo(y) > 0 && y.compareTo(z) > 0impliesx.compareTo(z) > 0; andx.compareTo(y) == 0impliesx.compareTo(z) == y.compareTo(z).- Specified by:
compareToin interfacejava.lang.Comparable
getLeftOptions
public java.util.Collection getLeftOptions()
- Description copied from interface:
Game - Gets a
Collectioncontaining all left options of this game.- Specified by:
getLeftOptionsin interfaceGame
getRightOptions
public java.util.Collection getRightOptions()
- Description copied from interface:
Game - Gets a
Collectioncontaining all right options of this game.- Specified by:
getRightOptionsin interfaceGame
getInverse
public Game getInverse()
- Description copied from interface:
Game - Gets the inverse of this game.
- Specified by:
getInversein interfaceGame
simplify
public Game simplify()
- Description copied from interface:
Game - Calculates a simplified form of this game. The simplified form need not
be canonical or "simplest." This method is used by the Combinatorial
Game Suite interface to determine the best way to display output. As
an example, the ExplicitGame given by
{1,1/2|-1}would be simplified to the CanonicalGame given by{1|-1}.There are two key differences between
simplifyand canonicalize 55 . First,canonicalizealways returns aCanonicalGame, whilesimplifymay return any game at all. Second,simplifyis called automatically by the Combinatorial Game Suite user interface when output is ready to be displayed, whilecanonicalizeis usually called only by explicit user request. For this reason, it is advisable forsimplifyto execute rapidly in most circumstances.It is permissible for
simplifyto returnthiswhen no obvious simplifications are possible, but it should never returnnull.
simplifyExpression
public Game simplifyExpression(int simplifyType, Game[] args)
- Description copied from interface:
Game - Calculates a simplified form of the indicated expression. This method
is for advanced users and is rarely needed by plug-ins. Most
implementations of
Gameshould simply returnnull.- Specified by:
simplifyExpressionin interfaceGame
isShortGame
public boolean isShortGame()
- Description copied from interface:
Game - Returns
trueif this game is a short game.- Specified by:
isShortGamein interfaceGame
canonicalize
public CanonicalGame canonicalize() throws NotShortGameException
- Description copied from interface:
Game - Calculates the canonical form of this game. The canonical form is the
unique CanonicalGame that is canonically equal to this game.
- Specified by:
canonicalizein interfaceGame
getG
public Game getG()
- Gets the component of this game.
toString
public java.lang.String toString()
- Description copied from class:
java.lang.Object - Convert this Object to a human-readable String.
There are no limits placed on how long this String
should be or what it should contain. We suggest you
make it as intuitive as possible to be able to place
it into System.out.println() 55
and such.
It is typical, but not required, to ensure that this method never completes abruptly with a java.lang.RuntimeException.
This method will be called when performing string concatenation with this object. If the result is
null, string concatenation will instead use"null".The default implementation returns
getClass().getName() + "@" + Integer.toHexString(hashCode()).
|
|||||||||
| Home >> All >> [ cgsuite overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC
cgsuite.UnsimplifiedGame