Latin Square

Latin Square

Assignment Overview
This assignment will give you more experience on the use of both loops and if statements. You are going to write a program that asks the user for two numbers to create and print a Latin Square.

Background
A Latin Square is an n*n table filled with n different symbols in such a way that each symbol occurs exactly once in each row and exactly once in each column (see http://en.wikipedia.org/wiki/L… ). For example, two possible Latin Squares of order 6:
1 2 3 4 5 6
2 3 4 5 6 1
3 4 5 6 1 2
4 5 6 1 2 3
5 6 1 2 3 4
6 1 2 3 4 5
3 4 5 6 1 2
4 5 6 1 2 3
5 6 1 2 3 4
6 1 2 3 4 5
1 2 3 4 5 6
2 3 4 5 6 1
Obviously, the top-left numbers are 1 and 3 respectively.

Project Description / Specification
Your program will ask user to input two numbers. The first number is ***** order of square; the second one is the top-left number of the square. Note that the second number should be between 1 and the first number, so your program should check this situation. Then, your program will print the corresponding Latin Square. Here is some example output:

Deliverables
program3.py -- your source code solution (remember to include your name, the date, program number and comments).Getting Started
Break the problem down into smaller parts. For example:
The range function and the % (modulus) operator are both useful for this project.
Can you generate a sequence beginning with 1 of the appropriate order? A sequence of order 5 would be 1 2 3 4 5
Can you generate a sequence of the appropriate order beginning with a number other than 1? For a sequence of order 5 starting with 3 would be 3 4 5 1 2
Can you generate the second in the Latin sequence? For example, starting with 1 2 3 4 the next sequence would be 2 3 4 1second program
Python Program 4Assignment Overview
This assignment will give you more experience with while loops and if statements, and give you an opportunity to work with strings.
The Problem
Scientists measure how closely related a species is by looking at the DNA sequences for key proteins and seeing how similar/dissimilar they are. If the two sequences of DNA are essentially the same, the two species are considered to be evolutionarily closer since there is a relationship between changes and time. This process is called sequence alignment.

Consider the two strings of DNA below (completely made up, miss matches in red):Species 1: AATAACGAAA
Species 2: AAAACGAAAAA scientist can change the alignment by assuming that an insertion or deletion, of one of the bases has occurred. They could make such a change, called an indel for short, to see if it improves the alignment:

Species 1: AATAACGAAA-
Species 2: AA-AACGAAAA

Assuming two indels, marked as two dashes(-), the alignment is greatly improved. The scientist would assume that two changes happened, one change in each species.

While complex algorithms exist to do sequence alignment, it is also useful to support a researcher and allow them to do an alignment by hand.

Program Specifications::
1. You will prompt for two strings. The strings can have any characters you like, but to be "biological" it should consist of: "A", "T", "C", "G". The strings do not have to be of the same length.
2. You will then prompt for one of 3 commands:
a. "a" for add. Add an indel
b. "d" for delete. Delete an indel
c. "s" for score. Score the present alignment
d. "q" for quit. Stop the process.
3. Adding an Indel. When you add an indel, you must prompt for two pieces of information:
a. which string to change
b. at what index (starting at 0) do you wish to place the indel (placement is before the given index, Error if the index is out of range).
The string should then be modified and a dash(-) added.
4. Delete an Indel: If you can add an indel, you should be able to delete it if it doesn't do what you want. Again, you must prompt for two pieces of information
a. which string to change
b. the index (starting at 0) to delete the indel. It is an Error to delete a character that is not an indel.
5. Scoring. You will report the number of matches and the number of mismatches.
a. Any indel is automatically a mismatch.
b. If one string is shorter than the other, the shorter string is filled out with indels.
c. After you score, you print both strings.
i. Matching characters are printed in lower case. If the user entered upper case letters, you convert them to lower case on a match.
ii. All mismatches are printed in upper case.
iii. Indels are printed as dashes.

Deliverables
Turn in proj04.py be sure to use the specified file name, i.e. program4.py. Make sure to include your name and the assignment number as well as the date in the comments. Be sure to add necessary comments to explain what you are doing.

Assignment Notes:
1. As before, try to do this in pieces:
a. get the command loop working
b. get individual commands to work (scoring is the most work, save it till last)
2. Printing the string is best done by creating.

 
Powered by