Transforming Mice into Men Nelson Series Talk

advertisement
Transforming Mice into Men
Nelson Series Talk
Wed, 9/15
Pavel Pevzner, compuatational
biologist and gunslinger, UCSD
7:00 pm in Galileo Macalister
Despite some differences in appearance and habits, men and
mice are genetically very similar. In a pioneering paper, Nadeau
and Taylor, 1984 estimated that surprisingly few genomic
rearrangements (about 200) have happened since the divergence
of human and mouse 75 million years ago. The genomic
sequences of human and mouse provide evidence for a larger
number of rearrangements than previously thought and shed
some light on previously unknown features of mammalian
evolution. In particular, they provide evidence for extensive reuse of breakpoints from the same relatively short regions and
reveal a great variability in the rate of micro-rearrangements
along the genome. Our analysis also implies the existence of a
large number of very short "hidden" synteny blocks that were
invisible in comparative mapping data and were ignored in
previous studies of chromosome evolution. These results suggest
a new model of chromosome evolution that postulates that
breakpoints are chosen from relatively short fragile regions that
have much higher propensity for rearrangements than the rest of
the genome.
CS 5 Reminders
• HW 1 - reading wk 1’s and wk 2’s online text
• HW 2 - 4 problems
due Sun., 9/12
Mon., 9/13
@ 11:59 pm
M,T sections W,Th sections
Hw2Pr1) Writing, compiling, and running the “Hello, World!” program
Last time
Hw2Pr2) Abstract(ion) Art
Hw2Pr3) A printing puzzle...
Hw2Pr4) Artificial Intelligence?
Grading
This time
80% of each Hw is for correctness
2/10 or 3/15 points for commenting/style
0 points if the code does not compile!
all points if it completely works
a few points off if it does not handle
some of the tests...
0 points if it doesn’t mostly work
CS 5 Help!
• Looking for HW help? There are tutors available...
Fri., Sat., Sun. afternoons
Sun., Mon. evenings
both in Parsons and Linde Activities
Center (LAC) computer labs
see the CS 5 web page for a
readable version of this list…
• Friday 8:00 am -- optional recitation section -- Q & A
• Email/call me if you have concerns...
dodds@cs.hmc.edu, 7-8990
Steps for handling HW problems
• Download a new HW zip file
• Unzip it
(easiest way: right-click then choose Winzip -> Extract to here)
• Read the problem (!)
CS5hw.jcw
• Write the new program
• Test it thoroughly
Double-click the CS5hw.jcw
file to start JCreator
Submit only CS5App.java -- it
will have this icon on the PC.
This is your source code!
• Submit the CS5App.java file in the source_code folder
• Check to be sure that your code appears after submitting.
[optional]
• Download and replace/copy into CS5App.java elsewhere
• Resubmit anytime up to the deadline.
Setting up on your own machine
Java a programming language available from Sun Microsystems, Inc.
j2sdk1.4.1_05 or j2sdk1.4.2 or jdk1.3.1_09 or ...
will be in your C:\ drive at the top level
comes supplied with all Mac OS X systems
available for almost all operating systems
j2se
j2ee
javascript
java editions
diff. language
JCreator a code editor with LOTS of helpful buttons (for the PC)
needs to know where java is (easiest way to do this == reinstall)
Both available for download from
www.cs.hmc.edu/~dodds/cs5/install.html
XCode an excellent code editor that comes with Mac OS X v. 10.3
Today
• What this guy has to say about CS 5
• Variables -- the computer science constant
John Searle
• *%+/+-%*%*! :
Java or a frustrated programmer?
• Talking back: Output and input with H
Printing in Java
Hw2Pr1) Writing, compiling, and running the “Hello, World!” program
Hw2Pr2) Abstract(ion) Art Graphics
Hw2Pr3) A printing puzzle...
Text output problems...
Hw2Pr4) Artificial Intelligence?
To print:
Java code:
26
1
L of the A
W on a U
\ : Not to be taken literally
How would you print this ?
200 = “D” for “PG”
How about \no/ ?
rules!
Thinking like a machine...
John Searle’s view of a computer’s mind.
This person runs around
looking up appropriate outputs
to various inputs given in a
foreign language.
understanding ?
This is all that computers
would be doing if they were
conversing with us… .
the computer
Achieving Intelligence
Hw2Pr4) Artificial Intelligence?
This person runs around
looking up appropriate outputs
to various inputs given in a
foreign language.
Perhaps we’re trying TOO
hard
to
understanding ?
achieve human-level behavior!
This is all that computers
would be doing if they were
conversing with us… .
the computer
A look inside
Storage
Workspace
...
Variables ~ Real baggage
Storage
value
type:
name:
value
type:
name:
Workspace
value
type:
name:
...
Variables == bags (or boxes)
Each variable is labeled with 2 things:
type
name
Each variable may (or may not) have a value
This value is the contents of the box…
Variables
String s;
declares a variable with
• name s
• type
String
String myRidiculouslyLongStringVariableName;
inner casing
declares a variable with
• name
myRidiculouslyLongStringVariableName
• type
String
Packing one’s bags
public static void main(String[] args)
{
String s;
String my;
}
Both of these boxes my and s are empty!
Packing one’s bags
public static void main(String[] args)
{
String s;
String my;
s = “hark… a shark!”;
my = “t”;
}
• type
• name
String
s
• type
• name
String
my
=
“set equal to”
public static void main(String[] args)
{
String s;
String my;
s = “hark… a shark!”;
my = “t”;
Assignment statements
s = “ha”;
s = my;
}
Declare vs. define
public static void main(String[] args)
{
String s;
declaring
String my;
}
two variables
s = “hark… a shark!”;
my = “t”;
defining the variables
s = “ha”;
s = my;
redefining the variables
All boxed up && ready to go
public static void main(String[] args)
{
String s = “ha”;
declaring && defining
String my = “t”;
H.pl(s);
H.pl(“s”);
H.pl(s + “mle” + my);
}
+
concatenates strings
public static void main(String[] args)
{
String s = “ha”;
String my = “t”;
H.pl(s + s + s);
// use s twice to print “hark… a shark!”
H.pl(s + “ ” + s + “ - ” +
my + s + my + “ ” + s + my + “!”);
}
Why use variables at all?
INPUT
H.nl();
returns a String from the user
What does this mean?
It means that you can put H.nl() ’s string
into a String variable!
String s;
s = H.nl();
H.pl(s);
// storing a line of user input
// printing that line
Another way to look at it:
H.nl() can be used anywhere “hi” can…
An example to digest...
Hw2Pr4) Artificial Intelligence?
public static void main(String[] args)
{
H.pl(“Hello. Please type the name of ” +
“your favorite Platt food.”);
H.nl();
H.pl(“Aha! I’ve tricked you. That ” +
“ can’t be your favorite\n” +
“Platt food, because Platt food\n” +
“does not exist!”);
}
keep lines to less than 80 chars long
An example to digest...
public static void main(String[] args)
{
H.pl(“Hello. Please type the name of ” +
“your favorite Platt food.”);
H.nl();
H.pl(“Aha! I’ve tricked you. That ” +
“ can’t be your favorite
Platt food, because Platt food\n” +
“does not exist!”);
Strings can not
be spread over
multiple lines!
}
But what if we want to repeat the user’s input?
An example to digest...
public static void main(String[] args)
{
declare a variable -- and it’s
always good to initialize it
String favDish = “”;
H.pl(“Hello. Please type the name of ” +
“your favorite Platt food.”);
favDish = H.nl();
use the variable by assigning something to
it or printing it or however you’d like…
H.pl(“Aha! I’ve tricked you. ” + favDish +
“ can’t be your favorite\n” +
“Platt food, because Platt food\n” +
“does not exist!”);
}
Style Matters...
handling
lots of
text
or
H.pl(“Aha! I’ve tricked you. ” + favDish
“ can’t be your favorite\n” +
“ Platt food, because Platt food\n” +
“ does not exist!”);
H.p(“Aha! I’ve tricked you. ” + favDish);
H.pl(“ can’t be your favorite”);
H.pl(“ Platt food, because Platt food”);
H.pl(“ does not exist!”);
keep lines to less than 80 chars long
• be sure you consistently indent within code blocks
• be sure you line up matching punctuation (curly braces)
• be sure to have a complete start-of-file comment
• use 1-line comments to explain complicated code
Other types...
int x;
declares a variable with • name x
• type int
with an integer value …, -2, -1, 0, 1, 2, ...
double d;
declares a variable with • name d
• type double
with a double-precision value
-17.0, 3.14159, etc.
Actual computation !
public static void main(String[] args)
{
int x = 5;
double d = 1957.75;
H.pl( x + x );
H.pl( “CS ” + x );
H.pl( “HMC opened in ” + d );
x + x * d + ( d % x );
}
// What ?
that’s what I’m here for...
Java Operations
+
/
addition with numbers; concatenation with strings
subtraction
division
10/2.5
10/3
If both sides are ints, so is the
result -- with rounding toward zero.
*
%
multiplication
mod
10%3
11%3
11.5%3
12%3
13%7
(remainder)
Not your type ?
Suppose you have the variables
int x = 5;
double d = 1957.75;
How do you print out the following using x and d?
5.0
HMC opened in 1957
Casting
(int)
The expressions
cast values of one type to another.
(double)
(int)10.999 produces 10
int x = 5;
(double)x produces 5.0
but x remains 5 !
“Quiz”
int x = 5;
double d = 42.0;
Names:
Using only the two variables above, along with nonnumeric Strings,
write code to print these four things (the first one is done for you…):
nada is 0
Answers:
H.pl(“nada is ” + (x-x));
“two” is 2
one\two is 0.5
10000
Optional Ex. Cr.: Try to use the fewest opertions possible…
Hw2Pr3) A printing puzzle...
/-------------------------------------\
| Welcome to the frugal arithmetician |
\-------------------------------------/
The goal is to print several numbers using two variables:
an integer, x, which equals 5
a double, d, which equals 42.0
along with the operators +, -, *, /, %, (int), and (double) .
Five is 5, and ten is 10.
"one"
is 1
"three"
is 3
you're "young" til 36
"one-third"
is 0.33
“ten thousand" is 10000
"pi"
is 3.14159
/-------\
| Bye ! |
\-------/
Print exactly this message.
but with only nonnumeric Strings and
x = 5;
the two variables int
double d = 42.0;
and without digit-by-digit String addition!
Hw2Pr3) A printing puzzle...
10000
H.p(x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+
x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x);
Extra Credit: In as few operations as possible!
What’s really going on
int x = 5;
double d = 42.0;
H.pl(“x+d is ” + x + d);
String + int
creates a String
“x+d is 5”
String + double
creates a String
“x+d is 542.0”
parentheses are important !
Maybe a little less precision…
Java’s default is maximum precision:
H.pl( 5/3.0 );
1.6666666666666667
H has some built-in formatting commands:
H.pl( H.fmt(5/3.0) );
1.667
H.pl( H.fmt(5/3.0,4) );
1.6667
What Java is thinking *%*/?!
double d = 5/3.0;
H.fmt(d,4);
H.pl( “five-thirds is ” + d );
five-thirds is 1.6666666666666667
the only way to change a variable is with the = operator!
but we don’t want to change d, we only want to change the String that’s printed!
H.pl( “five-thirds is ” + H.fmt(d,4) );
five-thirds is 1.6667
H reference
Output
H.pl(x)
H.pl()
H.p(x)
prints x followed by a newline.
prints just a newline.
prints just x, with no newline following
H.fmt(s)
returns a String for storing or printing: 3 places after the decimal point
H.fmt(s,p)
returns a String for storing or printing: p places after the decimal point
H.fmt(s,p,w)
returns a String for storing or printing: w is the minimum width of the output String
H.fmt(s,p,w,HMCOutput.RIGHT)
same as above, but puts the number to the right of the output
String. Also available: HMCOutput.CENTER and LEFT.
Input
H.ni()
H.nw()
H.nd()
H.nl()
H.nc()
H.nanyc()
returns the next integer the user types or has typed.
returns the next word the user types or has typed as a String.
returns the next double the user types or has typed.
returns the next line of text the user types as a String.
returns the next char of text the user types as a char.
returns the next char, even if it’s whitespace. Good for pauses: “Hit Enter to continue...”
This list (and more) available from http://www.cs.hmc.edu/courses/2004/fall/cs5/HMCSupport.html
PC: A - J
Lab Today
Mac: M - Z
Hw2Pr1) Writing, compiling, and running the “Hello, World!” program
Last time
Hw2Pr2) Abstract(ion) Art
Hw2Pr3) A printing puzzle...
Hw2Pr4) Artificial Intelligence?
This time
New accounts (should be!) ready at CIS.
Building entry code:
Lab entry code:
But not for
Monday’s
section…
Abstraction
Artists are mystics
rather than rationalists.
They leap to conclusions
that logic cannot reach.
-- Sol LeWitt,
conceptual artist
Simplicity does not precede
complexity, but follows it.
-- Alan Perlis,
creator of the first compiler
Abstract(ion) Art
class CS5App
{
public static void main(String[] args)
{
GrCanvas art = G.createCanvas(); // the window (canvas)
art.add(new GrRectangle(1,3,6,2,Color.red)); // what ??
}
}
Abstract Art
10 x 10 grid
art.add(GrRectangle(1,3,6,2,Color.red));
Abstract Art
10 x 10 grid
art.add(GrRectangle(1,3,6,2,Color.red));
Abstract Art
10 x 10 grid
art.add(GrRectangle(1,3,6,2,Color.red));
art.add(GrRectangle(
));
art.add(GrRectangle(
));
Assignment 2, Problem 2
Create the following “work”:
art.add(new
art.add(new
art.add(new
art.add(new
GrRectangle(…));
GrRectangle(…));
GrRectangle(…));
GrRectangle(…));
…
Computer Science
• Representing it -- what’s convenient and available ?
Information • Applying it -- graphics, robotics, vision, AI
• Measuring it -- what’s possible and what’s not
How many drawing
commands are
really necessary ?
Computer Science
• Representing it -- what’s convenient and available ?
Information • Applying it -- graphics, robotics, vision, AI
• Measuring it -- what’s possible and what’s not
How many drawing
commands are
really necessary ?
23 kb file
31 kb file
In a nutshell...
The purpose of computing
is insight, not numbers.
– Richard Hamming
Programming is deceptively easy.
– thanks to Steven Pinker
“Quiz”
• Name
• Birthdate
• A place you consider home
• Your favorite _________ is _________.
• Your least favorite ________ is _________.
• Email and School (if not an HMC student)
Be sure to have
a photo taken !
1
0.5
area
0
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
1
0.5
0
xmin = 1.0
xmax = 10.0
nsteps = 9
Hw2Pr3) A printing puzzle...
1000
H.pl(x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x
+x+x+x+x+x+x+x+x+x+x+x+x);
Ex. Cr. In as few operations as possible!
Download