# Sage and Combinatorics

Here are some resources for learning how to use Sage, especially as a method of doing research in combinatorics.

Iowa State Sage Server (ask Steve Butler for access)
Sage Math Cloud (For using Sage in the cloud)

Sage Tutorial
Python Tutorial
2D Plotting
Matrices
Undirected Graphs
Directed Graphs
Graph Plotting
Common Graphs
Nathann Cohen's Tour of Graphs
Mixed Integer Linear Programming Tutorial

### Sage Worksheet Examples

Sage Basics : The worksheet from the GRWC presentation, August 2014.
Sage Basics : The worksheet from the EGR presentation, January 2015.
Drawing : Examples of how to plot things in Sage.
Sets : Generate sets, combinations, and permutations.
Borospherene : Investigate the graph of the recently discovered "Boron buckyball"
Generation : Generate graphs, digraphs, and posets, up to isomorphism.
LPExample : Build and run a linear program.
TSP : Solve and visualize the traveling salesman problem on a grid.

### Sage Cheatsheet

Keys and Clicks
SHIFT+ENTER : Evaluate
CLICK Above Box : Create new box
SHIFT+CLICK Above Box : Create a text box
CTRL+SPACE : List completions of variables, functions, or list documentation for method.

Special Actions
Interrupt : Try to kill the current action in progress (may not work!)
Restart Worksheet : Kill the current action and clear all memory. Start from scratch.

Programmatic Things
Comment Marker: #
End-of-Line: ; (Optional)
Tuple (not editable): t = (0, 1, 2, 3)
List (editable): l = [0, 1, 2, 3]
Dictionary (editable): d = {}
String (not editable): s = "This is a string!"

If Statements
if G.is_hamiltonian():
print "It is hamiltonian!"
elif G.is_planar():
print "It is planar, not hamiltonian!"
else:
print "It is neither hamiltonian or planar!"


For Loops
for i in range(n):
print i, i+i, i*i


for G in graphs(n):
G.show()

Functions
def MyFunction(x,y):
z = (x-y)*(x-y)
return z;

print MyFunction(3, 8);

Creating Objects
Graph: G = Graph(n)
Digraph: D = DiGraph(n)
Matrix: M = matrix(m,n)