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

java.lang.Objectcgsuite.ProductGame
- All Implemented Interfaces:
- java.lang.Comparable, Game, java.io.Serializable
- public class ProductGame
- extends java.lang.Object
- implements Game, java.lang.Comparable
- extends java.lang.Object
The Norton product of two games. If G is an integer, then
G.U is simply equal to the sum of G copies of
U. Otherwise, it is equal to the Norton product of
G by U as defined in Winning Ways.
In particular, G.↑ yields a game of atomic weight
G, for any G.
Note that G.U will not behave as expected unless
G is an integer or U > 0.
- Version:
- 0.1.1
| Field Summary | |
private Game |
g
|
private Game |
u
|
| 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 | |
ProductGame(Game g,
Game u)
Constructs a new ProductGame with the specified game and
unit. |
|
| 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 first term of this product. |
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. |
Game |
getU()
Gets the unit of this product. |
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
u
private Game u
| Constructor Detail |
ProductGame
public ProductGame(Game g, Game u)
- Constructs a new
ProductGamewith the specified game and unit.
| 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
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
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
getG
public Game getG()
- Gets the first term of this product.
getU
public Game getU()
- Gets the unit of this product.
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.ProductGame