├── Week1 ├── credit │ └── credit.c ├── hello │ └── hello.c ├── mario-more │ └── mario.c ├── readme.md └── readme_en.md ├── Week2 ├── readability │ └── readability.c ├── readme.md ├── readme_en.md ├── scrabble │ └── scrabble.c └── substitution │ └── substitution.c ├── Week3 ├── plurality │ └── plurality.c ├── readme.md ├── readme_en.md ├── sort │ └── answers.txt └── tideman │ └── tideman.c ├── Week4 ├── filter-more │ ├── Makefile │ ├── bmp.h │ ├── filter.c │ ├── helpers.c │ └── helpers.h ├── readme.md ├── readme_en.md ├── recover │ └── recover.c └── volume │ └── volume.c ├── Week5 ├── inheritance │ └── inheritance.c ├── readme.md ├── readme_en.md └── speller │ ├── Makefile │ ├── dictionary.c │ ├── dictionary.h │ └── speller.c ├── Week6 ├── dna │ ├── dna.py │ └── sequences │ │ ├── 1.txt │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ ├── 14.txt │ │ ├── 15.txt │ │ ├── 16.txt │ │ ├── 17.txt │ │ ├── 18.txt │ │ ├── 19.txt │ │ ├── 2.txt │ │ ├── 20.txt │ │ ├── 3.txt │ │ ├── 4.txt │ │ ├── 5.txt │ │ ├── 6.txt │ │ ├── 7.txt │ │ ├── 8.txt │ │ └── 9.txt ├── readme.md ├── readme_en.md ├── sentimental-credit │ └── credit.py ├── sentimental-hello │ └── hello.py ├── sentimental-mario-more │ └── mario.py ├── sentimental-readability │ └── readability.py └── world-cup │ └── tournament.py ├── Week7 ├── fiftyville │ ├── answers.txt │ └── log.sql ├── movies │ ├── 1.sql │ ├── 10.sql │ ├── 11.sql │ ├── 12.sql │ ├── 13.sql │ ├── 2.sql │ ├── 3.sql │ ├── 4.sql │ ├── 5.sql │ ├── 6.sql │ ├── 7.sql │ ├── 8.sql │ └── 9.sql ├── readme.md ├── readme_en.md └── songs │ ├── 1.sql │ ├── 2.sql │ ├── 3.sql │ ├── 4.sql │ ├── 5.sql │ ├── 6.sql │ ├── 7.sql │ └── 8.sql ├── Week8 ├── homepage │ ├── index.html │ ├── myscript.js │ ├── styles.css │ └── w3.css ├── readme.md ├── readme_en.md └── trivia │ ├── index.html │ └── styles.css ├── Week9 ├── birthdays │ ├── app.py │ ├── birthdays.db │ ├── static │ │ └── styles.css │ └── templates │ │ └── index.html ├── finance │ ├── __pycache__ │ │ ├── app.cpython-38.pyc │ │ └── helpers.cpython-38.pyc │ ├── app.py │ ├── finance.db │ ├── helpers.py │ ├── requirements.txt │ ├── static │ │ └── styles.css │ └── templates │ │ ├── apology.html │ │ ├── buy.html │ │ ├── history.html │ │ ├── home.html │ │ ├── layout.html │ │ ├── login.html │ │ ├── quote.html │ │ ├── register.html │ │ └── sell.html ├── readme.md └── readme_en.md ├── images └── p1.png ├── readme.md └── readme_en.md /Week1/credit/credit.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(void) 5 | { 6 | //get input 7 | long num = get_long("Number: "); 8 | 9 | //calc 10 | int pointer = 0, digit = 0, digitbuf = 0, sum = 0; 11 | while (num > 0) 12 | { 13 | digitbuf = digit; 14 | digit = num % 10; 15 | pointer++; 16 | if (pointer % 2 == 0) 17 | { 18 | sum += (digit * 2) % 10 + (digit * 2) / 10; 19 | } 20 | else 21 | { 22 | sum += digit; 23 | } 24 | num = num / 10; 25 | } 26 | 27 | //output 28 | string cardtype = "INVALID"; 29 | if (sum % 10 == 0) 30 | { 31 | switch (digit) 32 | { 33 | case 3: 34 | if (pointer == 15 && (digitbuf == 4 || digitbuf == 7)) 35 | { 36 | cardtype = "AMEX"; 37 | } 38 | break; 39 | 40 | case 4: 41 | if (pointer == 13 || pointer == 16) 42 | { 43 | cardtype = "VISA"; 44 | } 45 | break; 46 | 47 | case 5: 48 | if (pointer == 16 && (digitbuf > 0 && digitbuf < 6)) 49 | { 50 | cardtype = "MASTERCARD"; 51 | } 52 | break; 53 | 54 | default: 55 | break; 56 | } 57 | } 58 | printf("%s\n", cardtype); 59 | } -------------------------------------------------------------------------------- /Week1/hello/hello.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(void) 5 | { 6 | string name = get_string("What's your name? "); 7 | printf("hello, %s\n", name); 8 | } -------------------------------------------------------------------------------- /Week1/mario-more/mario.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | void print_slash(int height) 5 | { 6 | for (int i = 0; i < height; i++) 7 | { 8 | for (int j = 0; j < height - 1 - i; j++) 9 | { 10 | printf(" "); 11 | } 12 | for (int j = 0; j <= i; j++) 13 | { 14 | printf("#"); 15 | } 16 | printf(" "); 17 | for (int j = 0; j <= i; j++) 18 | { 19 | printf("#"); 20 | } 21 | printf("\n"); 22 | } 23 | } 24 | 25 | 26 | int main(void) 27 | { 28 | int height; 29 | do 30 | { 31 | height = get_int("please enter height\n"); 32 | } 33 | while (height < 1 || height > 8); 34 | print_slash(height); 35 | } -------------------------------------------------------------------------------- /Week1/readme.md: -------------------------------------------------------------------------------- 1 | # Week 1 2 | 3 | credit的数字算法挺有意思,用到了整数的位操作技巧。 -------------------------------------------------------------------------------- /Week1/readme_en.md: -------------------------------------------------------------------------------- 1 | # Week 1 2 | 3 | The digit's algorithm in credit is rather interesting, using the bit operating technique of integer. -------------------------------------------------------------------------------- /Week2/readability/readability.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | int count_letters(string text); 8 | int count_words(string text); 9 | int count_sentences(string text); 10 | 11 | int main(void) 12 | { 13 | string text = get_string("Text: "); 14 | int letters = count_letters(text); 15 | int words = count_words(text); 16 | int sentences = count_sentences(text); 17 | float L = (float)letters / words * 100; 18 | float S = (float)sentences / words * 100; 19 | int index = round(0.0588 * L - 0.296 * S - 15.8); 20 | if (index > 16) 21 | { 22 | printf("Grade 16+\n"); 23 | } 24 | else if (index < 1) 25 | { 26 | printf("Before Grade 1\n"); 27 | } 28 | else 29 | { 30 | printf("Grade %d\n", index); 31 | } 32 | } 33 | 34 | int count_letters(string text) 35 | { 36 | int counts = 0; 37 | for (int i = 0; i < strlen(text); i++) 38 | { 39 | if (isalpha(text[i])) 40 | { 41 | counts++; 42 | } 43 | } 44 | return counts; 45 | } 46 | 47 | int count_words(string text) 48 | { 49 | int counts = 1; 50 | for (int i = 0; i < strlen(text); i++) 51 | { 52 | if (text[i] == ' ') 53 | { 54 | counts++; 55 | } 56 | } 57 | return counts; 58 | } 59 | 60 | 61 | int count_sentences(string text) 62 | { 63 | int counts = 0; 64 | for (int i = 0; i < strlen(text); i++) 65 | { 66 | if (text[i] == '.' || text[i] == '!' || text[i] == '?') 67 | { 68 | counts++; 69 | } 70 | } 71 | return counts; 72 | } -------------------------------------------------------------------------------- /Week2/readme.md: -------------------------------------------------------------------------------- 1 | # Week 2 2 | 3 | readability的三个函数遍历了三遍文本,这是效率较低的地方。但代码模板给定了三个函数的框架,应该是为了方便check50检查,同时写起来也更简单。 4 | 5 | scrabble和substitution都有字符映射也即加解密的思想,有点意思。对有C基础的同学而言题目难度不大。 -------------------------------------------------------------------------------- /Week2/readme_en.md: -------------------------------------------------------------------------------- 1 | # Week 2 2 | 3 | The three functions in readability walk through the text three times, resulting in inefficiency. But the framework was given three functions in it, probably for check50 and simpler design. -------------------------------------------------------------------------------- /Week2/scrabble/scrabble.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | // Points assigned to each letter of the alphabet 7 | int POINTS[] = {1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10}; 8 | 9 | int compute_score(string word); 10 | 11 | int main(void) 12 | { 13 | // Get input words from both players 14 | string word1 = get_string("Player 1: "); 15 | string word2 = get_string("Player 2: "); 16 | 17 | // Score both words 18 | int score1 = compute_score(word1); 19 | int score2 = compute_score(word2); 20 | 21 | if (score1 > score2) 22 | { 23 | printf("Player 1 wins!\n"); 24 | } 25 | else if (score1 < score2) 26 | { 27 | printf("Player 2 wins!\n"); 28 | } 29 | else 30 | { 31 | printf("Tie!\n"); 32 | } 33 | } 34 | 35 | int compute_score(string word) 36 | { 37 | int length = strlen(word); 38 | int score = 0; 39 | for (int i = 0; i < length; i++) 40 | { 41 | if ('a' <= word[i] && word[i] <= 'z') 42 | { 43 | score += POINTS[word[i] - 'a']; 44 | } 45 | else if ('A' <= word[i] && word[i] <= 'z') 46 | { 47 | score += POINTS[word[i] - 'A']; 48 | } 49 | } 50 | return score; 51 | } 52 | -------------------------------------------------------------------------------- /Week2/substitution/substitution.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | string cipher(string plaintext, string key); 7 | int key_check(string key); 8 | const int ALPHA_SIZE = 26; 9 | 10 | int main(int argc, string argv[]) 11 | { 12 | //check number of arguments 13 | if (argc != 2) 14 | { 15 | printf("Usage: ./substitution key\n"); 16 | return 1; 17 | } 18 | 19 | string key = argv[1]; 20 | 21 | //set key to uppercase 22 | for (int i = 0; i < strlen(key); i++) 23 | { 24 | key[i] = toupper(key[i]); 25 | } 26 | 27 | //key check 28 | switch (key_check(key)) 29 | { 30 | case 0: 31 | break; 32 | 33 | case 1: 34 | printf("Key must contain 26 characters.\n"); 35 | return 1; 36 | break; 37 | 38 | case 2: 39 | printf("Key character must be alphabetical.\n"); 40 | return 1; 41 | break; 42 | 43 | case 3: 44 | printf("Key character must be unique.\n"); 45 | return 1; 46 | break; 47 | 48 | default: 49 | break; 50 | } 51 | 52 | //getstring 53 | string plaintext = get_string("plaintext: "); 54 | 55 | //cipher 56 | string ciphertext = cipher(plaintext, key); 57 | 58 | //output 59 | printf("ciphertext: %s\n", ciphertext); 60 | return 0; 61 | } 62 | 63 | //check if the key is valid 64 | int key_check(string key) 65 | { 66 | //length check 67 | if (strlen(key) != ALPHA_SIZE) 68 | { 69 | return 1; 70 | } 71 | 72 | //check if is alphabetical 73 | for (int i = 0; i < ALPHA_SIZE; i++) 74 | { 75 | if (isalpha(key[i]) == 0) 76 | { 77 | return 2; 78 | } 79 | } 80 | 81 | //uniqueness check 82 | for (int i = 0; i < ALPHA_SIZE - 1; i++) 83 | { 84 | for (int j = i + 1; j < ALPHA_SIZE; j++) 85 | { 86 | if (key[i] == key[j]) 87 | { 88 | return 3; 89 | } 90 | } 91 | } 92 | 93 | return 0; 94 | } 95 | 96 | //cipher 97 | string cipher(string plaintext, string key) 98 | { 99 | string ciphertext = plaintext; 100 | for (int i = 0; i < strlen(plaintext); i++) 101 | { 102 | if (isalpha(plaintext[i])) 103 | { 104 | if (isupper(plaintext[i])) 105 | { 106 | ciphertext[i] = key[plaintext[i] - 'A']; 107 | } 108 | else 109 | { 110 | ciphertext[i] = tolower(key[plaintext[i] - 'a']); 111 | } 112 | } 113 | } 114 | return ciphertext; 115 | } -------------------------------------------------------------------------------- /Week3/plurality/plurality.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | // Max number of candidates 6 | #define MAX 9 7 | 8 | // Candidates have name and vote count 9 | typedef struct 10 | { 11 | string name; 12 | int votes; 13 | } 14 | candidate; 15 | 16 | // Array of candidates 17 | candidate candidates[MAX]; 18 | 19 | // Number of candidates 20 | int candidate_count; 21 | 22 | // Function prototypes 23 | bool vote(string name); 24 | void print_winner(void); 25 | 26 | int main(int argc, string argv[]) 27 | { 28 | // Check for invalid usage 29 | if (argc < 2) 30 | { 31 | printf("Usage: plurality [candidate ...]\n"); 32 | return 1; 33 | } 34 | 35 | // Populate array of candidates 36 | candidate_count = argc - 1; 37 | if (candidate_count > MAX) 38 | { 39 | printf("Maximum number of candidates is %i\n", MAX); 40 | return 2; 41 | } 42 | for (int i = 0; i < candidate_count; i++) 43 | { 44 | candidates[i].name = argv[i + 1]; 45 | candidates[i].votes = 0; 46 | } 47 | 48 | int voter_count = get_int("Number of voters: "); 49 | 50 | // Loop over all voters 51 | for (int i = 0; i < voter_count; i++) 52 | { 53 | string name = get_string("Vote: "); 54 | 55 | // Check for invalid vote 56 | if (!vote(name)) 57 | { 58 | printf("Invalid vote.\n"); 59 | } 60 | } 61 | 62 | // Display winner of election 63 | print_winner(); 64 | } 65 | 66 | // Update vote totals given a new vote 67 | bool vote(string name) 68 | { 69 | for (int i = 0; i < candidate_count; i++) 70 | { 71 | if (strcmp(name, candidates[i].name) == 0) 72 | { 73 | candidates[i].votes++; 74 | return true; 75 | } 76 | } 77 | return false; 78 | } 79 | 80 | // Print the winner (or winners) of the election 81 | void print_winner(void) 82 | { 83 | int max = 0; 84 | for (int i = 0; i < candidate_count; i++) 85 | { 86 | if (candidates[i].votes > max) 87 | { 88 | max = candidates[i].votes; 89 | } 90 | } 91 | for (int i = 0; i < candidate_count; i++) 92 | { 93 | if (candidates[i].votes == max) 94 | { 95 | printf("%s\n", candidates[i].name); 96 | } 97 | } 98 | return; 99 | } -------------------------------------------------------------------------------- /Week3/readme.md: -------------------------------------------------------------------------------- 1 | # Week 3 2 | 3 | plurality很好地引入了投票这个概念。 4 | 5 | 作为没怎么接触过投票的同学,tideman的原理很有趣。 6 | 7 | 作为没怎么接触过数据结构的同学,矩阵和图这样的二维数据结构,以及用到的邻接矩阵都很有趣。 8 | 9 | 除去理解题目和框架,代码中最难的地方应该是判断图中是否存在环路。这是对课程所教的递归思想的一次巧妙应用,题目和课堂的引导恰到好处,是本课程中**非常优秀的一道作业题**。 10 | 11 | 代码思路:要寻找是否存在一个节点指向某一目标结点的路线,可寻找该节点指向的每个下一级节点是否有指向目标结点的路线,递归直到没有下一级节点或者找到路线。 12 | 13 | -------------------------------------------------------------------------------- /Week3/readme_en.md: -------------------------------------------------------------------------------- 1 | # Week 3 2 | 3 | Plurality properly introduced the concept of voting. 4 | 5 | As a student unfamiliar with voting, Tideman's principle is interesting. 6 | 7 | As a student unfamiliar with data structure, the 2-D data structure like matrix and graph, along with the adjacency matrix is interesting. 8 | 9 | Besides the comprehension of the problem's description and the coding framework, the hardest part of the code should be judging whether there's a loop in the graph. This is a brilliant application of the recursive thinking taught. The guidance from lectures and problem is perfect, which make this problem a **great** one in the course. 10 | 11 | Code thoughts: To find whether there's a route from a node to a given node, one can search every next node current node pointing to, and recurse until an end node or finding the route. -------------------------------------------------------------------------------- /Week3/sort/answers.txt: -------------------------------------------------------------------------------- 1 | sort1 uses: bubble sort 2 | 3 | How do you know?: fast in sorted while slow in random 4 | 5 | sort2 uses: merge sort 6 | 7 | How do you know?: fast in sorted and in random 8 | 9 | sort3 uses: selection sort 10 | 11 | How do you know?: slow in sorted and in random 12 | -------------------------------------------------------------------------------- /Week3/tideman/tideman.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | // Max number of candidates 6 | #define MAX 9 7 | 8 | // preferences[i][j] is number of voters who prefer i over j 9 | int preferences[MAX][MAX]; 10 | 11 | // locked[i][j] means i is locked in over j 12 | bool locked[MAX][MAX]; 13 | 14 | // Each pair has a winner, loser 15 | typedef struct 16 | { 17 | int winner; 18 | int loser; 19 | } 20 | pair; 21 | 22 | // Array of candidates 23 | string candidates[MAX]; 24 | pair pairs[MAX * (MAX - 1) / 2]; 25 | 26 | int pair_count; 27 | int candidate_count; 28 | 29 | // Function prototypes 30 | bool vote(int rank, string name, int ranks[]); 31 | void record_preferences(int ranks[]); 32 | void add_pairs(void); 33 | void sort_pairs(void); 34 | void lock_pairs(void); 35 | void print_winner(void); 36 | bool check_path(int start, int end); 37 | 38 | int main(int argc, string argv[]) 39 | { 40 | // Check for invalid usage 41 | if (argc < 2) 42 | { 43 | printf("Usage: tideman [candidate ...]\n"); 44 | return 1; 45 | } 46 | 47 | // Populate array of candidates 48 | candidate_count = argc - 1; 49 | if (candidate_count > MAX) 50 | { 51 | printf("Maximum number of candidates is %i\n", MAX); 52 | return 2; 53 | } 54 | for (int i = 0; i < candidate_count; i++) 55 | { 56 | candidates[i] = argv[i + 1]; 57 | } 58 | 59 | // Clear graph of locked in pairs 60 | for (int i = 0; i < candidate_count; i++) 61 | { 62 | for (int j = 0; j < candidate_count; j++) 63 | { 64 | locked[i][j] = false; 65 | } 66 | } 67 | 68 | pair_count = 0; 69 | int voter_count = get_int("Number of voters: "); 70 | 71 | // Query for votes 72 | for (int i = 0; i < voter_count; i++) 73 | { 74 | // ranks[i] is voter's ith preference 75 | int ranks[candidate_count]; 76 | 77 | // Query for each rank 78 | for (int j = 0; j < candidate_count; j++) 79 | { 80 | string name = get_string("Rank %i: ", j + 1); 81 | 82 | if (!vote(j, name, ranks)) 83 | { 84 | printf("Invalid vote.\n"); 85 | return 3; 86 | } 87 | } 88 | 89 | record_preferences(ranks); 90 | 91 | printf("\n"); 92 | } 93 | 94 | add_pairs(); 95 | sort_pairs(); 96 | lock_pairs(); 97 | print_winner(); 98 | return 0; 99 | } 100 | 101 | // Update ranks given a new vote 102 | bool vote(int rank, string name, int ranks[]) 103 | { 104 | for (int i = 0; i < candidate_count; i++) 105 | { 106 | if (strcmp(name, candidates[i]) == 0) 107 | { 108 | ranks[rank] = i; 109 | return true; 110 | } 111 | } 112 | return false; 113 | } 114 | 115 | // Update preferences given one voter's ranks 116 | void record_preferences(int ranks[]) 117 | { 118 | for (int i = 0; i < candidate_count - 1; i++) 119 | { 120 | for (int j = i + 1; j < candidate_count; j++) 121 | { 122 | preferences[ranks[i]][ranks[j]]++; 123 | } 124 | } 125 | return; 126 | } 127 | 128 | // Record pairs of candidates where one is preferred over the other 129 | void add_pairs(void) 130 | { 131 | for (int i = 0; i < candidate_count - 1; i++) 132 | { 133 | for (int j = i + 1; j < candidate_count; j++) 134 | { 135 | if (preferences[i][j] > preferences[j][i]) 136 | { 137 | pairs[pair_count].winner = i; 138 | pairs[pair_count].loser = j; 139 | pair_count++; 140 | } 141 | else if (preferences[i][j] < preferences[j][i]) 142 | { 143 | pairs[pair_count].winner = j; 144 | pairs[pair_count].loser = i; 145 | pair_count++; 146 | } 147 | } 148 | } 149 | return; 150 | } 151 | 152 | // Sort pairs in decreasing order by strength of victory 153 | void sort_pairs(void) 154 | { 155 | int max; 156 | pair temp; 157 | for (int i = 0; i < pair_count - 1; i++) 158 | { 159 | max = i; 160 | for (int j = i + 1; j < pair_count; j++) 161 | { 162 | if (preferences[pairs[j].winner][pairs[j].loser] > preferences[pairs[max].winner][pairs[max].loser]) 163 | { 164 | max = j; 165 | } 166 | } 167 | temp = pairs[i]; 168 | pairs[i] = pairs[max]; 169 | pairs[max] = temp; 170 | } 171 | return; 172 | } 173 | 174 | // Lock pairs into the candidate graph in order, without creating cycles 175 | void lock_pairs(void) 176 | { 177 | for (int i = 0; i < pair_count; i++) 178 | { 179 | if (check_path(pairs[i].loser, pairs[i].winner) == false) 180 | { 181 | locked[pairs[i].winner][pairs[i].loser] = true; 182 | } 183 | } 184 | return; 185 | } 186 | 187 | // Print the winner of the election 188 | void print_winner(void) 189 | { 190 | for (int i = 0; i < candidate_count; i++) 191 | { 192 | for (int j = 0; j < candidate_count; j++) 193 | { 194 | if (locked[j][i] == true) 195 | { 196 | break; 197 | } 198 | else if (j == candidate_count - 1) 199 | { 200 | printf("%s\n", candidates[i]); 201 | } 202 | } 203 | } 204 | return; 205 | } 206 | 207 | //check path from start to end 208 | bool check_path(int start, int end) 209 | { 210 | for (int i = 0; i < candidate_count; i++) 211 | { 212 | if (locked[start][i] == true) 213 | { 214 | if (i == end) 215 | { 216 | return true; 217 | } 218 | if (check_path(i, end) == true) 219 | { 220 | return true; 221 | } 222 | } 223 | } 224 | return false; 225 | } -------------------------------------------------------------------------------- /Week4/filter-more/Makefile: -------------------------------------------------------------------------------- 1 | filter: 2 | clang -ggdb3 -gdwarf-4 -O0 -Qunused-arguments -std=c11 -Wall -Werror -Wextra -Wno-gnu-folding-constant -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow -lm -o filter filter.c helpers.c 3 | -------------------------------------------------------------------------------- /Week4/filter-more/bmp.h: -------------------------------------------------------------------------------- 1 | // BMP-related data types based on Microsoft's own 2 | 3 | #include 4 | 5 | /** 6 | * Common Data Types 7 | * 8 | * The data types in this section are essentially aliases for C/C++ 9 | * primitive data types. 10 | * 11 | * Adapted from http://msdn.microsoft.com/en-us/library/cc230309.aspx. 12 | * See http://en.wikipedia.org/wiki/Stdint.h for more on stdint.h. 13 | */ 14 | typedef uint8_t BYTE; 15 | typedef uint32_t DWORD; 16 | typedef int32_t LONG; 17 | typedef uint16_t WORD; 18 | 19 | /** 20 | * BITMAPFILEHEADER 21 | * 22 | * The BITMAPFILEHEADER structure contains information about the type, size, 23 | * and layout of a file that contains a DIB [device-independent bitmap]. 24 | * 25 | * Adapted from http://msdn.microsoft.com/en-us/library/dd183374(VS.85).aspx. 26 | */ 27 | typedef struct 28 | { 29 | WORD bfType; 30 | DWORD bfSize; 31 | WORD bfReserved1; 32 | WORD bfReserved2; 33 | DWORD bfOffBits; 34 | } __attribute__((__packed__)) 35 | BITMAPFILEHEADER; 36 | 37 | /** 38 | * BITMAPINFOHEADER 39 | * 40 | * The BITMAPINFOHEADER structure contains information about the 41 | * dimensions and color format of a DIB [device-independent bitmap]. 42 | * 43 | * Adapted from http://msdn.microsoft.com/en-us/library/dd183376(VS.85).aspx. 44 | */ 45 | typedef struct 46 | { 47 | DWORD biSize; 48 | LONG biWidth; 49 | LONG biHeight; 50 | WORD biPlanes; 51 | WORD biBitCount; 52 | DWORD biCompression; 53 | DWORD biSizeImage; 54 | LONG biXPelsPerMeter; 55 | LONG biYPelsPerMeter; 56 | DWORD biClrUsed; 57 | DWORD biClrImportant; 58 | } __attribute__((__packed__)) 59 | BITMAPINFOHEADER; 60 | 61 | /** 62 | * RGBTRIPLE 63 | * 64 | * This structure describes a color consisting of relative intensities of 65 | * red, green, and blue. 66 | * 67 | * Adapted from http://msdn.microsoft.com/en-us/library/aa922590.aspx. 68 | */ 69 | typedef struct 70 | { 71 | BYTE rgbtBlue; 72 | BYTE rgbtGreen; 73 | BYTE rgbtRed; 74 | } __attribute__((__packed__)) 75 | RGBTRIPLE; 76 | -------------------------------------------------------------------------------- /Week4/filter-more/filter.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include "helpers.h" 6 | 7 | int main(int argc, char *argv[]) 8 | { 9 | // Define allowable filters 10 | char *filters = "begr"; 11 | 12 | // Get filter flag and check validity 13 | char filter = getopt(argc, argv, filters); 14 | if (filter == '?') 15 | { 16 | printf("Invalid filter.\n"); 17 | return 1; 18 | } 19 | 20 | // Ensure only one filter 21 | if (getopt(argc, argv, filters) != -1) 22 | { 23 | printf("Only one filter allowed.\n"); 24 | return 2; 25 | } 26 | 27 | // Ensure proper usage 28 | if (argc != optind + 2) 29 | { 30 | printf("Usage: ./filter [flag] infile outfile\n"); 31 | return 3; 32 | } 33 | 34 | // Remember filenames 35 | char *infile = argv[optind]; 36 | char *outfile = argv[optind + 1]; 37 | 38 | // Open input file 39 | FILE *inptr = fopen(infile, "r"); 40 | if (inptr == NULL) 41 | { 42 | printf("Could not open %s.\n", infile); 43 | return 4; 44 | } 45 | 46 | // Open output file 47 | FILE *outptr = fopen(outfile, "w"); 48 | if (outptr == NULL) 49 | { 50 | fclose(inptr); 51 | printf("Could not create %s.\n", outfile); 52 | return 5; 53 | } 54 | 55 | // Read infile's BITMAPFILEHEADER 56 | BITMAPFILEHEADER bf; 57 | fread(&bf, sizeof(BITMAPFILEHEADER), 1, inptr); 58 | 59 | // Read infile's BITMAPINFOHEADER 60 | BITMAPINFOHEADER bi; 61 | fread(&bi, sizeof(BITMAPINFOHEADER), 1, inptr); 62 | 63 | // Ensure infile is (likely) a 24-bit uncompressed BMP 4.0 64 | if (bf.bfType != 0x4d42 || bf.bfOffBits != 54 || bi.biSize != 40 || 65 | bi.biBitCount != 24 || bi.biCompression != 0) 66 | { 67 | fclose(outptr); 68 | fclose(inptr); 69 | printf("Unsupported file format.\n"); 70 | return 6; 71 | } 72 | 73 | // Get image's dimensions 74 | int height = abs(bi.biHeight); 75 | int width = bi.biWidth; 76 | 77 | // Allocate memory for image 78 | RGBTRIPLE(*image)[width] = calloc(height, width * sizeof(RGBTRIPLE)); 79 | if (image == NULL) 80 | { 81 | printf("Not enough memory to store image.\n"); 82 | fclose(outptr); 83 | fclose(inptr); 84 | return 7; 85 | } 86 | 87 | // Determine padding for scanlines 88 | int padding = (4 - (width * sizeof(RGBTRIPLE)) % 4) % 4; 89 | 90 | // Iterate over infile's scanlines 91 | for (int i = 0; i < height; i++) 92 | { 93 | // Read row into pixel array 94 | fread(image[i], sizeof(RGBTRIPLE), width, inptr); 95 | 96 | // Skip over padding 97 | fseek(inptr, padding, SEEK_CUR); 98 | } 99 | 100 | // Filter image 101 | switch (filter) 102 | { 103 | // Blur 104 | case 'b': 105 | blur(height, width, image); 106 | break; 107 | 108 | // Edges 109 | case 'e': 110 | edges(height, width, image); 111 | break; 112 | 113 | // Grayscale 114 | case 'g': 115 | grayscale(height, width, image); 116 | break; 117 | 118 | // Reflect 119 | case 'r': 120 | reflect(height, width, image); 121 | break; 122 | } 123 | 124 | // Write outfile's BITMAPFILEHEADER 125 | fwrite(&bf, sizeof(BITMAPFILEHEADER), 1, outptr); 126 | 127 | // Write outfile's BITMAPINFOHEADER 128 | fwrite(&bi, sizeof(BITMAPINFOHEADER), 1, outptr); 129 | 130 | // Write new pixels to outfile 131 | for (int i = 0; i < height; i++) 132 | { 133 | // Write row to outfile 134 | fwrite(image[i], sizeof(RGBTRIPLE), width, outptr); 135 | 136 | // Write padding at end of row 137 | for (int k = 0; k < padding; k++) 138 | { 139 | fputc(0x00, outptr); 140 | } 141 | } 142 | 143 | // Free memory for image 144 | free(image); 145 | 146 | // Close files 147 | fclose(inptr); 148 | fclose(outptr); 149 | return 0; 150 | } 151 | -------------------------------------------------------------------------------- /Week4/filter-more/helpers.c: -------------------------------------------------------------------------------- 1 | #include "helpers.h" 2 | #include 3 | 4 | // Convert image to grayscale 5 | void grayscale(int height, int width, RGBTRIPLE image[height][width]) 6 | { 7 | for (int i = 0; i < height; i++) 8 | { 9 | for (int j = 0; j < width; j++) 10 | { 11 | image[i][j].rgbtBlue = (int)round((image[i][j].rgbtBlue + image[i][j].rgbtGreen + image[i][j].rgbtRed) / 3.0); 12 | image[i][j].rgbtGreen = image[i][j].rgbtBlue; 13 | image[i][j].rgbtRed = image[i][j].rgbtBlue; 14 | } 15 | } 16 | return; 17 | } 18 | 19 | // Reflect image horizontally 20 | void reflect(int height, int width, RGBTRIPLE image[height][width]) 21 | { 22 | RGBTRIPLE temp; 23 | for (int i = 0; i < height; i++) 24 | { 25 | for (int j = 0; j < width / 2; j++) 26 | { 27 | temp = image[i][j]; 28 | image[i][j] = image[i][width - 1 - j]; 29 | image[i][width - 1 - j] = temp; 30 | } 31 | } 32 | return; 33 | } 34 | 35 | // Blur image 36 | void blur(int height, int width, RGBTRIPLE image[height][width]) 37 | { 38 | RGBTRIPLE buffer[height][width]; 39 | for (int i = 0; i < height; i++) 40 | { 41 | for (int j = 0; j < width; j++) 42 | { 43 | buffer[i][j] = image[i][j]; 44 | } 45 | } 46 | 47 | for (int i = 0; i < height; i++) 48 | { 49 | for (int j = 0; j < width; j++) 50 | { 51 | if (i == 0 && j == 0) 52 | { 53 | image[i][j].rgbtBlue = (int)round((buffer[i][j].rgbtBlue + buffer[i][j + 1].rgbtBlue + 54 | buffer[i + 1][j].rgbtBlue + buffer[i + 1][j + 1].rgbtBlue) / 4.0); 55 | image[i][j].rgbtGreen = (int)round((buffer[i][j].rgbtGreen + buffer[i][j + 1].rgbtGreen + 56 | buffer[i + 1][j].rgbtGreen + buffer[i + 1][j + 1].rgbtGreen) / 4.0); 57 | image[i][j].rgbtRed = (int)round((buffer[i][j].rgbtRed + buffer[i][j + 1].rgbtRed + 58 | buffer[i + 1][j].rgbtRed + buffer[i + 1][j + 1].rgbtRed) / 4.0); 59 | } 60 | else if (i == height - 1 && j == 0) 61 | { 62 | image[i][j].rgbtBlue = (int)round((buffer[i][j].rgbtBlue + buffer[i][j + 1].rgbtBlue + 63 | buffer[i - 1][j].rgbtBlue + buffer[i - 1][j + 1].rgbtBlue) / 4.0); 64 | image[i][j].rgbtGreen = (int)round((buffer[i][j].rgbtGreen + buffer[i][j + 1].rgbtGreen + 65 | buffer[i - 1][j].rgbtGreen + buffer[i - 1][j + 1].rgbtGreen) / 4.0); 66 | image[i][j].rgbtRed = (int)round((buffer[i][j].rgbtRed + buffer[i][j + 1].rgbtRed + 67 | buffer[i - 1][j].rgbtRed + buffer[i - 1][j + 1].rgbtRed) / 4.0); 68 | } 69 | else if (i == 0 && j == width - 1) 70 | { 71 | image[i][j].rgbtBlue = (int)round((buffer[i][j].rgbtBlue + buffer[i][j - 1].rgbtBlue + 72 | buffer[i + 1][j].rgbtBlue + buffer[i + 1][j - 1].rgbtBlue) / 4.0); 73 | image[i][j].rgbtGreen = (int)round((buffer[i][j].rgbtGreen + buffer[i][j - 1].rgbtGreen + 74 | buffer[i + 1][j].rgbtGreen + buffer[i + 1][j - 1].rgbtGreen) / 4.0); 75 | image[i][j].rgbtRed = (int)round((buffer[i][j].rgbtRed + buffer[i][j - 1].rgbtRed + 76 | buffer[i + 1][j].rgbtRed + buffer[i + 1][j - 1].rgbtRed) / 4.0); 77 | } 78 | else if (i == height - 1 && j == width - 1) 79 | { 80 | image[i][j].rgbtBlue = (int)round((buffer[i][j].rgbtBlue + buffer[i][j - 1].rgbtBlue + 81 | buffer[i - 1][j].rgbtBlue + buffer[i - 1][j - 1].rgbtBlue) / 4.0); 82 | image[i][j].rgbtGreen = (int)round((buffer[i][j].rgbtGreen + buffer[i][j - 1].rgbtGreen + 83 | buffer[i - 1][j].rgbtGreen + buffer[i - 1][j - 1].rgbtGreen) / 4.0); 84 | image[i][j].rgbtRed = (int)round((buffer[i][j].rgbtRed + buffer[i][j - 1].rgbtRed + 85 | buffer[i - 1][j].rgbtRed + buffer[i - 1][j - 1].rgbtRed) / 4.0); 86 | } 87 | else if (i == 0) 88 | { 89 | image[i][j].rgbtBlue = (int)round((buffer[i][j - 1].rgbtBlue + buffer[i][j].rgbtBlue + buffer[i][j + 1].rgbtBlue + 90 | buffer[i + 1][j - 1].rgbtBlue + buffer[i + 1][j].rgbtBlue + buffer[i + 1][j + 1].rgbtBlue) / 6.0); 91 | image[i][j].rgbtGreen = (int)round((buffer[i][j - 1].rgbtGreen + buffer[i][j].rgbtGreen + buffer[i][j + 1].rgbtGreen + 92 | buffer[i + 1][j - 1].rgbtGreen + buffer[i + 1][j].rgbtGreen + buffer[i + 1][j + 1].rgbtGreen) / 6.0); 93 | image[i][j].rgbtRed = (int)round((buffer[i][j - 1].rgbtRed + buffer[i][j].rgbtRed + buffer[i][j + 1].rgbtRed + 94 | buffer[i + 1][j - 1].rgbtRed + buffer[i + 1][j].rgbtRed + buffer[i + 1][j + 1].rgbtRed) / 6.0); 95 | } 96 | else if (i == height - 1) 97 | { 98 | image[i][j].rgbtBlue = (int)round((buffer[i][j - 1].rgbtBlue + buffer[i][j].rgbtBlue + buffer[i][j + 1].rgbtBlue + 99 | buffer[i - 1][j - 1].rgbtBlue + buffer[i - 1][j].rgbtBlue + buffer[i - 1][j + 1].rgbtBlue) / 6.0); 100 | image[i][j].rgbtGreen = (int)round((buffer[i][j - 1].rgbtGreen + buffer[i][j].rgbtGreen + buffer[i][j + 1].rgbtGreen + 101 | buffer[i - 1][j - 1].rgbtGreen + buffer[i - 1][j].rgbtGreen + buffer[i - 1][j + 1].rgbtGreen) / 6.0); 102 | image[i][j].rgbtRed = (int)round((buffer[i][j - 1].rgbtRed + buffer[i][j].rgbtRed + buffer[i][j + 1].rgbtRed + 103 | buffer[i - 1][j - 1].rgbtRed + buffer[i - 1][j].rgbtRed + buffer[i - 1][j + 1].rgbtRed) / 6.0); 104 | } 105 | else if (j == 0) 106 | { 107 | image[i][j].rgbtBlue = (int)round((buffer[i - 1][j].rgbtBlue + buffer[i - 1][j + 1].rgbtBlue + 108 | buffer[i][j].rgbtBlue + buffer[i][j + 1].rgbtBlue + 109 | buffer[i + 1][j].rgbtBlue + buffer[i + 1][j + 1].rgbtBlue) / 6.0); 110 | image[i][j].rgbtGreen = (int)round((buffer[i - 1][j].rgbtGreen + buffer[i - 1][j + 1].rgbtGreen + 111 | buffer[i][j].rgbtGreen + buffer[i][j + 1].rgbtGreen + 112 | buffer[i + 1][j].rgbtGreen + buffer[i + 1][j + 1].rgbtGreen) / 6.0); 113 | image[i][j].rgbtRed = (int)round((buffer[i - 1][j].rgbtRed + buffer[i - 1][j + 1].rgbtRed + 114 | buffer[i][j].rgbtRed + buffer[i][j + 1].rgbtRed + 115 | buffer[i + 1][j].rgbtRed + buffer[i + 1][j + 1].rgbtRed) / 6.0); 116 | } 117 | else if (j == width - 1) 118 | { 119 | image[i][j].rgbtBlue = (int)round((buffer[i - 1][j - 1].rgbtBlue + buffer[i - 1][j].rgbtBlue + 120 | buffer[i][j - 1].rgbtBlue + buffer[i][j].rgbtBlue + 121 | buffer[i + 1][j - 1].rgbtBlue + buffer[i + 1][j].rgbtBlue) / 6.0); 122 | image[i][j].rgbtGreen = (int)round((buffer[i - 1][j - 1].rgbtGreen + buffer[i - 1][j].rgbtGreen + 123 | buffer[i][j - 1].rgbtGreen + buffer[i][j].rgbtGreen + 124 | buffer[i + 1][j - 1].rgbtGreen + buffer[i + 1][j].rgbtGreen) / 6.0); 125 | image[i][j].rgbtRed = (int)round((buffer[i - 1][j - 1].rgbtRed + buffer[i - 1][j].rgbtRed + 126 | buffer[i][j - 1].rgbtRed + buffer[i][j].rgbtRed + 127 | buffer[i + 1][j - 1].rgbtRed + buffer[i + 1][j].rgbtRed) / 6.0); 128 | } 129 | else 130 | { 131 | image[i][j].rgbtBlue = (int)round((buffer[i - 1][j - 1].rgbtBlue + buffer[i - 1][j].rgbtBlue + buffer[i - 1][j + 1].rgbtBlue + 132 | buffer[i][j - 1].rgbtBlue + buffer[i][j].rgbtBlue + buffer[i][j + 1].rgbtBlue + 133 | buffer[i + 1][j - 1].rgbtBlue + buffer[i + 1][j].rgbtBlue + buffer[i + 1][j + 1].rgbtBlue) / 9.0); 134 | image[i][j].rgbtGreen = (int)round((buffer[i - 1][j - 1].rgbtGreen + buffer[i - 1][j].rgbtGreen + buffer[i - 1][j + 1].rgbtGreen + 135 | buffer[i][j - 1].rgbtGreen + buffer[i][j].rgbtGreen + buffer[i][j + 1].rgbtGreen + 136 | buffer[i + 1][j - 1].rgbtGreen + buffer[i + 1][j].rgbtGreen + buffer[i + 1][j + 1].rgbtGreen) / 9.0); 137 | image[i][j].rgbtRed = (int)round((buffer[i - 1][j - 1].rgbtRed + buffer[i - 1][j].rgbtRed + buffer[i - 1][j + 1].rgbtRed + 138 | buffer[i][j - 1].rgbtRed + buffer[i][j].rgbtRed + buffer[i][j + 1].rgbtRed + 139 | buffer[i + 1][j - 1].rgbtRed + buffer[i + 1][j].rgbtRed + buffer[i + 1][j + 1].rgbtRed) / 9.0); 140 | } 141 | } 142 | } 143 | 144 | 145 | return; 146 | } 147 | 148 | // Detect edges 149 | void edges(int height, int width, RGBTRIPLE image[height][width]) 150 | { 151 | //create a buffer to store the output of filter 152 | RGBTRIPLE buffer[height + 2][width + 2]; 153 | for (int i = 0; i < height + 2; i++) 154 | { 155 | for (int j = 0; j < width + 2; j++) 156 | { 157 | if (i == 0 || j == 0 || i == height + 1 || j == width + 1) 158 | { 159 | buffer[i][j].rgbtBlue = 0; 160 | buffer[i][j].rgbtGreen = 0; 161 | buffer[i][j].rgbtRed = 0; 162 | } 163 | else 164 | { 165 | buffer[i][j] = image[i - 1][j - 1]; 166 | } 167 | } 168 | } 169 | int temp; 170 | for (int i = 0; i < height; i++) 171 | { 172 | for (int j = 0; j < width; j++) 173 | { 174 | temp = (int)round(sqrt(pow((-buffer[i][j].rgbtBlue - 2 * buffer[i + 1][j].rgbtBlue - buffer[i + 2][j].rgbtBlue + 175 | buffer[i][j + 2].rgbtBlue + 2 * buffer[i + 1][j + 2].rgbtBlue + buffer[i + 2][j + 2].rgbtBlue), 2) + 176 | pow((-buffer[i][j].rgbtBlue - 2 * buffer[i][j + 1].rgbtBlue - buffer[i][j + 2].rgbtBlue + 177 | buffer[i + 2][j].rgbtBlue + 2 * buffer[i + 2][j + 1].rgbtBlue + buffer[i + 2][j + 2].rgbtBlue), 2))); 178 | if (temp > 255) 179 | { 180 | temp = 255; 181 | } 182 | image[i][j].rgbtBlue = temp; 183 | 184 | temp = (int)round(sqrt(pow((-buffer[i][j].rgbtGreen - 2 * buffer[i + 1][j].rgbtGreen - buffer[i + 2][j].rgbtGreen + 185 | buffer[i][j + 2].rgbtGreen + 2 * buffer[i + 1][j + 2].rgbtGreen + buffer[i + 2][j + 2].rgbtGreen), 2) + 186 | pow((-buffer[i][j].rgbtGreen - 2 * buffer[i][j + 1].rgbtGreen - buffer[i][j + 2].rgbtGreen + 187 | buffer[i + 2][j].rgbtGreen + 2 * buffer[i + 2][j + 1].rgbtGreen + buffer[i + 2][j + 2].rgbtGreen), 2))); 188 | if (temp > 255) 189 | { 190 | temp = 255; 191 | } 192 | image[i][j].rgbtGreen = temp; 193 | 194 | temp = (int)round(sqrt(pow((-buffer[i][j].rgbtRed - 2 * buffer[i + 1][j].rgbtRed - buffer[i + 2][j].rgbtRed + 195 | buffer[i][j + 2].rgbtRed + 2 * buffer[i + 1][j + 2].rgbtRed + buffer[i + 2][j + 2].rgbtRed), 2) + 196 | pow((-buffer[i][j].rgbtRed - 2 * buffer[i][j + 1].rgbtRed - buffer[i][j + 2].rgbtRed + 197 | buffer[i + 2][j].rgbtRed + 2 * buffer[i + 2][j + 1].rgbtRed + buffer[i + 2][j + 2].rgbtRed), 2))); 198 | if (temp > 255) 199 | { 200 | temp = 255; 201 | } 202 | image[i][j].rgbtRed = temp; 203 | } 204 | } 205 | return; 206 | } -------------------------------------------------------------------------------- /Week4/filter-more/helpers.h: -------------------------------------------------------------------------------- 1 | #include "bmp.h" 2 | 3 | // Convert image to grayscale 4 | void grayscale(int height, int width, RGBTRIPLE image[height][width]); 5 | 6 | // Reflect image horizontally 7 | void reflect(int height, int width, RGBTRIPLE image[height][width]); 8 | 9 | // Detect edges 10 | void edges(int height, int width, RGBTRIPLE image[height][width]); 11 | 12 | // Blur image 13 | void blur(int height, int width, RGBTRIPLE image[height][width]); 14 | 15 | -------------------------------------------------------------------------------- /Week4/readme.md: -------------------------------------------------------------------------------- 1 | # Week 4 2 | 3 | filter和volume分别是图像和音频处理,之前用Matlab和FPGA做过许多类似的实验,原理很熟悉。 4 | 5 | 代码中有较多繁琐的设计,尚需优化。总觉得这次的麻烦作业是在为后续突出Python的优点做铺垫。 6 | 7 | recover中数据恢复的原理挺有趣。 8 | 9 | 本作业涉及含多个C文件的项目,有助加深对库、链接和编译等概念的理解。 -------------------------------------------------------------------------------- /Week4/readme_en.md: -------------------------------------------------------------------------------- 1 | # Week 4 2 | 3 | Filter and volume are image and audio processing respectively. Having done quite a few similar labs with Matlab and FPGA, I'm familiar with the principles. 4 | 5 | There are lots of tedious repetitions in the code which may require some improvement. The cumbersome in this problem might be emphasizing the benefits of python. 6 | 7 | Recover is an application of data recovery which is pretty interesting. 8 | 9 | The problem set contains projects with multiple C files, helpful to deepen the understanding of library, linking and compiling. -------------------------------------------------------------------------------- /Week4/recover/recover.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #define BLOCK_SIZE 512 6 | #define JPEG_HEAD 0xffd8ffe 7 | 8 | typedef uint8_t BYTE; 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | //command validation check 13 | if (argc != 2) 14 | { 15 | printf("Usage: ./recover IMAGE\n"); 16 | return 1; 17 | } 18 | 19 | //open file 20 | FILE *file = fopen(argv[1], "r"); 21 | if (file == NULL) 22 | { 23 | printf("unsuported file\n"); 24 | return 1; 25 | } 26 | 27 | //read data 28 | BYTE buffer[BLOCK_SIZE]; 29 | 30 | //find first image 31 | do 32 | { 33 | fread(buffer, 1, BLOCK_SIZE, file); 34 | } 35 | while ((buffer[0] << 20) + (buffer[1] << 12) + (buffer[2] << 4) + (buffer[3] >> 4) != JPEG_HEAD); 36 | FILE *outptr = fopen("000.jpg", "w"); 37 | fwrite(buffer, 1, BLOCK_SIZE, outptr); 38 | 39 | //find next image 40 | int i = 1; 41 | while (fread(buffer, 1, BLOCK_SIZE, file) == BLOCK_SIZE) 42 | { 43 | if ((buffer[0] << 20) + (buffer[1] << 12) + (buffer[2] << 4) + (buffer[3] >> 4) == JPEG_HEAD) 44 | { 45 | fclose(outptr); 46 | char fname[] = "000.jpg"; 47 | //open a new file 48 | if (i < 10) 49 | { 50 | sprintf(&fname[2], "%d.jpg", i); 51 | } 52 | else 53 | { 54 | sprintf(&fname[1], "%d.jpg", i); 55 | } 56 | i++; 57 | outptr = fopen(fname, "w"); 58 | } 59 | fwrite(buffer, 1, BLOCK_SIZE, outptr); 60 | } 61 | fclose(outptr); 62 | fclose(file); 63 | return 0; 64 | } -------------------------------------------------------------------------------- /Week4/volume/volume.c: -------------------------------------------------------------------------------- 1 | // Modifies the volume of an audio file 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | // Number of bytes in .wav header 8 | const int HEADER_SIZE = 44; 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | // Check command-line arguments 13 | if (argc != 4) 14 | { 15 | printf("Usage: ./volume input.wav output.wav factor\n"); 16 | return 1; 17 | } 18 | 19 | // Open files and determine scaling factor 20 | FILE *input = fopen(argv[1], "r"); 21 | if (input == NULL) 22 | { 23 | printf("Could not open file.\n"); 24 | return 1; 25 | } 26 | 27 | FILE *output = fopen(argv[2], "w"); 28 | if (output == NULL) 29 | { 30 | printf("Could not open file.\n"); 31 | return 1; 32 | } 33 | 34 | float factor = atof(argv[3]); 35 | 36 | // TODO: Copy header from input file to output file 37 | uint8_t header[HEADER_SIZE]; 38 | fread(header, sizeof(uint8_t), HEADER_SIZE, input); 39 | fwrite(header, sizeof(uint8_t), HEADER_SIZE, output); 40 | 41 | // TODO: Read samples from input file and write updated data to output file 42 | int16_t buffer; 43 | while (fread(&buffer, sizeof(int16_t), 1, input) == 1) 44 | { 45 | buffer *= factor; 46 | fwrite(&buffer, sizeof(int16_t), 1, output); 47 | } 48 | 49 | // Close files 50 | fclose(input); 51 | fclose(output); 52 | } 53 | -------------------------------------------------------------------------------- /Week5/inheritance/inheritance.c: -------------------------------------------------------------------------------- 1 | // Simulate genetic inheritance of blood type 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | // Each person has two parents and two alleles 9 | typedef struct person 10 | { 11 | struct person *parents[2]; 12 | char alleles[2]; 13 | } 14 | person; 15 | 16 | const int GENERATIONS = 3; 17 | const int INDENT_LENGTH = 4; 18 | 19 | person *create_family(int generations); 20 | void print_family(person *p, int generation); 21 | void free_family(person *p); 22 | char random_allele(); 23 | 24 | int main(void) 25 | { 26 | // Seed random number generator 27 | srand(time(0)); 28 | 29 | // Create a new family with three generations 30 | person *p = create_family(GENERATIONS); 31 | 32 | // Print family tree of blood types 33 | print_family(p, 0); 34 | 35 | // Free memory 36 | free_family(p); 37 | } 38 | 39 | // Create a new individual with `generations` 40 | person *create_family(int generations) 41 | { 42 | // TODO: Allocate memory for new person 43 | person *child = malloc(sizeof(person)); 44 | 45 | // If there are still generations left to create 46 | if (generations > 1) 47 | { 48 | // Create two new parents for current person by recursively calling create_family 49 | person *parent0 = create_family(generations - 1); 50 | person *parent1 = create_family(generations - 1); 51 | 52 | // TODO: Set parent pointers for current person 53 | child->parents[0] = parent0; 54 | child->parents[1] = parent1; 55 | 56 | // TODO: Randomly assign current person's alleles based on the alleles of their parents 57 | int i = rand() % 2; 58 | child->alleles[0] = child->parents[0]->alleles[i]; 59 | child->alleles[1] = child->parents[1]->alleles[i]; 60 | } 61 | 62 | // If there are no generations left to create 63 | else 64 | { 65 | // TODO: Set parent pointers to NULL 66 | child->parents[0] = NULL; 67 | child->parents[1] = NULL; 68 | 69 | // TODO: Randomly assign alleles 70 | child->alleles[0] = random_allele(); 71 | child->alleles[1] = random_allele(); 72 | } 73 | 74 | // TODO: Return newly created person 75 | return child; 76 | } 77 | 78 | // Free `p` and all ancestors of `p`. 79 | void free_family(person *p) 80 | { 81 | // TODO: Handle base case 82 | if (p == NULL) 83 | { 84 | return; 85 | } 86 | 87 | // TODO: Free parents recursively 88 | free_family(p->parents[0]); 89 | free_family(p->parents[1]); 90 | 91 | // TODO: Free child 92 | free(p); 93 | } 94 | 95 | // Print each family member and their alleles. 96 | void print_family(person *p, int generation) 97 | { 98 | // Handle base case 99 | if (p == NULL) 100 | { 101 | return; 102 | } 103 | 104 | // Print indentation 105 | for (int i = 0; i < generation * INDENT_LENGTH; i++) 106 | { 107 | printf(" "); 108 | } 109 | 110 | // Print person 111 | if (generation == 0) 112 | { 113 | printf("Child (Generation %i): blood type %c%c\n", generation, p->alleles[0], p->alleles[1]); 114 | } 115 | else if (generation == 1) 116 | { 117 | printf("Parent (Generation %i): blood type %c%c\n", generation, p->alleles[0], p->alleles[1]); 118 | } 119 | else 120 | { 121 | for (int i = 0; i < generation - 2; i++) 122 | { 123 | printf("Great-"); 124 | } 125 | printf("Grandparent (Generation %i): blood type %c%c\n", generation, p->alleles[0], p->alleles[1]); 126 | } 127 | 128 | // Print parents of current generation 129 | print_family(p->parents[0], generation + 1); 130 | print_family(p->parents[1], generation + 1); 131 | } 132 | 133 | // Randomly chooses a blood type allele. 134 | char random_allele() 135 | { 136 | int r = rand() % 3; 137 | if (r == 0) 138 | { 139 | return 'A'; 140 | } 141 | else if (r == 1) 142 | { 143 | return 'B'; 144 | } 145 | else 146 | { 147 | return 'O'; 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /Week5/readme.md: -------------------------------------------------------------------------------- 1 | # Week 5 2 | 3 | inheritance模拟血型遗传,是对递归的应用,感觉不如tideman。。设计。 4 | 5 | speller作为C的最后一个作业,有一定的难度。给出的框架是基于前缀字母的哈希树,想提高速度的话用字典树应该更加合适。 6 | 7 | 代码思路:将字典按照前若干位字符映射为哈希树,映射函数为字母表序号。前缀字符串需考虑单引号情况。 8 | 9 | 实测从两位改为三位前缀的树时,查找速度提升已经不大了,四位则基本无提升。最后的总运行时间还是比staff的代码慢了近0.1秒。 10 | 11 | 提供的文本都相当经典,包括红楼梦选段。 12 | 13 | ## 哈希表 14 | 15 | 哈希表通常比哈希树和字典树使用的更加频繁。课程没有提供关于哈希表和哈希函数的深入分析。 16 | 17 | 哈希表实际就是只有一层的哈希树,因此需对哈希函数进行设计来避免哈希值冲突。哈希函数的设计属于数学问题。 18 | 19 | 字典树不需计算哈希值,也不存在冲突问题,前缀式查找也提供了更灵活的应用方式。但字典树的链表结构需要多次访问内存,降低速度,此外还需要更大的内存空间。 -------------------------------------------------------------------------------- /Week5/readme_en.md: -------------------------------------------------------------------------------- 1 | # Week 5 2 | 3 | Inheritance is a simulation of blood type inheritance and an application of recursion, though not as fun as tideman. 4 | 5 | Speller has some difficulty as the last problem in C. The framework given is a hash tree based on prefix alphas. A trie might offer a faster speed. 6 | 7 | Code thoughts: Map the dictionary based on the first several characters. The mapping function is the order in the alphabet. The single quote should be taken into consideration. 8 | 9 | There's not much improvement when changing from two characters prefix to three, let alone four. The final total running time is still 0.1 sec slower than the staff's solution. 10 | 11 | The texts provided are all very classic, including a selection from *Dream of the Red Chamber*. 12 | 13 | ## Hash Table 14 | 15 | More frequently used than hash tree and trie, the course didn't provide deep analyse about hash table and hash function. 16 | 17 | Hash table is a hash tree with one layer leading to the requirement of careful design in hash function to avoid conflicts, which is a mathematical problem. 18 | 19 | Trie doesn't need to calculate hash value, and is free from the conflict problem. The prefix searching method also provides more versatile appliaction. However, the link table structure results in multiple memory accesses, slowing the speed. Trie usually requires more memory spaces as well. -------------------------------------------------------------------------------- /Week5/speller/Makefile: -------------------------------------------------------------------------------- 1 | speller: 2 | clang -ggdb3 -gdwarf-4 -O0 -Qunused-arguments -std=c11 -Wall -Werror -Wextra -Wno-gnu-folding-constant -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow -c -o speller.o speller.c 3 | clang -ggdb3 -gdwarf-4 -O0 -Qunused-arguments -std=c11 -Wall -Werror -Wextra -Wno-gnu-folding-constant -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow -c -o dictionary.o dictionary.c 4 | clang -ggdb3 -gdwarf-4 -O0 -Qunused-arguments -std=c11 -Wall -Werror -Wextra -Wno-gnu-folding-constant -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow -o speller speller.o dictionary.o -lm 5 | -------------------------------------------------------------------------------- /Week5/speller/dictionary.c: -------------------------------------------------------------------------------- 1 | // Implements a dictionary's functionality 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "dictionary.h" 11 | 12 | 13 | // Represents a node in a hash table 14 | typedef struct node 15 | { 16 | char word[LENGTH + 1]; 17 | struct node *next; 18 | } 19 | node; 20 | 21 | void freelinklist(node *n); 22 | 23 | // Choose number of buckets in hash table 24 | const unsigned int N = 26 * 26 * 26 + 26; 25 | 26 | // Hash table 27 | node *table[N]; 28 | 29 | // Counter of the words in table 30 | unsigned int nwords = 0; 31 | 32 | // Returns true if word is in dictionary, else false 33 | bool check(const char *word) 34 | { 35 | node *tmp = table[hash(word)]; 36 | while (tmp != NULL) 37 | { 38 | if (strcasecmp(tmp->word, word) == 0) 39 | { 40 | return true; 41 | } 42 | tmp = tmp->next; 43 | } 44 | return false; 45 | } 46 | 47 | // Hashes word to a number 48 | unsigned int hash(const char *word) 49 | { 50 | if (strlen(word) < 3 || word[1] == '\'' || word[2] == '\'') 51 | { 52 | return tolower(word[0]) - 'a' + 17576; 53 | } 54 | return (tolower(word[0]) - 'a') * 676 + (tolower(word[1]) - 'a') * 26 + tolower(word[2]) - 'a'; 55 | } 56 | 57 | // Loads dictionary into memory, returning true if successful, else false 58 | bool load(const char *dictionary) 59 | { 60 | // Initialize hash table 61 | for (int i = 0; i < N; i++) 62 | { 63 | table[i] = NULL; 64 | } 65 | 66 | // Open file 67 | FILE *file = fopen(dictionary, "r"); 68 | if (file == NULL) 69 | { 70 | printf("could not open %s.\n", dictionary); 71 | return false; 72 | } 73 | 74 | // Read the entire file(Assume the file is smaller than 1MB) 75 | char *buffer = malloc(NMEMB); 76 | if (buffer == NULL) 77 | { 78 | printf("insufficient memory."); 79 | fclose(file); 80 | return false; 81 | } 82 | const unsigned int FileSize = fread(buffer, 1, NMEMB, file); 83 | fclose(file); 84 | 85 | // Build table 86 | node *n = malloc(sizeof(node)); 87 | n->next = NULL; 88 | node *tmp = NULL; 89 | for (int i = 0, j = 0, k; i < FileSize; i++) 90 | { 91 | // Read the next word 92 | if (buffer[i] != '\n') 93 | { 94 | n->word[j] = buffer[i]; 95 | j++; 96 | continue; 97 | } 98 | n->word[j] = '\0'; 99 | j = 0; 100 | 101 | // Add the word 102 | k = hash(n->word); 103 | if (table[k] == NULL) 104 | { 105 | table[k] = n; 106 | } 107 | else 108 | { 109 | tmp = table[k]; 110 | while (tmp->next != NULL) 111 | { 112 | tmp = tmp->next; 113 | } 114 | tmp->next = n; 115 | } 116 | 117 | // Create a new node(Assume sufficient memory) 118 | n = malloc(sizeof(node)); 119 | n->next = NULL; 120 | 121 | // Count the number of words in table 122 | nwords++; 123 | } 124 | 125 | //Exit 126 | free(n); 127 | free(buffer); 128 | return true; 129 | } 130 | 131 | // Returns number of words in dictionary if loaded, else 0 if not yet loaded 132 | unsigned int size(void) 133 | { 134 | return nwords; 135 | } 136 | 137 | // Unloads dictionary from memory, returning true if successful, else false 138 | bool unload(void) 139 | { 140 | for (int i = 0; i < N; i++) 141 | { 142 | freelinklist(table[i]); 143 | } 144 | return true; 145 | } 146 | 147 | void freelinklist(node *n) 148 | { 149 | if (n == NULL) 150 | { 151 | return; 152 | } 153 | free(n->next); 154 | free(n); 155 | } -------------------------------------------------------------------------------- /Week5/speller/dictionary.h: -------------------------------------------------------------------------------- 1 | // Declares a dictionary's functionality 2 | 3 | #ifndef DICTIONARY_H 4 | #define DICTIONARY_H 5 | 6 | #include 7 | 8 | // Maximum length for a word 9 | // (e.g., pneumonoultramicroscopicsilicovolcanoconiosis) 10 | #define LENGTH 45 11 | 12 | // File reading size 13 | #define NMEMB 1024*1024*4-1 14 | 15 | // Prototypes 16 | bool check(const char *word); 17 | unsigned int hash(const char *word); 18 | bool load(const char *dictionary); 19 | unsigned int size(void); 20 | bool unload(void); 21 | 22 | #endif // DICTIONARY_H 23 | -------------------------------------------------------------------------------- /Week5/speller/speller.c: -------------------------------------------------------------------------------- 1 | // Implements a spell-checker 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include "dictionary.h" 9 | 10 | // Undefine any definitions 11 | #undef calculate 12 | #undef getrusage 13 | 14 | // Default dictionary 15 | #define DICTIONARY "dictionaries/large" 16 | 17 | // Prototype 18 | double calculate(const struct rusage *b, const struct rusage *a); 19 | 20 | int main(int argc, char *argv[]) 21 | { 22 | // Check for correct number of args 23 | if (argc != 2 && argc != 3) 24 | { 25 | printf("Usage: ./speller [DICTIONARY] text\n"); 26 | return 1; 27 | } 28 | 29 | // Structures for timing data 30 | struct rusage before, after; 31 | 32 | // Benchmarks 33 | double time_load = 0.0, time_check = 0.0, time_size = 0.0, time_unload = 0.0; 34 | 35 | // Determine dictionary to use 36 | char *dictionary = (argc == 3) ? argv[1] : DICTIONARY; 37 | 38 | // Load dictionary 39 | getrusage(RUSAGE_SELF, &before); 40 | bool loaded = load(dictionary); 41 | getrusage(RUSAGE_SELF, &after); 42 | 43 | // Exit if dictionary not loaded 44 | if (!loaded) 45 | { 46 | printf("Could not load %s.\n", dictionary); 47 | return 1; 48 | } 49 | 50 | // Calculate time to load dictionary 51 | time_load = calculate(&before, &after); 52 | 53 | // Try to open text 54 | char *text = (argc == 3) ? argv[2] : argv[1]; 55 | FILE *file = fopen(text, "r"); 56 | if (file == NULL) 57 | { 58 | printf("Could not open %s.\n", text); 59 | unload(); 60 | return 1; 61 | } 62 | 63 | // Prepare to report misspellings 64 | printf("\nMISSPELLED WORDS\n\n"); 65 | 66 | // Prepare to spell-check 67 | int index = 0, misspellings = 0, words = 0; 68 | char word[LENGTH + 1]; 69 | 70 | // Spell-check each word in text 71 | char c; 72 | while (fread(&c, sizeof(char), 1, file)) 73 | { 74 | // Allow only alphabetical characters and apostrophes 75 | if (isalpha(c) || (c == '\'' && index > 0)) 76 | { 77 | // Append character to word 78 | word[index] = c; 79 | index++; 80 | 81 | // Ignore alphabetical strings too long to be words 82 | if (index > LENGTH) 83 | { 84 | // Consume remainder of alphabetical string 85 | while (fread(&c, sizeof(char), 1, file) && isalpha(c)); 86 | 87 | // Prepare for new word 88 | index = 0; 89 | } 90 | } 91 | 92 | // Ignore words with numbers (like MS Word can) 93 | else if (isdigit(c)) 94 | { 95 | // Consume remainder of alphanumeric string 96 | while (fread(&c, sizeof(char), 1, file) && isalnum(c)); 97 | 98 | // Prepare for new word 99 | index = 0; 100 | } 101 | 102 | // We must have found a whole word 103 | else if (index > 0) 104 | { 105 | // Terminate current word 106 | word[index] = '\0'; 107 | 108 | // Update counter 109 | words++; 110 | 111 | // Check word's spelling 112 | getrusage(RUSAGE_SELF, &before); 113 | bool misspelled = !check(word); 114 | getrusage(RUSAGE_SELF, &after); 115 | 116 | // Update benchmark 117 | time_check += calculate(&before, &after); 118 | 119 | // Print word if misspelled 120 | if (misspelled) 121 | { 122 | printf("%s\n", word); 123 | misspellings++; 124 | } 125 | 126 | // Prepare for next word 127 | index = 0; 128 | } 129 | } 130 | 131 | // Check whether there was an error 132 | if (ferror(file)) 133 | { 134 | fclose(file); 135 | printf("Error reading %s.\n", text); 136 | unload(); 137 | return 1; 138 | } 139 | 140 | // Close text 141 | fclose(file); 142 | 143 | // Determine dictionary's size 144 | getrusage(RUSAGE_SELF, &before); 145 | unsigned int n = size(); 146 | getrusage(RUSAGE_SELF, &after); 147 | 148 | // Calculate time to determine dictionary's size 149 | time_size = calculate(&before, &after); 150 | 151 | // Unload dictionary 152 | getrusage(RUSAGE_SELF, &before); 153 | bool unloaded = unload(); 154 | getrusage(RUSAGE_SELF, &after); 155 | 156 | // Abort if dictionary not unloaded 157 | if (!unloaded) 158 | { 159 | printf("Could not unload %s.\n", dictionary); 160 | return 1; 161 | } 162 | 163 | // Calculate time to unload dictionary 164 | time_unload = calculate(&before, &after); 165 | 166 | // Report benchmarks 167 | printf("\nWORDS MISSPELLED: %d\n", misspellings); 168 | printf("WORDS IN DICTIONARY: %d\n", n); 169 | printf("WORDS IN TEXT: %d\n", words); 170 | printf("TIME IN load: %.2f\n", time_load); 171 | printf("TIME IN check: %.2f\n", time_check); 172 | printf("TIME IN size: %.2f\n", time_size); 173 | printf("TIME IN unload: %.2f\n", time_unload); 174 | printf("TIME IN TOTAL: %.2f\n\n", 175 | time_load + time_check + time_size + time_unload); 176 | 177 | // Success 178 | return 0; 179 | } 180 | 181 | // Returns number of seconds between b and a 182 | double calculate(const struct rusage *b, const struct rusage *a) 183 | { 184 | if (b == NULL || a == NULL) 185 | { 186 | return 0.0; 187 | } 188 | else 189 | { 190 | return ((((a->ru_utime.tv_sec * 1000000 + a->ru_utime.tv_usec) - 191 | (b->ru_utime.tv_sec * 1000000 + b->ru_utime.tv_usec)) + 192 | ((a->ru_stime.tv_sec * 1000000 + a->ru_stime.tv_usec) - 193 | (b->ru_stime.tv_sec * 1000000 + b->ru_stime.tv_usec))) 194 | / 1000000.0); 195 | } 196 | } 197 | -------------------------------------------------------------------------------- /Week6/dna/dna.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import sys 3 | 4 | 5 | def main(): 6 | 7 | # TODO: Check for command-line usage 8 | if len(sys.argv) != 3: 9 | sys.exit("Usage: python DATABASEFILE SEQUENCEFILE") 10 | 11 | # TODO: Read database file into a variable 12 | database = {} 13 | with open(sys.argv[1]) as file: 14 | reader = csv.reader(file) 15 | subsequences = next(reader)[1:] 16 | for row in reader: 17 | database[row[0]] = list(map(int, row[1:])) 18 | 19 | # TODO: Read DNA sequence file into a variable 20 | with open(sys.argv[2]) as file: 21 | sequence = file.read() 22 | 23 | # TODO: Find longest match of each STR in DNA sequence 24 | match_result = [] 25 | for i in range(len(subsequences)): 26 | match_result.append(longest_match(sequence, subsequences[i])) 27 | 28 | # TODO: Check database for matching profiles 29 | for name in database: 30 | if database[name] == match_result: 31 | print(name) 32 | return 33 | print("No match") 34 | 35 | return 36 | 37 | 38 | def longest_match(sequence, subsequence): 39 | """Returns length of longest run of subsequence in sequence.""" 40 | 41 | # Initialize variables 42 | longest_run = 0 43 | subsequence_length = len(subsequence) 44 | sequence_length = len(sequence) 45 | 46 | # Check each character in sequence for most consecutive runs of subsequence 47 | for i in range(sequence_length): 48 | 49 | # Initialize count of consecutive runs 50 | count = 0 51 | 52 | # Check for a subsequence match in a "substring" (a subset of characters) within sequence 53 | # If a match, move substring to next potential match in sequence 54 | # Continue moving substring and checking for matches until out of consecutive matches 55 | while True: 56 | 57 | # Adjust substring start and end 58 | start = i + count * subsequence_length 59 | end = start + subsequence_length 60 | 61 | # If there is a match in the substring 62 | if sequence[start:end] == subsequence: 63 | count += 1 64 | 65 | # If there is no match in the substring 66 | else: 67 | break 68 | 69 | # Update most consecutive matches found 70 | longest_run = max(longest_run, count) 71 | 72 | # After checking for runs at each character in seqeuence, return longest run found 73 | return longest_run 74 | 75 | 76 | main() 77 | -------------------------------------------------------------------------------- /Week6/dna/sequences/1.txt: -------------------------------------------------------------------------------- 1 | AAGGTAAGTTTAGAATATAAAAGGTGAGTTAAATAGAATAGGTTAAAATTAAAGGAGATCAGATCAGATCAGATCTATCTATCTATCTATCTATCAGAAAAGAGTAAATAGTTAAAGAGTAAGATATTGAATTAATGGAAAATATTGTTGGGGAAAGGAGGGATAGAAGG 2 | -------------------------------------------------------------------------------- /Week6/dna/sequences/10.txt: -------------------------------------------------------------------------------- 1 | TCTAGTCTAGTCTAGTCTAGTCTAGACTTGTCGCTGACTCCGAGAAGATCCTAACATTAACCAATTCCCCCTAGTCTGAGGCACGGTTACCGATCGGGTTAATGGATCTCTCACCGTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAAACGTGTAACTGTAATAATCCGCCCGAAAAAACTGATCTTAGGGTTGCGGCATCTGCACGTGACAGTGTGCTACTGTTAGATAGAGGGATCAAACGAGGTTGCAAGGATTATATCTCTCCGTGCTCGATAAGACACAGCCGGTTGCGGGCTGCTTCCTCTGGATCCAATGCAGCCGTACGTACACCGTAGAGCAAATTTAGTGGTAAAGGAACTTGCTCAAACACTACGGCTTCGGGCTACTGTTGGCGCCGGTTGGGGATCCCATTCAACGCTGGCCCTTTCGCTATGGTTCGGTGATTTTACACCGAAGCGAACCTTGAACCGTGGATTTCGGGTGTCCTCCGTTTTTAGGTACTGCGTGCAGACATGGGCACCTGCCATAGTGCGATCAGCCAGAATCCATTGTATGGGAGTTGGACTCGTTTGAATTTACCGGAAACCTCATGCTTGGTCTGTAGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGAAACTGGGCGACTTGAAGTCGGCTTGCGTATTAATAGCTCTGCAATGTAACTCGGCCCTTGGCGGCGGGCAGCTTAGTATTGAACCGCGACACACCATAGGTGCGGCAAATATTAAAAGTACGCTCGAACCGGAACCTGTCTCCATGACTGGACGACCAGCCCGGCGTCTTCTACGTAACACAGGGGGCTGTCGAGGTAGGGCGTAGGAACTTCGGGGTCACTACGCCGTAACAGCACCGAATATCATATCATCCAACTTGCTTGGTACATGCCCCGTTCTGTATCAAAAGTTTACGGCCCCGGACATACCTGCTGTCAGTTGAATACCTATGCGAGTCTGAAACACGAATAGTTCAGGCGTGCAAAGACACGCTAAGCACACGCCGCAGGCAGGGGGGGTATTTTATAAGTCGTTTTTTGGAAGGGTAATGTAAACTTATCCCATAATACCCTTTGGCTTCCCCTCACTCGTGCACTTCTCATAATGATACGTCAGGGTGATTGTAGATTCACGCGTCATCAGATTGTCCCTTTCTCGAGTCTTAGTATCTTTCCTAATCCGCTCGACTCTGCGCCATGATCGAATTCCTGACAGGCTACAAGAATAAACTGCCAGCATACTCCTTACCGATTGGCGCCTACTAATTATACGCACATGGGCATCTTCGACGTCTAAACATAGGCTCTTAGTATTCCGTAGGATGTTGAGCCGACAGGAAAGTCAAACGTCGTGGGTGACCGTAGCCTGACTCGCCCGACGCAGGATTCGCTCATATGTGTGAACGGATGCTTATGTAACTTCCTAATTGCAGCGAATGGCAGTTCCGTAGTGAAGGTTCGAAACGTACGGGGTCCGGCCATGGATTAGATCTTTCAGTGCGCTAAACTCTTAACCGCAGATACTTGGCGGACCATCTTCGTGTTGCTACTATGGTATAGACCAGGCTGTCGAATCTACTTAACACAGGTGAACCCCCAGATCGGCTAGAGCCTTCGAGGCTAGACCTTTAACAATCTTTAGACACTTCCAAATCGCGGCCGGATATGTCTCGTTGGCAGCCGCAGACAAGAGAAGAGGGTCGGCAGTGTCTGCCACGCGTGACCTGTATGATCTTAGCCTTTAAGATCACACTACTGATCACAATCTATTATGATTGCCTTAGCTAACTGAGTGATGCACCCCCACAGGCTGAGAGAAATCTGTAGTTTGACGACACGCCGTCTGGCTAAAAATGTGAATCCGCCGATCCGAGACGGTGGAAGCTTGAGACCAAATGCGGGAAACCAATGACTTCATTACGGAACAAGACATAACGGCGTGAGTTGACGACTGGGATTAACCCTTTCCCGAGTCTGTACTTCTGCTACACAATGAGGATGCGAATTATCTAAGACCTTGTACTACCTAAACTAACCCTGAGGCGGGCATTGAATTCCGGCCATCTTCAGCCCAAAGAAAGACCAAATGTGAGGAAAATGAGGGATCGGTATAAGCTTTTCACGATCTCAAGGTTCACGGCCGCCAGGGCCGTAGTTGGGGCTTCATGCACATTGCCAACCCGGACATCGACAGTCGGTACCGCAGGGGTTCGAGGAATACTCCCAGCTGTGACACCTGGTCGTCGACTGGACCCAGCTGGTGGGCGGCATAGGTAGTTAATACTGAATTAAAGCCGGGAACGTCTCTCTAACTAGAAACCTTGTGATAGGATACACAGACCTAGTGCCCCGACGTTAGCATTTGAATTCATCTATCTTGGCGTCTTTTAGTAGGCCTGGGTCAACTCCGGCGTTGGCCAAAATAACCGATCTGCGTTATGTGGCCACGCATCGAGTGACAGGGTGCATACAAATTGATGGTCAAAGAGTTTAAACAAGACAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCCCCACGCTTCTACATAGCCACACTGGAGCTAGTCCTCGTGTTAAATTTTTCGCTTGTTGCACGGTTATCATCAGAAGTGCCACTGGTATTCCTCTGTAGCTCCCGTATGCCGAAGGTTGCGGCTTAGGTACTGCTTATACACGTCTCTCAAGTTTGTCAGCCGCGTGATCTTTCTGCGGGGATAGGTGATCGTCCCTCGCTCCGGACATTGCATTAAAATTACCTAGTTGATAGGGCGGCGGAGTTGCATACCGGCGTTCAATCGCGGCTCCAGACTGGTTTGAGCTACGCGTCTGCCAGCGTGAAAAAGCTGATTTGTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCCAGGTATTATCATTTGAATCGTATGTTTTCTGCCGTACGTCAACTGCGTCGTCGGGGACTGAAATGGTCTGCCTCCAGACCCTTACCTCCCGATAAGCCATGACTAAGTATGTGAAGGATCACCTGAATTGCTGAAAGTTAACGGTAAGATATCTGAAAGAGCTCATTAGATCCAACACTTATCTACTCAAAAATTCGTCATATTTCGGTGACTTGCTAGAAAGGCTCTTGCACAGTAAGGTTATAGAGAATGCTACCGTTGAAGCACCAGCCGTTGAAGCCCGCCTTTAACCACGCGATATATCCAATTAACCAAGGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGTCGCCTTGTAATAATTACTTTGGCCCGGATTATAACGAAGGAACTCGCCATGAACTCGCAGCACGTTGTACTGGAACAATCTACTTTTTATAATATAGCGATAACTCCCAGCTTTTATGTGGGTGATATTGTCCTAGCTTTTTAAAGATACCCTCTGGCCCGGTCCAAGTAAGGTCCACATTGCCTGACGTAAGCGTACGGTCAACGGGTGCACCGGTTCCCGCTAAAGCTCGATCCTATTCTTTCAGTCGGGGGGAAATAAACTCGTATACTCTCCACCCACCCGTACGTCCCGGACTAGAATAACTACCGGGTATTTCCGGTTCGTAACACCACGCCATGACGTGTCAACATAAACGCTTCTTTTGAAAGGTGCACATGCAGATTGCACAAGCAGCAGGCACCGCCCTTATCCATATCCTGTTGAGGCCCTCGATCCTAGTGTTCCTTGTTATCAGGATATTTTCTCGCTGTACGTTATTGTCCTTTTCAAATTACAACTGACCGCTTCCTCACCCGCTAAACCCTACCTTACGCACAACCAAGGCCTTGTCCCGGATGAACCCGGCTGCTCCTATGGATAAGCAACCCAGCCCGGCAGTTTACTTCAGGTGTTATCGTCGACTGACACCCTCAGCTTTCTCCCATTACACAGCGAGTATTTTCCGCGTAGCAATGGCAGTGACTTTGAGCGCACACTCAGAAGCCGTTGGAATGGCACCGGGGACGGCCCGATTTAGCCCCGCACACCTCCTGGAATCTTAGATCGCACGGCGATCTCGGTTCAGGCACCAACCCCAAAGAGTGTTTTGAGTTTTTGGTATGGCTCGCCTCAATTATCGGTTTTCGCTGCTCTGTGCCTGTCAACTCGGCTAGCTGTCGTGTTTTGTCGATCAGTGCGTGGACACTCTCGGTCGATGGTCGTGGATGGGACTGTAGTAAGTTTCACCGAAGCAGGAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAACTTCGCTTCATATAACGTAGCCATAGTGCTGTCTGCCATCAATAAGTCTTGCTCAGTGGTGCATACGTCGGGGAGGTTTGTTCCGCCTGGTCAGAACGAGTCTAGGGCGAGCCTATAGGCCAGTCGAGAGCCAAGATTCTATGAAATTAATACGACTACTGGGTGAGAGGTCATACAATTCCCGTGGAATCTGTACCTAAGATATTTCCAGATAGGGATGGCTACTGGTTAAGTTGACAGTGTCTAGATACGTGAGAGCACCTGAGAGGACGCCACGAGTCGGAGCGTGGGCGATCACCCTTCTGAGTCATAAGTCATGTCTATATATCCCTCACTAAAAAGGGCACACGACTATACATGCTTGAGCTTTACGGTCTGGCATGTGGAATGCCCGGAGCAACCCAGTCTTACCATCCTTTACGTACATTTACCGACCCGGCAGTGGCCGGCGCGGAAACCCAGGAGAACGTCGGTCATGATACGCGCCCTCCGCCGAAAGCGTGCTCACACCTCAGGATATCAGCGCTATTACCGGACGTCCCGCGTCCACCATCTAATAATTCAGGTGCTCCTAATAAGTGGGCTGGAGAGCGAGGATTGATATACGTTGAGGAGCTCCGACGGCCCTCTCGTGCGTTTGATGTAGATTGCGTTACCGACGGAGCACGCGTTTGTCAATTTCTGTCTAGGGACGTTTATGTCCTCAATACGAATACCAGGCCTATTTTAGTGTACAAATCACTTAGCAGTCGGAATTGGAAACCTGATGGAAGCGT -------------------------------------------------------------------------------- /Week6/dna/sequences/11.txt: -------------------------------------------------------------------------------- 1 | GGGGGACGGTTTGTCTCACGCCTGTTGGTACCCTGAGTCCCCCACAATACCACAACCGTCGATCTTGAACGGTACCCTCATAGCGATAGAGACCCTTGCGGCTGAATTGCAATTACTCCAGTCACTTCCTGCCGGTGACCTGTCATGTATGAACAGGAGTCTCCTACTGGAGTAGTCACTTTTTGTAGACACAACTCGTGACTCACGGCGGGCGTGACTCCGCCTTATCACTTGGTTTGTATAGGGCCACTGGAGCCTGCGCTTGAGTCTTCGCTTGTAGCAGTAACGTTCCGGGAACACCCGTTGGCTATTCGGCGCCCGCGAGGTGCAGCGTAGCATTTTCGCGCCTCCAACGTCATATTAACATCCGAAAGGACCTATCTGGAACCAGACATCTTCGTTGCGTTCTATATATCCGCCCCACGTGGATGGATGTCGGGCTCGTTGCCAATAGAGCCTTATTAGCGTTTTCTGGACAATCGCAAGCAGGTCTGAGATGACTGCACCTATTTTCATGGGCACGAGTCTCTTGTCGGCACCTACGACTTATGAACCCGAACATGCATTGTTCCCGAGCACAGCGGACACGCAGTCGCCTTCCCTTACGCCATAGTCTGGGCCCCCACGGACTATCCCTCTAAGCACCTCGTCCGCTGACTATATTTCGAGTGAGTAACCGCTCCACGTGATGCCCCGGTTTGACAACATTACGCAGAGTCTCACAGCCATTGCTTCCGCCATGACATTCCGCTGGCTTCAACATAAATACACCCTACACAGAGACGGTTCTTCGGTCCGAAGTTCGGAGCTGCTTAGGTTGCAAGCAAAACCCTTAGGTCGCCAACCGTGTAGTTAGTCTCTGGGGGCGGGATGGGTCCTAGCCAGAATGATGATTGAAGAACCGTTCAGCAATTTTTGTTAGCGACTTTCCAGACGCGGTACCATGCGGTAGTACCGAAGGAGTACCCAAAGGTGGGCTCCGTTTTAAAAAAGGTAGCTGGGGCACCGGGAGCATCACGAGTTGGGTCGACTGTGAGAGTTTAGCACCAGACTTAGCGCTGTACCTACGACCTGGCTGTTGCACACGTAATACCGAAGTATAAATCACCTGTTAAACACGATGGACTAGTGACTTGTAGCGGTCTCCGCGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAACCGTAAGAAGATAACTAACACCCCTGATTGTACTATGATAAGGTGATATCTAACCATCAATCAATTGGAAACATTATAAATATAAGTCTTTGTGGTCGCTATCCTTGACTCGCAATGATCAAGGACACGGCTGCCTGATGTGGTCCGCCCTTATTTTTAACTCGAGGGACGGCCAAGGGGGTATATGCGACAGCCACCAAACCATCCTGACTCGCAAATCCCAACCATTAATGATGCTTAATTTGTTGGACGATAGGTAAATATATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCGACTGGAAGTCCTTCAGCACGACCCGAGATCATGGCCAGATATCTCCCGGCTACGACCAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGCGAGCGTGATTATAGACGACCATCCACTTCACTTGTGTTTCTGTAGGTCATCAGATCACGTCATCACCGAGGAATAGCTGTGACAATCCGTTAAACTATGGACGCGAAGGGCGAGATGTTATCAGAACCTTACCGTTGCCGCGAGCAGGAGCGTACTACAGGCGGGGGCGCACGTGCCTCTAGTCCGGCTGTGAAAAAGTTGGTCCAGCACTACGTTCTGCCGCCCACAAGTGGAGTACGCCAGTGGGGGTGATGCTGCATTCTGCGCTCCAATGGTTACGTCGGTCCAGTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTGACCACTATATCAAGGTGTCTTTCGGTCCAGGCTAGGAGGAACTTACCTCGCGGGAATAAGATCCCCAGTCCTTTTTAGCTCGACATTCGTGTTTTCTTGGGGACAGTAACTCATCATCCAAGGTGTAAAAGTATTCTAAGGTGCTCTCTTCTATGATCACACACTGCATCCGCTACTCAACATAGCTCGCGGGCCAACAACGTAGCGAAAGGTCGATTCTCCATACAAAAATATCATACTAGCCGGTTAACTAAACGGATTACCTCTTCCGCCGGAACATCTGAATCCATTACTACCGTGTGGTGCATGTTCACATCTTCGCGGTACATGCAGGAACAGTATGTAATGCTCTCGCGAGCCCTATGTGGCCAGGCTAAATGGGTTTACTGCTCAGCTAGTCCCGCCGAAATGACCATCAAATTGCCCGCTCACCCTTATCGCAGACTTCTACGAGAACGAGGTCCCGTTGGGATCAGAGGGAACCCCCAATTGTCAACGCTCCGTGGGTAGGAAAGATCACACCATGTTATCGAAAACATGGGTCCTCTGTATGTCGTAAAGGACCCAGCGAAAAAATTTATTAACGTGGATGGTTACCAGCTTGTTTTAAGAGCACGTCGACCGACACCAAGTCAATCTATTCCCCTCCATATCACGTTGCGAAGAGGTGCAGAGGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGAGGGCATCACACGGCGGTATACGCATTCAGACCTACACGATGTAAACGCCCAGTTAGGCGCAGATTATCACTGTACACCGACGTTCACCGCTGATAGGGTACTACCTCTCTAGAAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCGTTCCTAGTTGCTACCCAACTTGCCTCAATCGGTAGCACCTGAGCACTACGTGTAAACCTAGTAATGTTATGTACCGTGTGGCCGGAGTCTCAGCGACCAGAGAGTGCGAATTGCTCGAATATAGCCTCCGCCAAGTGATATCATAGTCCGGGTAACCAAGTAGTCTCTGTCCGACTAGGCCGCAAGCTTAGTCTAATCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGACCAACCTAAGTCCTTCGCGTGGGCTTTGACGGTCGGAAAAGGCAGGCCTGCCTTTCTCAATGTTGGATACAGTACCACACATCACTCCGCCGTGTTAGAGCGTAGGGAGACGTTGAGAACCGAACTACCGTGTCGCACATCATGATTTGCTTAATCAATTATTCGGTTACGGTATTCACGCGGACTCCGACGTATAGAATATAAGGTTTACACATGCGAAGAGCCCTGTGTATAGTTGCCCGCATCGAGGGTAACTATGTAAGCTATTGTGTGTGAGTAGTTAGCTACTAACGTGAGCCACCTTAAAACGCTTTGCAGTGAGTTAGGACCTTCGGGGTCCGTGCCACCTTACGTTCGGCACTTCTCTACTTCCTGGCCACCAGCGTTCAGTCGACGCAGGGTAACCGTTCGCGCCACCAAGATAGAAAAGCGGGTCAGGGAGATAATGTACTATTTACTCTATACTACATCACAGGATAATGGTAGAAGCGTCTGAAATCCACCATCGCTCTCCAAATGGGTGGTCGTTAGTGCATTGAGGACTGATCATGCGGCCGCTTTGACGAGCAGGGAGATCTTATGCTGTATCAGGATATGTCGGAGCTTATCCAGCGGCCACGCCGAAGGGTCACCCCATCAACCAGTCGGCCATGTATGTATCCCACCGAACCTGTGATAGTCACTGATTCCGGACTAAGACAGCCGAGTATACAACAGTTTCGCCACATGACGCAGGGGACTATGTCGACCGATACGACTTCCAGTATCTTCTGTACCTACAGATTCCACTGCATAACTGTTAATAGCAGAAGAGAGTCTGCATACGATGGCTAATTAACGGGTCTACCGAACTGCGTCCCTGGCAGATCTTGCTAGCACTCCGCTGCAAGCACACTGAGGCTTAAGCTATTATACCATCTTGCTCTGGTTGCAGACAGGTATGATTCACTCTGTACCTCCGGATCTTTAGCCTTGCATTTACGTCCGGCCGTAACGCAGAAAATTATCTACATGTCTGTCAGTCTCGCGGCCTGCACCGAGTGCTCGTCGACGCTCTGGCCAGGGCGAAGATCAGATTCCGTTTGACTTAAGGGTAGTTAGTAGGCGGCCAACGTCTGGTGAAAGGGCTGTTAGACTTGTAGACTTCCGTCATTGGGTCTAATACTGCTATTGATCTATGCCTGCCAATAACACGATGATTAGCTGTATAGTGGGTAATCAGGGAACGTTTACGTTCCTCAAGAAAGAACTCAAAGCCCCAGATAGAAAATACAGACTACCCAACTTGCGGGTTCCACTATATGTTCACCCGTTACTTGCTGCAAACCGAGATCACCCAGCATTTCGACCACGAGCCTTAGATCCAAATGCCACACACCAGTTTAGCGATGAATGTGTATAACGGGTTCTTACAGAGAACTACCAATCCGTAGCCTACGACACCACGGACTCTAATCACCAGGAAGATACAGAACTTGTGGCTGTCTACTGACCGTACGGGTTTGGCCAAAATGAAGCCGCCTAATGGTGTCACCGAGACAGTGTCTCGCTTACCAAGTCCGAGGCCCCATCACGAAGCGTCTGTAGATAAGGATCCGTTCCGGCGCCTGGGACCCGATCGAGAGTTCAGCTGCTGAAAGGGGTGGCGTCGTATGCATCCTTACCTACATCAGTTACGTGCCTCCACCGTTCACAGGGTGGGAGCCTTGACTCTTGCGGAGGGCGGACTGCTTTTAGCGCCTACAGGTCGTACTGATTTAACAAAGCAGAAGCGCTGCCGGGGTCTCATATGGACTATATAAGCGACACACCTTGGACCGCAACTCGAAGACTTCTGGCCGCTAGTGCCCAGGATGTAAACCGAACTACGCCAAGTTGGGAAGAGAAAATCCATCTGACTGCACGGTTCTGTGGAAGATAATGGCCCTAACTTTGCTCTATTAATAAACTATTGACGCCCAAAAAGAACATGTACGGACTGACTGGTACTTCAATTAGCCACTGGTAGTAGTCCTCGATTCAAGGAATCTGTGACAGTCGTACCGCTATATTAATAAATCGCTAAGTGCCAAAGGTCCGACCGTACTGACTGCTGATGTACTTGATTCACGGGATGTTAATAGGAGCTTTGCAATGTGTGCTTAAGTCCAGTCATCTACGCGCTTGCGGCTTGATCCCAGAGTATAACACATAAATCAGACTGTAGCG -------------------------------------------------------------------------------- /Week6/dna/sequences/12.txt: -------------------------------------------------------------------------------- 1 | AACGATACTCCCTAAGACCCATCAAAGACATAGATCTGTTGTAATTCCTCGCTTCCTTCTAAATGGGCAATGAGGAGATCATGACTTTGGCTACAATCAGTCAAAGAACTATCCCGGCCGGGGAGCACATAAATCCGCATGCGCACAAAAGGATGAAAGTACTTTAAAACTAGTACGTCACTTAAAGGGAAGTAGAGTCGCTCCTTGGTATGCTCCCCACGCCGCTGCCCATTTAAGATTTAGCTCATCCCTCCGGGGGCCGTCGCTGCCAACCTAAGTAGCTCGGAAGAATCTCTTTATGCAAACTCTCTTCTTCCCCAGGGACAACGTATGCTAGCCACGCGCGTATTTAAGCCAACCCTAGCCAGCAGTCGCAACGGCAGCTCCCGTAGACCGCAACTGACGTCCAGCAAGCTTTAATTGGCCAGCCAGAGGCGCGAAAACGGGTCGTTGCAACAACTGTTATTGTTGCTCCTTCCAATTTGGCGATATATGATATAAACTGTATCATGTTCCCTACAAGAACTCACCACTATCCGGTACTCACCAATTGTATTGTAATGCTGTGTGCGCTAGGCCATATCACACGAACTTATCTCCGCGTCTCTTGCAATAGTCGACCAGACTGTATGTGATTCGTGAAGTACCTCTGGGAGTGAGTGCTTAAACACAACAGTGTTGACCGTTGGACCGCGGATGGATTTCCTGATACGAAAAGAGGATGTAGGCATGTGCCTAACGCTGTCCGCCTCCACGTTAATTCAACAACCACTAAGATAGCACACTGTTGGAACCGAATCAAGCCACCAAGTAGACTAATGGATTTGTGGAAATGGGAGCTTGACCAAAACTGAAACCGAGTTATTCGACAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCTGGGCAAGGGTGTCTAATAAAACTTTGGAGTGTCCGGCAGCTCCAGGGATGGTCAACCCGGGGATTCTAGGCACTTGGGCAGGTAATCCGTTGTTATTGCAATGGGACAGCCAGGTCTGAGTGGAGACGTCTGTAATGTAACGACAAGTGGGACGTAACATATAGCCATACGGAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATACAGTAGGTTGACTGGATATCAGCAGTTCTCCATGTCCTTGTTGCTGCGTCGTGGCGGTATGTTCGTTCGACCGGCGAAATCGCCTAGACCCGTAAGTACAAACGACTCCGCCTCCACTTCTTTGCATATTGCTATCATCCCATGGGAGACACGTGTGGTGTCGCTTACGAAGTAGGAACCTGCAGAGTGTAGCACTCTTCACTGGACTACGCGACCTAACGTAGAACCCGGTAGACTGTGTTAAAGGCTCGGACAAGGTCGGTGCCAAGAATAATGGGCAAAACCCAAGCCGCATTCTATACACCCGTGACTTCCCAATTTCTGTGGCCCGAGAGCCGGTTCAATTACTTTGCCGCAATGATGACGGGTTGCTTATCCGGTGGAAATCCGAAGCATTACTCGGAAACCGCACCGGCATGCCATCATTAGATACTGGGAAGGAAGGGTCACTAAAATAAATTGAGGGTGACCCCATTGACCGTGCCGGAGCCGCTAAAAGACCTCGAACTCTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGGTAATTATGGCTTTCTCGTCACGCTAACATGGTGGGTAGTCAAAGCTAAAATTGATGTTCAGCCCTTACATACAGCGGATTCAGAACGTGATTACCCAGATGAGGTCTTCACCCGACGCGACTTTCTGCTAGCGGCGTGTTGATTCACAGCTTGCGAGGTGATCTCACTATTCCGCAGTTGGCCCTGTATTTGAGGAATATTGCTCAGCACGGCTCAGAGCCGATCCAACTCCTCGAAATTGGGTCGCTTATTATACGGTGGGAACCCCGAGACTAACATGACGGGCCAAGTTCAGTATGCAGTGTCCTAGTATACGGGGATAAAGTTACGGAGCCAGGACGGTTGAGAATACACCAAATGTCCGGTTCGACACTAAGATTAAACGTACCACATCTATTATCTACACAGATACGGGCATCGTGAAACCCAAGCGCAAATCGGAATATTGTCTGCGACCAAAGCTTCCGGATTAGTATTCAGACCTCTTTATACCTGAAGACATGTAACAGGCCCGAAGTCGCCTTCGGAGCTTACCGCTGTCCGGTCTGGTACTATTCCCGTCAGAGGGCTGCCCGACTATCGGTAGGACCCTACAGGGGCGTCTGAAAGAGTTCGATAAATGACGAACGCGCCTAATCGGTCCACGTGACGGCCATAACGGATGTGTCAAAGAGTTTCGCGCTACAGGCACCGATGGCTCGCTGTCCCAGGCCAGCGCATCTCCTTTTCAGCCCGCGCCGGGGAGGCAGATTGGTATCGATAGCAGGAATTAGAGAGTAGGCACGACAGCTAGAGACCGGGAAGAAGCCTCCAACTGCTCGTAAAAGATGTTTGGTCACCTATCATAAACCCCACATACCAATGCGCAATGGCGTATTCGCTGTCAAGAGGATTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAACGCACCCTTGACCTCTTTAGGAGTTACAGGTCCCGTGGATGACCGGCGCAACCTACGGCCACCGTAGTGGACACAATACCGGGGGCCGCCAACCAGAGGGGTGTCGGTGACCGTGTCCTGTGAACATATCACCATTTTGGTACGTCCGATCCTACTCTATGTGTACTGTTTTTCGCAAACAAAATGTGCGATAATCGTTGTCGGGAAATATTTTCCCTCAGGTGGTTCGGGGGGTCATCCTGAACAGTCACAATGAACACGGGCGTTTCTCTTCGCTTATTGAGCTCCAAATCCCTATCTTCTCGAAGCTCGATTAAGTCTTAGTCAGTGGCTGCCGTGATACGTTGTGGCTGGCTGGCAGTCTTTAAATTCGACTTTTCAATGATGTCAGGTTCGCACGTTTAGTGATTCGCGATCGATTACCTCCCAGACTGCCGGACTACTCCGAGCAAGAGGGGTTGACCTATTAGCATCGCGACCGCCCTAACACTCGCGTTCTAAGGCGCTCACTACGACGTCCAGTAAGCTGGCACGTTCTGTATATGTCTGGCTCATAGAGTCTGAGTTTGTCAGCGGTCACGTTAAGCATAAAACTGCCAACCTGGAAAATCATATTTATATTAAGTGTCGTAGTGGTACGGTATGACACGATCGTTTTGGGAAGTAAGTGCCCATCCGTGAATCGGCTACAGGCATCTGAACTAACAACATTGTCCCCCTTTAACATAAGGTGAGGGGTCGTTTAAGAATGAGCCAGCACAAGACATATGACGTGTTCCCCTCTGTACGAACTAAGGCAAGTGTATGGCGTTTCTCGTAACGCTATGTAAATCCTGCAGTACACTAGCATTCGAATTAGTCACGTGGGTTCATTAGAGCCGGGCTGCATACGGCTTTCACTCAAGGGTGAGGCCCGGCACGAACCTTTGCTTTGTCTGCTGGATTGCGTTAAGGTGTTAATTATGTTGCAAGTATCCCGATGATCCTAATACGAAAAGGCTAGGGAATAATCGTCGGAAACCGACCCTGATCCATCTCGGGTAGGCTCTGATCAATATTCAGTGACAGGTAGGGACCGCTCGCAGACTGGTCTCCCGGGTGATTTAAACCAAGGCCTGCTCTCCCTGGCTTCAAATATCTCCATACGTGCCACCTGCAATGGTACTTTAGAGAGAAGGCAACACCCGTGTCACTTATTCCGTCTGTTTTAGCGAGACAGGTCACCTGCATTTATTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCCGCGCTGCGTTGTAGAGAAGGCCCTCGTGATGATACGGAACCCAAAGACAACAGTGATATAAAATGCGGGTTTGACCATTCTGTACGTAAATGAACGCGTGTTAGTTGACAGGAGGCACGCACACATTGGTCGGCTGGCATTGGTCACGATCGGCACCTCGGAGAGACCCGCTGTGGTGGAAAAATTGCTCTCACTATAAGTGCTAGGAAATACTGAACTGTAGGGAGAGAGCCTGTTTGTAAGTGCCTTCGTAAGGAAGAAATGTCATAACACCAGTTATGTCCAGATACGTTTGGTCTTCCGAGACTAGACTAGTTAAAGGTGCCTCGTATTACTGTCGGAAGGATAGGGCCTCAGGTCGAGCTGAATTGAGCCGGCATCACTACGAAACGTAATGGAACAGGTATCGCTCAAGTTCCTATGGCATGCAGGGCGTAGATTGCGCTGGCCTGCATTCGCGGCATAAGACGTTGCAGCGAGAGAGATCCACGCGCACGGACCCGTCACTACTAAAGCTCGACCAGCGAATTCGTTCTCCCTCGAACAAGGTGCAGGCCTCCCTCCCTACGTGAGCATTGTGGCAACTGATAACAGCTGTATCTCTACAAAGCCCTCCGGATTCGATGCCCTATTTAATTCTACACCGGTTCGGGTACTAGGCGCATAAACTATGACTCCGGTCAATACTTCCCTAGTGTTTACCTTGAGGTTATCAATTGACCGCTTCGAGGCCCAGCCCGAGGACGAGGGGTACTGACTCCCCCACCCTGCTGATCAGGGGCAGCCAGGCACGGGGAGGTCTTAGATCTGCCTACTTTTCTACGCTCCGTGTCCGATTATTAAGCACATGACTAGCGGAAGTGAGTACCCTCTACCAGCCCCTGGAGTGGATTGAGCGTGGAGCACGAGAAAGAGAAATGATGTCTCGGCATAGACGAAAAGCACCTAGGTGACATCAGGCACAAGGACTGAACCGCGTGGTCGCGAAAGATGAAAAAACCACCGAAGGTGTAAGGGACTACACCGTCTGTCCAATCTACGGTTAAAACTCGCTTAACAGGTCCCA -------------------------------------------------------------------------------- /Week6/dna/sequences/13.txt: -------------------------------------------------------------------------------- 1 | AGCAATCCGGTTAGCGCTTCGCCGTCCCCTGACAAGTCCCTGTATTAGACAGAACACCAACGACTAGCCCAATCGTTACGTAGTAGCGCTTGTGGTGTTCCTACTGTCCCGGGGGGGTGGGGACCGCCCTCCTTAGCCGGCCTATGCTCGCGACAGTCTCGGAAGGATCCAATCGCGAATGGCGAAGTGAACAGGCTCATAACGGTTTGGTTCGTATGCATTGAAGGCCTCTGCCGGGAAATATCAAGTGGTATGCTAGCTGTGTCATAGTGGGTTATAAGATACACCCTGCAATCATGACAAACCTTACTGGCCTGCGCTTCGGACATAAACGCTTACTACTTGTATACCCTATTTAACATAGAGCCAGATCGAAGACTTTTCACGAGGCTACTAGCGCAGATGTGAACGATCCTAGAGTCCGGGGGCACGTTCGGGCGAGATACAAAGGGGCACGCAGTATCATTGATGGGCTCTGGCAGCACTATTAAATAAACATCAACTGGATGTCCCCGTACTGCACATTACTAGCTAAGAGTTCATATGGACAAGATCATGAATCAAACGCACTCCACGTTCGATAATTAGTGTCCCGAACGCTCGGTATGTTTACTATCGCATGGTATCGATCAAAGTCCAGCGAACGCACCTCATAGGGAACGCAAAACCGCCGTACTAGCTAGTGAGCGGCCAGACGTGTCGGTACGTCGCGACAGCGGGCCTTCAAAACCTTCGAATCCACAGAAAAACTTAGCCACAGTGTCGGCCGAAGGACGTATGTTGGTCAGACGAAATGTTGCGTGCCACTATGAGAAAGAAGAATACAGGGACGGCTGAATCTCTCGCGCTTAGTGTCGATGATACGAGAATCGCTGCCGTGTCTTAGTAGAAGAGCGTCGGTTTCTATCGGTCTACCTACAGCCATGACGTGCGGGTCTGACATTCTGCACACACAACCGTTCCTTAAGTTTCTTTACTCGTGATCCGACTGTTCGGTCAGTCCCGCCTCATGTACAACAGTGCCGTGTGCTAATATCCTGGGTCAGACACCGCCTCGTATTAAAGCGAGGGCGATCGCTGCTAGGGGTGCCTAATGGTAAGTAATCGTTCCCAAGCAAGGTCTTTGTGTAGCATCGATCTCTATAACAGTCACCAGGGCTCTTAGGAGATCTACGAGCCGACTTCGTCTGTATAAGGTGCTGCGTAGGCCCCCGAAACACTAATTCAGGCGTCTGTTAACGAGGGGAACCCCGGTTTGACCATGAGCGGGACCCGGCTCGATTGTGTTACCTATATGAGTACATTTGGTAAAGGCACGCACCGCTACATGCTGGAAGTTGGACCCATGAAACAGTTATAGCACTCTCAATGGTGTAAAGACTTGTCAGCACAAAGTGAGGCAGCGCTAAATGCAACCATGGCCTTCCCGACCGTGCTTCTGGACAGGTAAATAAAACCGAAACCTGTTAGGCGGGCGCCCGTTACACGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCGTCACTCCCTTATCCAACTGAGATAGGGCTCAATTGATTCATTACTTTGTATTCATATGGACTGGTGTGACTCGGGAAGAAGCCTAGTGGCACCTCACGATCCGCTAATCATCAAGCTCAACGTTTTCCCAAAAGACCCTTTCACCCAGTTCGATACCTACGAGATAGTAAATGACTATATTGTTCCAAGATCGTCTTGACAGGTTGATTACCTGGTCTTGAGAGCCGTTCTAGTCATACAGCGTCTCATCTTAGCCGGTAATCTGTGAGTATGCTTCAGCCTTTAGTTACTGCACGATGGGCAGGAACCTTTGAGCGCGCGCTGTCGCCTGCCGCTGCTGATGTTGCGTAGACTTGAGTAAGGCTCACATATAGGTCCCCCTTGGCTGGGGCGAACTTACCCCAGGCACTAAGGGGATTTGCGCAGTATGAAGTGGCATGGTTTTAACCGATGTGGCAATATTGTTTCATCTATGCCGGACGTCGTGGGACGAAGTATATGTCACAGATCCGTTTGATCGATAGATAGATAGATAGATAGATAGATAGATAGATAGATATTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTGTCAAACCTTTGCGATACGATTAGGAAAGAACTCAAACCCTATCTCCGTAGGCCCCCTCTCCGGAAGCTCCAAGTTAGAGGCTGTACCACATGAAGACATGCAGAGGACTTGATCGGGTCTGTCGTTTCCCGTGCGGGGGTGCAAGGCGTACAATAGGAGCAGGAAGTTACAAGTCACTGACTTTCGCTTGAAACTACGATACCACCACTTCGTCTCCTGACTTTCGTCGGGCCAATAAAACAAATGGGGCGGATGACCCTGGGGGGATGCCACCCTGCAATTGGAGTGCATGGCTCAGGGTTGTGCAAATTCCGAGCGGTCCACGCGAAAGCATTAATCAAAAGTCAGATGGCTCCGTAACACACCAACTTTGTCCGGATATCCTGGGCCAGCATGGCTTTTCCATCCACCCTCTCCGGTGGTCAAGAACCAACTGCAAGCCGAGAAGTGAATTACCGTACCGGACGTATTGGTCGATCTGGGCGTGTTAGAAATTGTTACAAATCCTCCATCGTTCCAATAGCCTTGTATTACCTATTATAGGCCTTGAAAAGGGAAAAGAGGACCGGTAGTATCTGCTGATAAAGACTGATATTAAAAACGGCGCGTTGTTATGCGATGCGTCACTAAAGCCTCGGGCGCCTAAGGAAAAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGTGTGGAAACCTATTATTGTGCGATCAACGTTAGAAGCCAGAAAGACTCCCCAAGGGTGTACTACTCGTCCTATCAGATTCCAATCTGTCCGTGCAGCGCGAACTTGCGTCGCGTAGCTGTCGCTTTGGCTTCGAACCCCCGAACGAACATGAGCTAACCCTTTCCGTACTTCGATGGCTAAGCGTCCTCGCTTTTTGGTCATGCTGACCTCCAGCTCCTGCTGGCCCTCAGTCAGTAGTAGGTCCAGTAAATAACTTGAAATGCCCGCGACAAGCGATGTCACCTGTTGCGTAGACGCTAGGTATGGACCATTGCAGTGCTGACTGGTCCAGGAGACAATAGGTAAGTTGCTAAGCCTCCCCTCGATAAATAGAGGCTGGAGTCAAGATAGAGCGTCCGTGAGTCTCATACCATATATCTTGGACTAACAGAGGAAGTCCGACACGTACAGACCACTGTAGCCTACTCTAGGGAGACCTTGTGATAGTCTTAAATCGACCTAAGAAGCGCTCGGACAGTGCCTAAAACCACACGTTGATCAATGCCCGCAACAGTAGAGCTGTGTAGTCCAACGGACCTTTGCAAGGGTGGGTTTAGCCCCTTCGTGGGGTAAGGAGCCTGGGTTCAGTGTGTTGGGGAACAGAATCTCCCGTTATGCCGCGTCCGAGCCGTGTGAAGCTCTTTGAGTGGATGTTGGTATGCCTTATATGGCAGGGTATCCAGGGCTTCATCTTCTCGTACACGCTCCCTCGCGGGGAACTATCATTAGTTGACTTCGGACACGCGGAGGAGGCAAATCACCACATCTGTACAGACGTAAGTACACAACTGTTTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGATATCAGACGGGTGTGGAGGATCGCGTTTCATTCGGCTGCTGCCCCGGGTACATATTACAGGACCGTCGCGGGGAACTTACATTATCCGCCTCGGCAGAAACGCCGTTCTGTTTTCTGCCCTAGTGTCCGTCAAAGAATACGATTGTCCGTCGATACAATAGTTCCCAGGGAGCTGCCCAGCCGCTTCTTCCCGCGTGCCCGGGGAGCGTTCTACAGAGACATAACCGGCTTTGCTTAACCAGCATAACTATATCGACAAGTGAGCAAGATGGGCTAGGCCGTTGAGCCAGCCGTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCGAACAACGTCTAGCGCGAAATCACTTGATAATTCACGCAATACCTGCCTGATTTAAAGGTAAAGACGTTTTGCAGAGAACAAAGACGATGGACAGAGTTTACAAAACCTGGATCGTAGGACAGGGGTTTTTAACATTGAAAATTCGTCGAGCCCCTGACTCGTACAGACAATCAAAGTAGACATTCTTTAACGTTCCCGCCACCCCGGTGGGCAACTATAAGGGGAGACTCTGTTGTAGAACTTGTGAGCATGTCTCTAGTCGGAAAGTGCTGGGTATGACCCTCCACTGATGCTTAAACGGTACCGCAAACCACAGCGACAGGGGTCTTATACATCCTCATGGGAGCGGCGGGTCGGGGGTGATTAAGTATTGAGAAAATCCTAGGTATTATTACGTACGCCATCCAGCGAGTTAGGTACTGAGAACAAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCCCCTGTTCCGCGGTCCGGGAGACGGAGGACTGGCTGGATCGTCAGTTATGACTCCGTATTTCCACCTCGAACAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAACCAGCCTTCTTACCCACAAATGTAAAGGGCGCTTCCTGGAGCGGGAACACCTTGGTCTTTCACTCTGGATCATGCCCGGTCGCTGTGGCCACTAAAACGACAGCTTTGTCGGTTGGCATTTCTCGTGTAGTTCGAGATCAAACCATATTGGCCGTGGACGAACATCCGTATATGGGCTTAAATTCACATGAGGGCTGATGTACACGATATGGTCGCTCTAGGACCCGCACACGGAGAAAGGGAGGAGGATAGGAGTGATTACAAGAGCCAATGCTACTCAACCAAAGTACTTCGTACGTGATAAGCGCGCTCTGTCGCCCTGAACGAGGTCGCTTAGCCATGCCTACCCACATCACATATACAGGGAGAAACAGTACCACTACATGGTCAGCGTCCCGAGATAACGATTACTAATGGCGTTTCGTTGACTTCCCGGTATGACAATTTACAGGACCGGGTCGGTGTCCCTACCGTCTCCAAATGAAGGAACCAGCTTCCGACCTCCCTCTCACGGTTCAAGTACGAGGCCCTTCAAAAGCTCCTCCTTTCGAAGTGCCCAGATGAAGCTGCTGGAGTGAATAGATTTGCACCCCTGTAGTTGCGCGTAATGCTCGGGGATAAGTAAGTTAATCATACTCGGCCGGCAGCTGAATAAGCTATGGCATAAAAATTATCGCAGGTCCATATAATCACGTAGCAGGGCAAAACCCTTGCGGGAGGATGCATAGACAATATTAGATGGTGCCATAAGATTCCAATTTAGCGACGTTGATCAAAGAGGTGGGTGGCAGCCTCGCGGGGTTTCGAGTTCCAGGGTGCCGTGTACGGGCCCCACACTCCGAATTGCTATGCGCCCCAATCTGTCAGGAGCGTAGTCCGTCTTGCATATGCGTACGAAAAGATGGAGTGCCTCCTAATTATCAGAAGGTCGATCTGAGATACGTGACTTAAGCATGGAGGATTTCGATCTTCACAAAGCCTATAGACCTACCGCTATGATATTTGACGCTCACTATTACTGACATATGT -------------------------------------------------------------------------------- /Week6/dna/sequences/14.txt: -------------------------------------------------------------------------------- 1 | GGAGGCCAAAGTCTTGTGATATCGGGCAACTCCCCGGGAGGAACACAGGCCCACCGAAAACAGCTTGAAATGGGAAACGTTCCCGATCTACGCCGGGCCAGAGGACGAACACACGCTACCCGGGATCCACTGTGATTTTCGGATTTCCAACGGCGGAGAGCCCCGTTCCCTAGCAATTGATCCCCCGGAAGAAGACACGGAGGCACTACTCAGGTATGGGTAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGTTTCAAATTACCTCATAGACTCATCGCTTACCACTATCCAGTTTGCTCCTAAACTACCTTCCCACGACGACTCCCTATTATTCTTATTCTGGCAAGGAATAAGCCTGTTTGTGACAAAATATCCATGTGGAATTTACCCGCACCCAGTCCACTTTGTCAGGTGGGACTAGCGATCCCGCACTAAAGCCTCAATATTCTCAAGTGTGACAAAGGTGTCTTATCGTGAACGAGGCGTAACTGGTAATATCCGATAAGTGGATGGCGGAACTATAAGCTGTCCAGGTGTACCGTGGACGGGTCCATGACCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCGATCGTTGAGCGTCCAGGTCAGGACGGGCCTTAAAGAGGCTTGGTGACGGGAGTTACTAACAGGAGGCTGGCACGAAAGGCAATCCGTAATTCGGCCCGCACTCCGCTATTCCTGCCGGTTAGTTACCTACCGCCCTCCGGCAGCACGAGAAGTCAAAATTACCGGTATCAAAACCACACGAACCTAGAACCATGGCGTTCAAGAGATCGCCCCCCAGAACCTCCCCACACACGACGTTGCGGGAAAGCCAACAATTGACTCCATTGCCTAACATATAGGAAGTTTCTATCGCCGTACGCTAGGGCCTATTTGGGGGCATCGGAAGGATAAAAAGAACGCTTAGTAAGCTTGGTCTATAGTGGTATACCGTAGAAGCTGACGCAACTCTGACGACTCAAGTTTATTACCACTTTAGTAGTCGCTTCTTCAGGCCTCTCTTTTGACACATGGGAGACCGGACGGTCATAACCAAATTGTAAACAGCGGCTTATCGTCATACCCCGCTCCGATAGTGGGGATAAACTATGTGGTACCATTGAGCGGGCTACATACCTCCGGTAGAAGATAATACGGCTATCGTACAGTCTGTGGTCGGGCCTATAGACGAAGACGACCGGAACGAACGAAGCCGCACGGTTGGTGAGGTCGCATTGTCTGTAATACAAAAGGCACAAGATGCTACTAATCCTTTATGCCGCGAGCTGGCAACCGCCCTCTGGCTAGGAATTGGCGCGCGGTCACCGACCAGCTACAACGTCCCTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGAGTTCCTGATCTGTAGGCGGTATCATAGGGCATCGCCTGGCACACTGGGTGCCAGACTATGTGGAACCCCCCCGTGGGAGCTAGCTTACGGCTCAGTGCCGGTGCGGGGACAACGTCAGGGTTTCCAGTGATTGACGTCACAGAAGTGGCGGCTGGTTTTCTTCCAACCCACACATGGACGGTCGAGTCCCCTAGGATTTCGTAATACCCGGGTTAGAGGAACTAGTCCACGCTGAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAACTCTCGTGAGCTTGAGCATGACTGATACGGAGAGGTGAGAATGCCGTAACAGTAACGGAGCCGTCCGTTGTTTTCTTTGTAACTTACTAGGTACAATGCCAGCTGATTGGCTGACACAGACATTTCCTGTCTTTACAAGTCAAATTCTTCAACTTACGCTGGGATATGGAGGGTCTCCAGGTAAGAGTTTCTTATGATTGCAAAACAATATCGGGTGAACCCTCCTGCTGGTGTTCGTAGCGGCGTCAGGATTGGTTGCGGGCACGTCTTTGTATCTTAGACTACTAGCGCCGAGATAGATAGATAGATAGATAGATACCTAGTTAGCTGAGGGGCGCGTTGGTTTTTTCCTACAGCGCCTGAGCTGGTGCAAGCATAACATGAGTCTGGCGCGTCACTCAGCCATGAAGGTAAATGCTGGGGAAGCGTTATATGTTGTGTCGAGCCGTATCGGAGCATATTGTCTACTGAATCCTAGAGGGGTGCCTTAATATGCTACATCACTAACCCATTTAGGAGACTAAATATACTAGAATCTGCCTGTTTGATATTTTCAGAAGAACGGGTCGGCGCTATCCCTTAGGAAACTACGGACCGCCTGCAGCGAAGGCGCCCATCTCAGTCATCTCACGACTCTATGTTTTCCGCCATTTGCCGATACACTTATAAGTCGCTCGGTCCTGCGTCACTAACTGAAATATCGATCATTGATTTGTCATGATAACCTGGTAAGGTAGATAAACTGTTGCATGGAGTGTAGATGTGTAAGAATAATTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTACGTCGCATAACCTATCCGGGAAGGGGTCAGACAAGCCTACCACTTGTCGGTACTGATTGCCGCAAGCCGTCTCAACCCTCAGATGGCAGATAGAAGGAGTCAACATCTGACGGCGTTCATTGCTCGACTCGGACAGAAAACATATCTCGTCCGCGGAATCCAGCACAGGCAGCAGTTGCCGCCGTGTCAGCTTCCAGCCTCCCAGAGGGGAGCCGGTGGAGTTCTCGCGCTACTCGCAATTAAGTGACGGTCCGACGTTCCTGCGGTAATGACGATGAGCCTGAGTTAGTAAGCATCATCCTCCAGACTTCCGTGACAGTTTTCAGCCGCACATGTTACCGTCCAGTCGTATTCTTCGGAGCTGAGGCACCTAACAGGGTCTCATTTACAGAGGGGAGATTCTTGCATCACTGTGAGTGTGCTCACAGACACCGTTCTTGTTGACTATGGAAAGACCTTAATTGCCATCGAGACTGAATATTGGCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCACGGAAGTTATATGCCACCAATCCCGTCCTGGGTCGTATGCAGAGAGCTTACGTACATGGGGATAGCAATATGAGAGACACGTAGCAGCAAGCATCTTTCTACGTAAAGCTCCCTACAATAGTTACCTTATTCATGTCCAGATTTACCGTGCTGGGGCCCTTCGACTCTAACGACAGCTAGATCGCACCGGCAACTGCCATCCCCTACGGACAATCTCCGTGCGGATGTCAAACCCCTCCTTGTAGGGTTACTAGTATGAGTAGCGGGTGAGAGCACTCGAGCGATGACCGGTTTGAGAAGGAAGGCATCGACGGGCAGTTGGCGAGGCTCAGCTTCGGATCCCGGTCTAACCGCTAAAAAAGCGACCGCGCTGAAATTATTACGGAGGAGGGACCACCCATATGCCGTTAAAAAGCGTCCTTAGAGTTTCGGTGCAACATGTAGCTGGATTAGCTCCCAACTAGGCACTATCTGGTGCCCTTATAGCTGCACTGGGGGTCTCGCTGAGGCAACTATATGGGGTTCGTTAGTAGAGATTCCAATAGTGAGCCCCCTAAATTGGCATGTAACGCGACGCGGATCAGCTGCATGAATCGAGGCTGCGCATCCTTTCTCGTGCCAAGCCCTCACATTAAAATACATGAGTTTGCACCTGTGGGTGATTGAAACGGTGATTGCCTTAGCTACACTGTTCAATTCAAACTCCAGCATATCCGGAACATATTTCTCTACCAACACATACAAAGTGTGGGCCGAACTGCTAGCCTGTGTGTCGATACGGCTTAGCCACTTTTTATAAACCAGCATCAATGCACATAACTTTCACCTTAGTTTCAAGTCTATCCGCGTCGTGCCGATGCACGGCTAGTCGACCTTAGGGGGTGGCGTCTGTTCTCAGGATTGTGCGCTGATAGCACCCGGACTACGTCACCTCGCCTGTCTACATAATTTAAACCCTCAAAGAAGATTCCTTTCCTTGGAGGTTGTAGCGGCATGTACGCACGGGATAAAAGACGATGGGTAATAGACGGTGGACCTGAAGCATACCGATGTTGCCTTCCGCCTCCTCATTGCGGGTAAAACGACAAGACAGGCATTAGCAAGGGGACGGTTATCGACATGTTAATGGCACTTTGGTAGCATGCCAAGAGCAGGGCGTGTCTCGGAGTCAGGTCCACGACGGATTGTGCAAGCACGCCTCACGCCCAAATATGCCTACTAAGGGTACGTTGGCCCGTATGTTCAAACGAAACAAGGCGTGACCATCTCAAAATCGAGCGAGCAAGCGGCACTTTTTATGTTTGCGCCATTAAACATCAAACCGTGATCGCTAAAACAGATAAACCCCATTAGCTATGATTTCCGATTGGTGAGGCGCTCACAGAGTTCCTACTACTCTATGTGGCCCACACCCTAGGATCATGGGCACGCCGTTTGTGTCTTGGCCATCCCGCAAGCCTATCTTAATCTCCTAAGACGTCAAATCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTTGAGCTAGGCACCTGGGTAACAGCACATAGCTTAACAGGTCGCAAGGTAGATCCTACTCCATGGGATCGCTCTGGGCATCCACGTAACCGTCCATCACTTATCGTTGCAGCACTCCTGTACTTCATGCAATCAAAGGTAGTCAGATTGTCTCAGATACGCGAATCCGGCCGTCTTCATCGGTAACAGAATGCCTTAGATTATCCCTCCCGTGCTTTCATAGTAATAGTCTGCCATACGTTACGATGCATGTTGGAGTGAAGTGGCGCTGTAGTATGTACCCCCTGAACTGATCTATTAAAAACTTCCACTATAGTTCAAAAATAACAGTCGCGGCACGACTCCATAAGTTGAGCCGGTTAAACGTCCGAATTGAAAGAGCCCAGCCTAGTGTGATTATCCCTGAGGCACTCGGGTAGAGCAGCACCACTGTTAAGTAGAACCGGATTGGAGACCCGCGAAGGAGAATCCACTGATCGG -------------------------------------------------------------------------------- /Week6/dna/sequences/15.txt: -------------------------------------------------------------------------------- 1 | GGGTGAATCTCGGACAAAAGGGACCCAGTAATGGGAAAACACCCTGTACTTTCATTTATCTTAAGGAAAAGGCACTGCGACTTGTGACTGTTTTGTGCTTACCGGTCTGCTGACCACCTCCGCAAGATTCACCGGGCCCTCGCCCCTGGGCCCGCGGGGCTGTTTCCCCATTAATTCTGCACGGGCGAAGGCGGCCCCTCGGCCCGATAACGGACGTTGAAAGGCACCCAGTGTACCAACTCTATCGTTGTTAATCTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTATTACAGCGGCATCACTATACTATAATAGTCCGACATGTTAGAATTCTGACGCGTCGAACCGTAGGCGAGTCCGAGTTTCCTACTCCTCACGTGGTCAGAAGTCCCGCTCGAGGATACCGATAAGCCTGAATTCTTCATTTCTACTAACTCGACAGACTGACTCACGCTAGTTTGGTTACTGTCCCGTACCCGCGTTTTCCACCTTAGTCTTGCTGGCGTACACTTTCAAGCGATAGCATGCTTACAATAGGCTATTGCGACGTGTCCGATCCTACATGTACTCATATATCGCAACGGCCCAGGTTACTTAGGGACTAAACGGCCCTTTAAAGCGAGGGTAGTAGAATTCAGGCCACTGAAATTGGGATTATCTAATAAATCACCCGCCGCCGAGATAAGGCAGCTTACGAGTGAAGTTTGCATCACGTGCCTTTGTATTATTAATCTCGACTACCAACTCCTCAATTATAAGCAAGTTCGTTCATAAATAGTCAGATGCTTGGGGCGCATGCGGTATTGGAGTTGCCATGGTCTACACGCGGCCCTATGCAAACTTTTCTTAAGCGAGGAAGTCTTCCGTATTGCGTTGCATTTTCTCAATTGTTTTAGTCTTGTCGTAACCAATGCGGTAAGAATGCGTTTACAGGGCCGCGACCCCAACAATCCTTCCTTCGAGGAAGGTACTGAGTAGGGCTGGTCTATGCCGGTACTCCTTAGGTTGTTCACTCATGCCGATACCACTCTTGGTTTCTCACCCTTATTCTGGCACTGGTAAAAGATAAAGAGAACCTCCAGTCTAAGCGATTTACTTGGACACGCCCTTTTTGAAGTTCGGGCACACTCCGATTACCTAGAGCCCTAATGGGAGCCCGTAATTTCCAATAAAAGGAAAGTGGCTATCAAGCCATCCGCTCGAAGCACGTCATCCGGTACTTAGGTGTCCCTTGTGTCGCTTAATTAGATGTTGTACGAACGATATATACGGGCTAGGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATACGTCCGGCATCCAGCTCGTCAATCTTTAAGTGGCGTCATCAGTAAGTGCACGTGGTCTTCCAAACCCTGTGGCGACACTATTAGACGTGGTCGGATCGGTCTTTATCTTTGGTTCTGTAGTAGGAGAACTCATGGGATGGTTATGGAGTTTGACTACAGCGTCTGGTCTCGGTAGTCCCCACACCCTCTAGCCCAACCACTAGAAAGTGACTAGTAATATGCGTTCTGCGAATCTCAGGGGTCAACCGTGACTATTGATCTTACCAGCGCATCGCTCCGCAAGCTCAGTAAATTTGATGTTTTTCCACAACCGAAAGAGCGATTAAGTACTGAACAAGAGTGTTAAGTCCAGTACTAACAATTAGATACATACTCGACTCGTAGAATCTTTCGTATTCCTGGTCGTACCCAGCAACGCCAGCAGAGTTTAGTCGACTGGTAGTTTGGAGTTTTCGAGGACGGAGACTGTGCATAAACTGTAGACATTCTGAAGCGCATGTCGGAGTGTATTCACGTGCACGCTCACCATGAGTTCAGGTCTATGGTGTCGGCGTTCACAAGTCCATAATCTGCGTCTCGTGACGTGACTTATCCCTTGTCACTCTAGTTGGACATCACAGTAGCGTTCGCCTCCTTCGTAATTCCTATCCCCAAAGAGAGTATTTCAATTAATACTCTAAACTCGAGCGCCGAGCGACACCATTCCATTCTAAATCTGGGGGCTCACGCGCTTTCAGTCGTCAATTTTATCGCGAAATAAACATGATCGCTATAAGATATCCCTTCCTCATCTGTTGCCCCAACCTGAGGCGTTCTAGACGTACACGATTAACGCGTTACGCGACAGCAGAATCGAGCTACGTGCAGAGCGTATCTGCGCCGGGGATCGCCGTAGAAGACGGCGCTAGCCAACCAGGGTTCGACGAACTGCCCTAGGAAACAAGCAAGCATGCTCGTGAGAGCAGGACCTTCTGCAGAAGATATTGCGATACATGAGTTTCTACGGTATTGGGTTATGGAATCTAAGAGGGCCAATGGAAATAGTAAGTTGGGGCGGATTATTTGAATACCGTTCGGTGGACTGTTTTCCGGAAGAGCGATGCCACCTCCTTGGTGTCTGCATCGAATAGATGCCCTGTCTTTCGTAATCGGTGAACCCATTAGTGACTCATTCGTGGCCGATACATTTACTTATACGTCTTGAGGCGCAGCAAGTCTAGTATGTCGTATAGAAAGCAGGTTTGCTTAGTTCGACTTAAGAGTGACGCTAGGTCACGAATTTCTCGTCCGGGGCATGTCAGAGATTGATTCCTTAGATACTGGCCAAACCGATACTACGCGTTGATAAGTGAACGACATGAAAGTTGACAACACCCTCTAGGGTTCGAACCAAAACAGAAAGTAGGAGCAACGTTCTCGGAGCACCACATCACTTGAACCGCCACTTCGACTTTCACCGAGTGACATAAAGACTAGTGGACCCCATCTGTTACCAATAAGGGGCGTGTAGATCAGCACTGGAATACAACACACGATGCCTCAGTCATCTCACTACGTGTCTCCTCGCTCCGCGTTCGCACTATTGCTCGCGCCCACCGCACACTACCGTGTTGAATGACGAAAGTTGCGGGGCTTACGCTCGGTGCAAAAGTTTCACATCTCTTGATAGCATTGGGCAACGCCGACGTATAGCTATGCAATTCACACGGCCGCAAAGCTATTTGACTGAACGTCTAGCATAGTGGTCAAACTGGCTCGAGCTAGATCTTGACGCACGTTCGGTATCTTGGAATTACCACCGGTACATGAGAGCAAAAGGGGAATCCTTGGTATGGAATTTACAAACCTGATCATCTTATTAGTGGTGTGATGAGATATCTTCATCTTTATAAACGTGGCGCGGCCACTTAGCGCTCAACGGCAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTCCGTCGGCTCTGCGACGCGCGGAGTCAGTCTTCTGCCCCGGGGTCAGCCAGTCAAGACCTGCTGGGAAACGAAGAGAAAGAACAGTGCTAATGCAGGCTCCTCTGACGTCTATGTACTATAGCTTTTCCGCACGCGGAATCTGTCATTGCTACAAGCCGTGCCCAGGGCGAATATTCTGGCCGCACCAAAAGGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAACGGGGCTTTGCCGTCAATAGCACGAGCTGAGACGGGGAAGCCCGTATTTCATACAGGTCACGTTCAAGAGACAGCGCATTAAAGATCATGCGCGGAAGGGTTAGCAAGGTCGCAAAAGGAAACATTGTCTTTTTCAAAGGGGCCTCTGCCCCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCCAGATAAACACATGTCTTGCGTTTTCTCGCCTGTTACTGGCTCGGCTCGCCTATGTCTTTTATATAAAACTATAAGGGTGTCGTCTGCTCCGTTTGGTCGGCTGAACGAACCTATGTTCTGTCTTTACCACACTTTCTCCGTTGCAAGGCTCAACGCCCCCAATTTTAAAATGTTCGAGATTCTGTCTGTCTGTCTGTCTGTCTGAAGTTAATAACCGAAACGATCTAATTTACAGTAGACATGGGCGAATGGCGTAAGCAGACAGTGACCGATAACGCTTCCTCCGCGCAGTTGGCCCCGGCTGACTCAAGAGCGGTACGGTCGGCCTTCTTGGCCATAGCCTACACACATCTCAAATGTCGCAAAGCGAACTACCTGCACCGGAGTCCGGGAATCTACTGCACGTTGGGCCTCTTGTACTGATTGCTGCCCGCTACGAACTAGAGCATAATAAAACTTCCGCCGAACCATTGGACTGAGATCAGAGGTAGCTTGATATGGGATCAGAGTTAGTCGATCCAAGTGAAGCTTGTAAGCCAATAGATTGAACATAGGATCATATTACCCCCACCGGTCCCACATTGCTGGGACGGACCCTGTCAGAGAGAGATCTAAACATCATTTGGACTTTGCCTATCTGCGGGACACCACAGGAGCTCCCAGCGCACGAAAAGAGCGGATTCACTAATCCTCTGGCAGTCCTCTTGAGGCATGGTGGGGATGGGTAATTAAGTCGAGGCCGTAGCACGGGATCGGCAACACAAGAATGGCACAAAACATATTCCCTTAGCTCCAAGATGTCGTAGTAGTAGTAGGATGAGAGGCGTGTCATGGGTTCCGTAGTATAGTGCATGCCAACTGTCTTGAATGCTAATATAGATCTTGGAGGAAGCTGGATCGTTGGTCCCTCCGACAGACGATTAAATAGTGGCGTAGATCGCACAAAGTTGCATTAGCAAGCGGGGCGTATCTAGAGTTTACTGTGCTGTAGGATCGGCGCGCTAGCAACAAAAGATTATCCACACAACAGACGCCCTCTCATGTCATAGACCGTGGGGGGGTCCGCACTTTTGGATTGCTGCTATACTATAAGACTCGTCTATCAGAAAACTTCTCGATGGTCCGGAGCCTCAGGACACCCCCCTCACCCATCGCCGGGCAAATGGCTCACCTCGATAATTTTAATCAACGGTGAACATCCAATTCCACACGGAGAGAACCGTACGTCTCAAGATCACTGCTTGTTTAAAATTGCAGAGTAGACCGATTCCGTACTTTAGAATCCAGCGATCCCTCAGCATGTCCATTTGCTCGACTTAATCATGCTGGTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCGCCTCGCTATCGACGTCGCATACATGCTTAGTTCTTGCCCAAGTTGACTGACGATCTTAGTCATAGTCTCACACCTGATA -------------------------------------------------------------------------------- /Week6/dna/sequences/16.txt: -------------------------------------------------------------------------------- 1 | CAGTCCAGCTGACGCCATTACAGTTATGCCCTTAAACCCGGGATAACACAGATCTACCATGCATATGACTCGTCACTTCCGCGCTTCTTTGATCCGCAACAGACTCTCAACGGCTTAGATTCCCCCACTACCGCGGACCTGACCTAACACCTGGCTGTCAAGCGACAGCGATATGACCTAACTTGTGGCTGCGAACATTTGTAAATAGGTTGCTGGCACATTATTGGGCTGCACATGGGTGCAGATACCTACGCCTACGACTGATTGAGTTGCACTTGCTGTGCCTGGAGCCACAATATGGTACTGCTCGATCTCCACAATTGTGGCTACGCAGATGCGGCTAAAGTATGAGGCTAATACCTTGGAGCATATCAAGCTCGTGCCGGTGAATTATCCTCGATGAATGCAATTGCCAGTAGGCTGGCCGATCCGGCAACAAATAAATTGTCACTCGTTAGTGGGCCATTGTGTTAGCATACTGCCCTCCCGCGTATGGGTATCCACCCCTATTGCACTTCGTAGTGCTTTGTGTCACTGATGCGGTTTCACTTAAGCGAATAGGGGTAATCTCTAAGGTGTAACGAGTGTTTTGAATAAAAGGAACATAGGTATGATCTGGTTACAGGAAACTACTCGCCGTCCCCAGGAACTCGGCGTAGTTCTCTTTTCTCTGGCACAAGAGCCACAAGCTGTGCTGCATTCGAGGATTCCTGAAGAGACAATTCTTAGCTCGTGGTCTTTTCTAGGTATGCTCACCAAACGGAAGTGGGTCTACTACTCCCAAGCTCTAAGCTTCACCGATCGTAAACACTGATATGATTAACGCTCGAAACGTCTTGTACCTAAGGGTAGTAATACATACCCAGTGAGCGTAGAAAGACCTGAGCACACGGGTAAAATGTGAGATTGAATACCGTAGAGCTTGGTCCGCAGTATTTCCGCTCGTGACCTCTGCATTGTACGGCCGCATTGGCAAACAGACCCGCATCGCTTCAGTCCTTCTGCTACACTGTAGACTCATAACAACTAGTTATAGCGGAGAATACACGGGCCAGGTGGGAATACGACTTCTGCAAAGGCATGGAGTCCCGGTTTGACGAAGTCCATGTTCCGGGATCGCAGATGATGAGAGGCTGATTCGTTGGCACACCGGCCGGCACCAGCCTCGTGTCTGTTCATTAACGCCCGGTCGTTCGAAGCGCGATAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGTTTTATTCATTATAAATTGTCATCACAACTCATTCTTAGTAATAAATCCTGCTCGACAGATCCTGACGCAAGGGTCATGCGACCTATAATCCGATCAGGTGTCCGGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAATCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGGCTTTGACTAGAAAGTGAGGGCAATTGTCCTTTCACCATTAAAGAGTGCCCGAAGATCATCTACCCGGCACCGGCCGTGTGCGTTAAGTAGAGTGCTAGTCGTCAAAGAATGTGCCGGCACTGCGCCCCCCTAACAGGAACGTAAGAAACTGCGTTTGGTATACTTCCCGTTACTCCACTTGTGCATCTAGTGTGACTCTTTAGCTGTGGAGCTTGGTTGAACGGGAATAATTGTTCCGTAGATGTAGTGCGTCGTTCGCGAAGATTTAACTTTAAGATATAGCTGCAAACAGTCCGTTATAGCGGGTGCGCCGACGGGTCGGCCACACACTCGTTAATGTATGAAAGAAGAGGGCTCATCAAAAATTGTCAGTTCCTGATGGTCGTTTGTCGCCAACTGCAGGCTACCTGGGATGGATTATGAAAATTTTCATATGAAAATATTTCCCATCCCTTAGAAGGTCTATGCAGGATGCCTCGTGAGCCTCGATGAAGTTCAAGCAGAGATTACGCGTGTAAACAGTCGGCGTATAAAGCATTAACTGTGGTCTCCGGTTGGCTTTATTGTCGATAGGTTAGGCAGAGAATGCTGATAACAAGGTGAATTACGCTCTAACATGCAAACTTCTCAAGTAGCATAATACAGTTACCGATTAGACAATCATAACTGGCCGTAGCGTAACTCAGAGTACCATTTTCGACGCGACCCTTACTAATGTCTTTACCATCCACAGTTCGGACGACCAGTCGACAACGCCCGGCACTGCACGCGAATCACGAGCTAGATCATTCTACTCGATGGGCGGGCCTTTTATTCTGAGGCTACAGAGGACGTTTGAAGATAGCACCCAGCGCGCGGCTTTACTGTCACCTTCACTGGGACCGTATGAACGTATCAGGGTCGGAGACGTCCACACCACGGAGGCTATGATCTCCGCTACTCCCGGCAGCGTGCAATCGTTACGCTGGCGAAATAGAACGTACACACTCAACTCAAGCAATGCTTGGTCTGTTTCCTACACAGTTCGATATCCCCATAGCAAGGGGACTTTGTAAATGGCTTCTAATACCCATGTGGGCCTTAAAAAAGAAGCCGACGCGATCGCTGCGTGTAGATCAACAAAAGCCCTAGTTTCGGGAAGATATCCTACATGGGGGTGCCCAGGTCGAGGCGGTCGCGATAGAGCATAAGCACCGTCCTGGCTCAGTCGCCAAATCTTAGATGGAGCGCGAATGGTCTAAGTACTGACGTGATGATCAAATTAGATCAGATAGCGCTCCCGGAAAAGGTATCACCCAATCCGCCCATCTACCAAGAATCTACCCGCCAGGGGTTTGATCAGCCGCGTTTGGCTGGCATACAATATTTGAAGTCTGCTGTCAACGACGTAATCATAAGCAGCTAAGTGATGATGGATTTAACATTGCCGTGGGTGATAAGGTTATTCACAAAACACCTGTCCTTTCCTCAATTTCGTCGCTCGCCATCCGCCATTTACAAGGCATAGCCATCGTACGAGTCTCAGGAAATTGACAGCTATCAAACTTAACAAAACTACAGCGCATCGTAAGGGCATATGATCCATCACTTGAAGAATACTCATGGTCGGAAGCTTGGAAATTGTTGAAGCGGAGATCACGGTGTCATTTACTCATAAGCACATGCAAGTCGGCGACGGTACTCCAACTGTATGGTAACTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTATTCAAACTGGAGTAGCTTGACCCTCCACCTGTCGACTAGCCGTAATTGAGGTATGGAGGCAAAATTCAGGGCACTACTGGGGCGTGGGCAGAAGTGTTATAGAAATCATGCACACAAACTGGACAGTCAATTTCTTTCTCGGGGTAGTAATACAGCCGTAAGCGGAGTATTAGTCAATGTACACTCTATCCTGCGTCAGACCTATCACTGGCAGAGTTTGCTTGTCGGCCACGCCATTGAGTGTAGTGTTTCTGAGTAAACTTTTATAATTCTGGATAGTGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGCGTCTGTTACGGACACGGACCTATCCCTGAAAACGAAATCAGGTTGCTGTGGAATCGGAAGGATTTCTATCGCTCATGGACCAGGGGCTCGCCAGCCGATCAAGTACGTAGTAGAGCTTACAACTCGATTTGAGCACCCAGAAAAAAGTAGCTCAGTCCACGACTCAGTTCGTGCGAATGTGTAAGGAAGGGTTTGGTCCAGGCCGACATATTTTCACCTTATACCAGTTTGACGAGGAGCGTCGTGTCTTGATCTCAAGGGCGGAATTCCACCTACCCACTTGCGACCTTACTGACGACAGCACATGTTAGTTCGAACGATGTTACACGACTATGACCAGCGATACGACCTCTTACGTCATTGATTTCGGCTGCAAAAATTTCCTTAATATTATCGAGGTTTTAAATGGCGAGGGTACGTTTAGAGTGAAACGCTGGCAGCGTAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATATCAGTGATGTCATTGACAGCGCAGGGAATCGAACAGAGGGCCCAACATAAGGCATACCTCCTTCGGCGATTAACACCCCACTGGGTCGGTGCGAGGTGTAGGAGAGGATCTGATCCGTCAACTGAGATTAATCCCCCCTCGACGCGTGAATGATGCATCGGTAGTTACAATCTCTTTATGCCAGCTTTACGCGGAGTAAGTTGAGAAACTTCCGTCGGCCGCGCTTTAGTCCGGCCTGTGAATAACGGGTGTCGCTTGTTCATTATTCGCCCGCTCACATCCCTTTAGGTAGCTGTGTCTTCGTCTGAGACTGGTGCATTCGCTAACGGTTCCCTTCGGACAACACAAGGGTCGTCAATTATACGGTCTCAGCAAAAGGTTCCGGCATTGGTGAACGAGTCGGACGAGGCATCAATCCTGCACCCGGACCTACTCGACAAAAGAAGTGCTGGATTACGTTCTTGGGGCGAACTTGATCGTAGACGAGACTTGTCACCTGCTTGAGCCATGGTCTGAAGCAATGATTAGTACGGTTCGGGGGTGGAGGGCACTTATTAACATGATCAACCAGTTGAGCCCGGAGCTATAGTTCTCCAGAGCCAAGAACGGTGGGGCCTATAGTTCTACAATCGACTTCATGATTATGTGTATGCCACATTCGAGATGTTAACATGATAAGTCCTGAGATCAGGTACCTCGCTTCGGAGTTAGTGCATTACCTGGTTTGCACTACCAAATATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCAGAGTGGCTAAATTTGTGGACTCACCAGCCGCAGGGAGACTGTGAATGGCATGGGATGCCATTCAAATGACGCTTGTACGACCAGATGGAGATGGACGGATAGACCTCGGCCCGCACAGCTCTACAAAGTCCGTTTACGTTCAGCCCGAGACTTCGATCCATTACCAACAAATGGAGACAAACTCAAATACTCTGGTCTCCCATTGCATTGTCATAGCAACCTCCCTCGACCGTCCCAGTCGGAGACGCTGGCCTCTGGCATTCAGTTACTAACTGGGGCCAACCTGTCATACTCGGTATTGACGACGCCTAATTGCTGGCTACAAGGATGCTGACCTCTCTCATGCCCTTTGTTTCGTGTGGTCTCGTAATCGCTTCAACCTGATTTCGAAACTAGATGAGGCTTCGAACTTCTCCAAATTACCGCTACGCTCTCTGCACACCCAGCGTCCCGTAGTGGCCCGAATTTCACCAGCTAATATACTCACATGGTAGTTCTCCGCCGCCATGAAACATGTAGCTTTTGTGAAGAGGCAGCCGATTACGAGTTATTCGAGTGCTAGCATACTCAGTAGCCTCTGTGTGGGTTTGTAAGACACCTGTGAGGGTAGCACGAAATGAATGAATGAATGAATGAATG -------------------------------------------------------------------------------- /Week6/dna/sequences/17.txt: -------------------------------------------------------------------------------- 1 | CTTTTGTACGCCTGATGCTTAGGCAGAGACGCGCCTATGGTTGCCGGTTACGGCGAGTTACTTGGAACTTATAGCCTCCGACGCCTGAAGAAGTATCCAAGGGTTTCGTGGGATTATCGCAACAGACGATCGGATCGCTCTATCGATGTGACGGTTATACGATACGCCTGGTAGGACCCACGCAACTTTATTCCGTATCGAATTAACTTAACTTGTCAGACAGCGATTCGGGAGGTAATCTTGGGCTTCCACTTAATTGATCATCGGGGCTCTCACAACCGAAATCCGGATTTACTTGGTGTTACGCTCACTGCCAACTCCTTTTTTGTCTTAATAGTGGCTATGAAGGAATAGTAACAGGGCTTGGTTAGCCTTCATCCAACCTTAGTTTCTAGCCGACAGGCGAATAAAGCCTACAACATGCCTGCAAAGGAGGACCTGTGGAACGGGAAATTTTTCCGAATTAAAATTAACGAAAGTAAGGTGTTAGTGCGTATGGACGCCAACCATCTACGCCTTTGGAAATAACACAAGGGGACTACACGCTAGACTTGACCCTAGAATTCACCGAAGGTAGCACCCTCCCATGATCCCCTAGCAACGTACTGCCCTAGAGAAGTGGCAGACCTGCACTCCTCGGGGGATATGCTTAGACCGTAGTCTTGGTAACACGCTACATAAAGCCAGGTTGCGCCAAAAGAACGTTTGAACTGGAAATCCTGTTCCGACTTCAACTACGCTGCTGAAGTTGAGATGATATTCCTAGTATCTTCCAACTCATATGTCGTGGACTCTGCGGCCACTGACGAATAGAGCCAGGCACCTCTACCACACGTTGTATACCGAACCACAAGACTCAAGCACCGTCCCTAATGTTCAGATCTCCTCGTGCCGAGTATCCGAAAGTCGTTACGCTCATTCTGAATTTATCTATCTATCTATCTATCAGAGTCTGTGCTATTTAGCCTGTTCTGTCGACGCTCGATTCACCCATGTTCGCGCTAGCGGAGATGTTCTTAGAGTTAGATGCTGACAGCCCCCAAGGCACCAATTTCGTTATGAAAGTATACGGCACTCGTTGACGGCTCTCGCGATCTGCATGCATTGTGCGCTAGGGCAGTCTAGCAGGTTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGAGGGCCCTAGAGCGGAGTACCAACTAATTCAACAGGCGATAACTCAAGTGCTAATACTCCACTCCAAGAACGAGGGAATGTGAGATTGTTGTACTATCAGCAGTATGTGCGGCCAACAAGAGCCACAACTCAAGCTACTAAATTCTTGTAGGAGTATGCGCACCACCTGTGTGGGGATAGTACATCTATGCTATTTGGGTCCAGCGTGCTGTCTGGCTGGGTTGTGATCTTACAGGGAGTAGGTGAAGCGACAGTAATAGGTGAATACGATTTACGGTCTTGTCGGTCAACAAAAGGGGCGGGTACCGGAACCCTGAGGAGCTCGGCTACACGGCTCATACTACTAGCACCCTAGAAATTCACTTCAGTCTTATTGCGGGTCGGCCATCGTCTTCTAACTAGGATACGCGTACGTCTCGGCGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGGTATACTCATGTCGTGAACTCACCGAACTATACGTAGCCTCTAATCTTAGAAACATAGAACATTCGACGAAATGCGTTTGGAGGCGTCGACTAAGCCGGCCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCTGGGATAAGATTTGCCAACGTGCGGTATCGCCTGAATCACTTCTAGCCGGGGACCGCTTCCCGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGCTAGGTTAGTCGGAACGTCTTTCTAGTTATGGCACATAGTTATTATGTAGGATACCGAAGCGCAAATACACTTAGCTTTGACCTATATCCGGCCATGGTTGATACTCGATAGCCTTTTTTGAGAAGAACCCGCGGTAGTTCCCCCTCATCCGCGTGACCGGTAGCATGTAGCCTCCGCGTACCTTACTTTCTATATAGTCACTTGTAAATAATACGACGCGATGTCCCGCCATTGCTTATGGAATGAGGTAGTAAAAGGTATTAGCCGGGCTAGTACGAATTTGAGATGATAGGGTCCGTGTGCTTCTAGCTCTCGAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATATTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTACTTGCCGTCATTGCAAACGTTGCACAGCTCATGGCGGCCAGCAAATTACGCAAGACTTCTTCCGCGAGTGCTATCTTGCTGAACTTAACGACCGATATGATAGATCCATCGCATTAGTGCTGCGACAATACGCGTCGGCGTACCTTCGTCTAATTGTAAACTACAGCCGACTACCAAAGATGTACAAGCAGGCTGCCGCAGTGAGTTTCACGCAGATAGTCTAGGTCATGTGCCAAGGAATGCTTAACGATCAGTGTCAGGTTGCCGTTAGCCCCGTTGATCGAAGAATCTCTGGGATAAATTTTATACCGACCATTCTCAGCGTCCTACTCTAGATACGTCCCGAACCGATGATCCCATCAATTGCATTATGGAGCGTCCCTCGAATGTGAGGAGCTCCATGTCGACATAGGAAGACTTATATTACTGATCAGTAACGACCAGCTTCGGTATGAAAACCTGACCGAGTAGTGCCAGAATGTAGCGCCCATTTTGGGGTGAATCACCTTCGTTAAGTTGATTATTGTTTATCTGGGGTTTTCCTACGTAATTGCGCCGATGTTGCAGACATTTTGCACGGAAATACCTCTGCGCCTAAAGCCATATCTTACATACAGTCGTGGAGGCGGGTAAGGGGGATGGTAGGGCAGGGCTGGGTCTCTGTACGGAGCTGCCCGAGGGCGACCCGACACGCGGAGAGCCCATCATTGACGCTGTATTAGTTAGGTGTATGTTCGTCGAGCTGGATAGGAGGGGAATGTATATCCGAGCCTACAGTGAACTAAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGTTAGAATTAAGGCATGGGGATTTAACAAAGGGAGGGCGTTGCACTTGTCAATCTGACTTGCAAGTCTTGGGAGACTCTCTCGGCCTATCATCCCCGGGGGTCAGCTAACTTCTCTGCTGATGGCGCTTCTAGTATTTTTCACGTGCGGGACACACGACGTTTGACGGGGAAAGTGTTAGAGTGGTGGACCCTCCAACGTATGTTCATCTATGTTCGGTGGCTTGTCATTTCCTTGCAGTGCTGTTTGCCTTAAGTACCAACGCCAGGGCTTAACGGGTAGGCTCCGTAATTTCCACCAGAGTTCACCTAATCCTGTCTCTTAACAGTGGCTTATTCGCTAACGGGACGGCTGGTACACTCATGTTGGGCTCAATCACACGGTTGCCCCTGGGGCGCCGAACGCGGTCGCGACAAAGAAACATCCTCGCCCCCGCTCCAGGAAGTAAACTTTAGTCTCCTTCCTAAGCCAGCTCACTAAGGTGGCAATAGCTACATACGCACGACCTCTACCTCCTGCACGGGGGCCCAGCATATCTTAGCGAATCTCCCGCCATGCAGTAGCAGAGAATTTTCAGACGAATTGACACGGACACTTCCACTCTACGTAATTGAACATGCTGTCCCTTGCAAGCTTCGCCTCCCACTGGAAGGTAAGCCGCGAGTTAAGCCAGAAGTAAATTCTGTCAGACTCAGATTCGATCTCCGTAGTCTTGGGTGTGTTCCGTCGCACGGCGAAATACGGAAACTAAGGTTAGACTAGCCTGGATAACTTGCACAGTGGAAAATAGAGCAACTATGTGGTGAGCCTATGCTAACAAGGACGATTGAACACGGGGGATGGGTCACGCCCGAGCATTTTTCAGTATTAATCTCGCTATAACGTCTTGACCTGATTTCGGCACACATATTATGCCTCGACCTCTACTCGCAAGAACTACCTCCATTAAGCACGCAACGGCCGCGAAAATAAGAGTACTGGCGGGGGAACCATTTTTACATCTACTGTCGCCCAAGGAACCGTCCCCACCGAGAGCGTTTCGTTCCGAGAGTCCTTCTTGGTTGAGGAGGTAGCCGTTCGCGGCTTGTCAGTCATTTGCCGGTCCTCGTCACTTAGTTGGACACCTAATGGGGTGATCATACCTCGCGAACAGGGGGAGATCTATAAGAACACGCTATCATTGATACGCCGTTCCAAATAGTTTTGAGCTCTCCTTCCTTTCTATCGAATTCGCTTTAGCCATCTTCCGACGTGCCACGGTACGGCGTGGTCTTCAAACATAGTGTACGCTTGGCCCAACACGTACGTTTGTAACGAGCCAGGAGGCCAAGTTGATTTTCAATTATATCTAATCCATTCGATCGGGGGCCCGACGACCTCGCGCCGCATTCTGCGCTCCGTACCAACCCTAGGGACGGTGAGGCCTATTCGCTCTTTCTTAATCTGTTTGATTAGATTTAGTGCTTACAGGGCTGGACAACAGCGCTTTCCACCGTACCTTTTGTAACATGCTATCTCCTAGAAAAAGCTGTTAGAAGATCCGGACCCACGCTACCAGGGGGGGAAACGATCATCATGGACTGATTTGGGATCTTAGCTCCCTGCTTGCTCGTACGATAACCATTGGGAATTTAGTCCT -------------------------------------------------------------------------------- /Week6/dna/sequences/18.txt: -------------------------------------------------------------------------------- 1 | TTACTTCATGAGCAGGAAGGAGTTATGGATCGACGATATGTTGGTCTTAATCCAGTAAGCATCTAACTTTAGTCAATCATAAGTGCCAGTGGACTTCAGTAATAGACACTCTTTTACCAACGGGCAGAATGAATGAGCTGAGTCACCCTACCACCCCGCTGGGCACTTGCGATGCTTTACTCGCCGGTGGAGAATGAAGCAACGTCTGGTGATCTATCACATCTATCTCGTCAGTTATTGTATATTGGTCTCTATATATGTAAGCTTACAACGCAATTCTGCCTGAGGCGACCGGGCAACGCCGGTAAGTTAACGCACTTAAGCATTCTACAACTTCGCGCGGCGCCACGTGGCAGGCTGCGAGAAGCTCAGTAATATATCAAAGTGTATGCATATACGAGCTGCTAGAGGCTTCTTTATTGTGGGGAAGTAGGGACTCAGCTGACTCTATACCCGGTAGTTTACCGAGACGACCTACCCCCCTGGAAGTACCCTATGACTGATAATCAGAGGCATCCATCATGTCCGACGCCGGATCGGTGGATCGGAAGCCCCGGAGAGAACGTGTAGGAAAGTGTTTTAACTAAACGTACGGTACGCCTCGCCGACGGATCCTACAGCTACGCCTGGAGGCCGCAAACTACGTATGAAGCCAGAGTTAGCCCGAAACAAAATGATCTCTCCCTGAGTAAAGGTCCAAACCATGCAACATTTCGGCCAGCTTCGGGACAAGGATTGGACTAGGCGTGCAGCCGCTGTTTGTTGGTTAGCGCTTCATAGGTGCTAGCCGCTCGTAGAAATCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGTACAGACATTCAAGCCCGGTTTATAACCGTGTGGTGGGAACGATCGTCGAGAAAGCAGCTTCCTATGCGCCAACTATGTGTGCGCGGCGGGCCTAGACGTAGGAGCAAGAAGACTATCCTCAGAACCGGAGGGTACCGTCCACCCAGCGTTCGTGGTGCGGTAACATTTGTGTTTCCGACGTGAATAGCACTCCTAGTCCATCGTTAGTGACACCACTTTGCCCTTTGCAACTGCCCTGTTGCTCCGATGGTCTGGGTCACTACACTTGGTCTTAGGCCGATCTGTCGCTCGCGTCCTATATGGCCGAGAGCTACCCACGCACTTATACGTGGACGGGCGTTTACGGAAGTTATTTACGGCCACTCCCATGGAGCCTCATCTCACCTCGTTCACCTAAGCAGAAATGGTTATTATGGGACACGGAAGGTCTCGTGCCTTGCTACACTCGGCAGTAAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAACGGGGTTTCTTAACGAAGAAGGCTCTGCATCCCTGTAGAATATTGTATTCTGCCATGCATAGAGCCAGTCCACGATAACATGTTAGACCAAGGCTGACAGACGTATCTTAACCAATCTGTGCCCCATGCCAAGCCCACACCGCACCAAAAGGTGGTACGATTCTAACATCATGTACGTTCGTAGCTCGCCTATCACTTGCCAGAAGGGAGCATCCGACCACACATACAAGGTCTAACATTCGGTGCGGGGGTGATCAAGAGTGAGTACTGTCGTGATATCTTTAAGTGGGAGCTATAGATAGTTTATAGCGAGAGTGTGGATGTAGGGTAATCCCCAATTCGGAGACGCGGTAAACTATTACCTATCGCCTTACTTCTGTAGCAGGTTAAACCTCGGGCTCTCGGCAGTCTCCGCGGACTCAACGATCCCGCTGCGACCGTCTATTAGTATTGGCTTTCCAAAAAATTTATCAGTACATATGAGAATAGTTCGTTGTAGTGCCTCGCATACCCTTCACCGTTAAATTAGGTTCACTTACGTGTGTTTGACGCCCTCAAATGTAGCCGGCGCTGGCTGTAGGACCTTGCGGGTATAGTGGCGCGAGTAGAAATCGGTGACCAGAGCAGGAGTCATACACGCAAACCCCGGGGAGAGAATTGTACGGTGCAGCGTTAATGCCGCAGCACGACAATCCTATTGTGACCGGCGACAGTGGGGTATAGGGGACTGTACGTGCGGTTGAAAAGTTCATGCCTGATAGAGGCTGCGCCCGCGTTGTTGGATTCCATGACAAGTACACCAACGTGTTTGGGGTGGGGTCGCATCGGGGCCCATGAAATCGCATCGACCCGTCTCACAACTCGATAGCTGATATAGCGATTTACTTTTTCAGTCCGGATCTATACTTGAGTTCGCATCTCGGAGACACTTGGCCAGCAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAATATCTATCTATCTATCTATCGCGAGTTATTAAGCGTGACATCAGTTGGCTCCTGCCGGTTTGGTGTAGGAAGTCACACATTTTCACCGCCCGGCCTCGACTGTTATACGACGCGAAGTTGGGTCGGCTCATATGCAGAGAGTCTATAACCTGTCAAACTCTGACATAGATACCATTAGACGTGCATCTTTAGGAGGAACCCAACTTTGGGAATTGGACACACCTACTATTCAACGGGAGACACGGGACACTTACTAATATAACCTGTACTCGACGAACATCCCAGTGCTTCTCTAACCCGCGCCGGCAGAAAGATTTTTCAATTCAACGTCTTGCACCACAGCACCAGCGCCGATTTAAGTGTCGTCTCGCCGACCAGTGTGTACTGGCAGTGGCGTCGGGTTGAGCTCGTACTCACCATATATTAGAATGGGATGTAACTACCCTGCTTCAGGGCACGATGCCCTTGGACCCTGTCTGCAGTCAGTTGTTAAATTCGCTTAGCAGTTGCATTTAAGAATAAGTCGCACTCCTACTTATCGTTGGTGAGAGCTCAGTTCATGGAAGCCCCACTCCATCCGGGTAGAATGCGGTGACGAACTTCAGACGGTACCTGATTGTCACTAACCGTAACAGAAGGGAAAACTGACTACCAGGATACGATCCCCGCGTGGCCTTCTGGGAAAGACTTGCGTCGGACTCCTAGGGTTCTCATATAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCTTGACAGAAGAGAGTAGACGTTTCGCTCGTTAAAGGCGCTGCAGTCATTCTCGTACGTCCGACGGTTAGTGCGCAGGTTCATGTCTTCTTAGTGCGAAGGAAGCCCACGGTGTCAGGGTCAACAACGCTAGCGCCTCATAATGGAAATAGCTGGATCAAAAAAAGGCGTGTGGCTCCCTGTAGCACATCCATGGTATAACTGCACTGTCGCGGACCGCGTTTCTCCACTTACCGACCCGGTCTCGTCTTTATTGTTACAGTTCGCCGAGCTCTCTGATACATTGCTCTGCACTCCCAAGGGTGTGTTCCATGGCGACATGGATAGGATCGAACTTTTTATGACGATATAAAGATGTTTTTGACCCAAGTTTAGTAAGGTGCAACGTGCACTACCATCGAGATCCGTAGCTTTAGACGAGTCCGGGCGGCACGAAATCTGATTCCCCCACGCATGTCCACATGGCGTTGCCGAATTCTAATGGGCGGAGAAATTTCCAGTCCGGCAATCTCCGCAGGGCCTTCCAGAACCCACAGATTCCTATACGCAATAATACCCCGTAAGCAGACGGAGGCCTTAGTCTGTCAGTGAATATAGCCCCCGAGCGTTCGGACTTAGGCCGGATATGGTCGTGGATACAATGCATCCTTTGAGGCTAAGATTGGCACACTGGTGCCAACTCGAATTAAGGGCGCGCACTTTGTTGCATACGGAGTTAATCGTCCCGCAATAGTACCATGCAGCTGTATTTATCTGTCTCCGCCCAAGCGTTGTTGTTTTCGCTTGGTTTGAGTTTCCTGTAAGATCAGGATCCCGCTTGATCAGTGTTGTCAGAGAAGACTACCCTGTAGTGTTCCGAGGTTTCGGGACTGCTGCGAAAGGTCCTAGGAGGATGACAGAGTTTTCAATTCGCATCTTCCTTGGGTGTGGTTGTTAGTACTTATATGAGCGAGCGCAGTCCAGCTCCCGACTGATGGAGCGCGGCACACATCAATACTTCGCATTAATCTCTTGAATATACACGGGTGTGGAACACAAAATATGCTCATAACAAGTTGTTTCAGATAATGTAGGAGCCCGCGACGCGCTCATGCAGGCCAGCAAAGATTCAGGCTTTGTTAGCCCGTGGGAGAGTGCAAACAAAGGCTTTGATCTACGATAAGGAACTAAATCGAGACTACTCATATTGTCCTAAATTTAGACCCATCAGGACGGAGAGGGAGAGGCGTCCATCTGACCTAGGCGAATAGGCATAATTTTTCCTGGGAGATATCTCGCCGGCTCAAATGGTCACTCACCCCGGATGTTTCAGTTATGGCCCTAAGATTCAGCAGCATACCCGGGGAGGAAGAGTGGCGGTCAATCCTAAGCCGACGGTCCGTGTTCCATAGGCCCACCTGTTCCCATCCCAGCGGAAAGGCCTCTCGATTCAGTAGTGAGGCGTCGTTCAGGATCACCGCAGAGGTCAGAACATAATGACGACGATGATGCAATGTTAATGGCTTGCTCTAAACCCATGAGTGTAGTCAGATCGGCCACATGCCCGCGGATTGTCGCGCATCTAGTGATTCATTGAACGCGACCTCCAGCCCCGTGATCAGTAGTTGCCATGGACTTAATTCAGATCAAAACCCGTCACCACTTGTTAAGACTGTGACAGGCCAGACTCTGTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTCTGGCAAATTATAGCGGCACGGCATAGGCGGAAAACCCTAATGAGAGGGGGATCTTTCGTTAGTTGAGATTGGATGGCTTGTGCCGGCTTTCAGCCGCCCGCTTATATTCTATGGCACGTCAGCGTAGGACTCCATCATGCTTTGGCATTTGATGGGGGGTTCTCGCGTCGCAGGTTACTCCCAGCACGGATGATTCTCGCCCGGGTGCGCTGAGCGAGGCGAGACGCAGTTACCAGTTGCGCAACTTCATTGTGAACATATGTCGGCTAGGACTCTACTACTGGGAATCTCGTTTTGCCCAAGTGAATCGAGGAGTATCCGAGTAGATGGTCGCTCAAAGGGCAACCACAGCATGTGTGTTTATGACGGTGTGGAATACAGATGCACGGGTCGTTCCAAATCAAATAATCGGAATACTCTTATACTCACCTGCGCCAGGCAGAAATATGAATGCATTGAAGTAGCTGATAGACTGCTTCGGCCAACACTTTCGATCTGATAGAAGATTGATTAATGGCGACCCGGGAGGCAACCGAATAACAACTTTCACTGTTTCGTTCTTGTCATGATCTTTGATATCGTCCCGATCATGCCAGCGCGTACTCACCTCTGGCAACCGGCTATACCCACATTTCCCCGTAGGGGCAAACTGAGTCTAGATCAAACACAACAGGTCCCTATATACGATTTCCGGGGCATATAGATTAGACGCGTGGAGAAGGGGTCAGCGCGTTTCAGCACGGACCACAGGCGCCCCTAGCATTACTGCAAGGCTGTGTCTGACCGGATTGCTAGTAATCGCAGCAGCTACGAGGTTGTACTAGCTAGCCGAGTCCTGTCGAAGTCATATTATAGAACTCTAAAGTCACCTACAGTCCTACTATTAGAGAGCTTCCTGCTCT -------------------------------------------------------------------------------- /Week6/dna/sequences/19.txt: -------------------------------------------------------------------------------- 1 | GTACTCACTGCTCTTCTGTCCGAGGGCTCTAGTACAATTAATTCCGGGGTTTGGTTTAATCAGGCTTCGGTATTTCAGGCCACTTAGCGTCTGCAGTTTTCGTAGCAGTTATCGTTAACGACTCCGACTGGCCCGCGCTCCTTAGAAATGTTGACGACGTTTGTTGTGAAATAGGAGTGCGCTTCATGGTCTATTGATAGATAGGACTTAACGTGCGATTCCGCAACGAGGATGACCAGTTTTAGGCCCTGCGCTCGCTGCCCTTATGTAGCAGTATATTACGAATTCTCGGAGTTGAGACAATAAATGCAGGACCACTGAGGCCAACCAGTTCTTCGGCCCCATAGGTGGAGTCATTCCGAAGTGAACCCTACATCTCTACTAGGGGTTGCAAGTTCGCCAAGTAGAACCGTTTGCATCACGAATCGCTTTCTGAAAAGACCGACATTCTGCTCAGACCGTGACACGACTCCGGCCGGCTGATTAGGACATCGCGGTCTCGGTATTCCAGCAAGATTGTTTGACTTTCGAGTTAGGGAAACAATGCTACGCTACTGACACCCCACGATCACCGATTTCAATATTCCCTCCATACGAGGAATGCAAGCGGGCTCAATCAGTAATTGAGAAATCGGATCCTTCTCCTCGTGGATCCATTGCCTATAATCGATGCCGAAATACCACAATTACGAAGAGCCTTGGAGACAGATGCTCAAGATGTCGTTAAGGTATCTTATTGGCATTGTCTATCGTGATGCCGACATAGGACGCGTCGAATCCATAACGATCCGCGAGGCTGTCTCTAGAAGAGGACAGAGCTTGTTGGCGCTAGCTTTCGGGGCATTGGGACCTCCTGCTCGATCATTCTCGGAAATCGATACCTACGCACAACCGAGGGCGGACGCGTGGCGCTGCGTGTCGTCCAGGTGGAAATTAGGTTCGGCATTGAGTCGATGTACTCGCTAGGTTCGTCGTCCCAATCCCTCTGTGGAGTGGCTAAAGCCTGGACCAGGCGCCAGCCTGTTGATAAGATCCTTTACCACCGTAAGGAAGCTGACCGTTGATTATGGTGGGTTGTATCTTGAGTGCTGGCGAGGCTGTAGCCTCGCGATACACGATAGATAGATAGATAGATAAAAAGTTGCACGAAGAATCAAGGCGCGAGAACGATTGATGAAACTCGCCGCACTACATAGATCTATAACAGAACATCAAGGCTAGTCCTTGCCATGAGATCCTTTCGTCTGGGCTTCCCGATGCGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAACTGGGGGATCCCAGTCCTCCTTCATCACCTCCTTGTTTGCGTTTGTCCCCGATGACGCACCGGTCGGGCATTTAGCTCCGGCGCTACCGGCGGTTCGTTTTGGTAGTCCGCTTTTTCCTCTTATCACCAGCGGCTAGACCCTATAGGCTGATGAGATCGCACTCACTCCACTGCCTAAACACCAACTGAAGCTTTTGTCACGTTGTGGGCCTCTATCGAGGCGCCCCCGGATGAAATCTACCTGGAAGATCGCACCGCCCGGGCGTTGTTAGCACACCGTTCAATATACGTGGTCATTGAGTAACCCAAGACGGTTGGGCTCCATGTACTATACGCCTTTCTTGGGTGGCTACTCTTGTCAGTACTCCAAGGATATAAGCACCTGACGCTTACGCAGCTTTCGCACTACCACGGTTATGTGGTAGTAGATACTCTCCGATAGAGGCAGCCATATCGTAATCAACCCTAATATTCACTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGGGCGTTTTATACCGTGCATCTCAAATAAGCTAAGGCACCGTGGCGATAGCGGGCGATGGGCGGGTCAACTACTTCCAAATGAGTTGACTCTCTCCCATGGTAAAATCTTTGTAGTTCATCGCTTCTCCCTCGAGCACAACTGGGCATATGTCCGGCCGACACGTTGACGTATTCGTGATACGGGCCGGTTGCCTGAACGTATCAGGAGAATCTTTTGAAAAGACTTAAGAGCCAGAGGATAGGAGCAAACCGACGAAACCCGCAGAGTCTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTAAGTTCCCCGGACCCATGAATGTCCGCATAGGTAGTTGAACAAGAACGATATTGCCCGGCCTTCTCCGGGTCGAGGCGTTTGGCTATGGCGACTATCGTAGAAATTCGCGGAATTGAAGCCTCAATGAGGCTAACCACGGCATTTAATTGTACTGACGGGTTGTTATAACTCTTCGCCAATGGTGCGACAACTTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGCGGCCGAGTCAAATGTCGCTACCGCGGTGCCTTAAGGTGCGTCCCCGAATGCCCGAGTGTATCGGCGAGAGCCCTCAATCCACTCTCGATTCTTGTTTTTTGGTGAAGCTACGGCTACCTACTAGGTAATTGACCGACCCTAGCTAACGCAAACCGATGCTCATCAGGGTCCTTCGTATAATCCCGGCGTGAATTACGCGCCTTAGTCCGGTTGCGTAGTGTTGTGGGCTCAACACTATAACTACAAGAAATGGTTGACAGTTAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCGTAGCAAGCGTGCGAAATTTTTGTGCAAGTTACGCGTTGTGAGAAGGCCCACGCCGCCTTTTACTATCAGCTATTCTGGGAGACGACGCCATATGCTTATGTACCGTTCCAGTTGTCTAAGATGGCGATGCGGTTGGGGCCTACAGGCCACCGCGACTTCCACTCACTGATTCACTTCCGGCCTGCCCGGGCGAACGGGGCACGCAAGTTTGGGTCACAAAATATTGGTGTCGGTGAATGAGGAGCAATCGTCTCAACATAAATTTCCAACTCAGCGAGCTCGGGGTCAACATCTTCGAGGAGTTCAATCTCCTCGCCTAGCATCGCCCTTGGCATTCCACCGCTTCGTTGACCTGTGGATTCTGTAGATCTATGTGGGGATTGCCGCCTAGGGCAGTGAATCCTTTCTCTGTATCATACGACATCTTGCCGAGGAGTTGTAATGCTAATGATCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTATTCCAGTCTAATCGATCTTGGGGGACGCCTTTTTTCCTGAGAATCGAATTATGGCTTGACAGCCCCGTCCTGAACGCATCCTGACACGAGTATCTGCGAGAATCGCGTGTTTCTTATATGTTCGACTTGACCTGAGTGGTCTTCAGACGAAGGAAGCCGATCAGGTCGGCTACAGCCGATACGATTCACAAGTCGCTGGCTATCGTACATCAGCTGGACGTTTCCTGCACCGGGCGCTTGATAATTTAACCGATCAGGGGCGCTACTGGCTTCTGATTATACCGAGACATTTACCGATAAGAGGAGAATCATGTGAGCCATTAGTAGGACTGGTAGATCTTTGATGCCCCAGTTATGGCGCCCGGAAATGTCGAATAAGCGCACGCCCATTTACCGAAGGAGATGAAAGCTGCCGCTTGCCAGTTTACGGAAAAGATCGTCGCCTCCTAACTTAGCTTTCAGGCGTTCCGCTTCTAAATCGCGCACATACCTGCTTAAAACCTACTACTGGGGGAAACTTGGCGCGACGCCAGGTTGGATGTCGCTAAGGCCATGGCAGCGTTATTTAAAATAGTGGTCTTTTGACAGGCATGTGGGAGAACCCTTGACTAACCCGAAGACGACGGGACTCTCAGAAAGTGATCGAAGTTCGACCCGATACGCGTCAAAGCTGTTCGTACGATTTAAATAGTCTTGAAACCCGCGACTACACTGTCTGCATGATTTGCCTTTGACGACTCATAGCCTGGGAGTGAAGTGCTTATACCATCCGCTCGCCCGGTAAATTCAGATTATTTCTGACTTGGGCATAATTTTCCTTGGAGTAGTACGCCTTCACGGCGAGACCTCTGGAAAATATAGACAGACGCTCCAGTAACGCCCTAAAGCGGAATCCCTTTTGATGAAATAAGAATGAAGTGGTGGACGCCACTTTTGATTGTCCCTTAACAACTATTCATTACTGTCAGTTATGCAGTCGTACAAAAGACCTCACATTTACAGAAAGACTGAAAGTACCTGAAGTTCACTGCTCGTGGTCTGGGTCTTGAAGGGCACCTCCCACTGAATGCTTGCATATCAACCCTGTCCTCTACATCGCCGAGGCACGAACAACGCGCCAGGTCCCCAACGCGGGCTGGGGAAGTACAAGAGTCACTTCCGAGTATAGACCGAAACAGCGTGCCTGCTCCACTGGCCCGTACCTTAGCTGGTGCAACATCGAATCTCGTGCGTCGCTTTATCAATGTGCTACTTTGCATCACTGTGGGCCCTAGCCGCTTTGTCGCTAGCTATATAGCTGTCGGCCCCCTACAGCGAATCCTTTTGGTATATACACTTTTGGCTAGTTATTTAACAACCGCCACCTATAGGCCCCGGGGGAGAAGTCGATTAGCTTAACTTTAAATTACCCCTAGACCGCAAAGCTTTCGTTTGGGAGGAAGATCCCTACGCTAGATCGATAACACCATGAGCATACGGGTGAATGAACAAGAGTATTTTTTCCATTGCAGCCTCCACCTGGCGTTTGCGCCACAACGGAGCCATAGCGCATCTTAACCATTAAACACTCAGCGAGTAGGCAAGTAGACGATATATAGCAATCTGAATGCACGGTTTACAGTATCGTATCGACCCCTCGGTTGAGCCAGTTGTAGGGGCACACGGCCCAGAATTCTATAGTGAGTTAATAGACGAGAGTACTGACTGAAAATGGAAGGCACCTAGAAATGGGTTACATGGCCAGCTGTTGCCTTTGATTTTCTAACATCGACCTAGGGAAAGACTGCTGGTTGGCAGCCCAGGCGACACCCTTTGTGCGGTTTCCTAAGAAGGTACAGTGAGAGGCTCTTTTCGATGAACACCGGTAATGGCGAAGCGCTAACACCATGCCGAATCATTGGAGCCAACACGTTATTGTCTAGCGCACGGTGACGTAATTCGCGGGAGTGCACAATTGTGTACTTAAAGAATTGAAGGCCGTCCTTAGGGGAATAACTAAATCACCTTATACTTGTTCCACGAAAGCGACGCTTAGCGAGAATTGATCGTGACCCCCAATCCCAGTCTCTAGGTAGAGCTCACCCCATATGCCAGTTTATCGAATGATACCACCGTACGAAACACCGACCGTTTGACCTAGGACGGATCTAGAAGGTTCACCCTAACGTAGGCAAACGGATTGAGTGTGCTAACGGTAGATGGGCGATTCTGAGCAGGGGTAGTGGGGTTGGCTATTTACTAATTATATTACTTGAAAGCGTGAGCGATGCAAATTGGATCGTCCAGTCTTCAGGGTGCATTATATACGTTATACGTGCTGTCCGACACCCTATCTGGCCTTCATCGGACTGTGGCTTTGTGAGACGTCGCGCGCTTTTATATCGACATGATCCACCCACACT -------------------------------------------------------------------------------- /Week6/dna/sequences/2.txt: -------------------------------------------------------------------------------- 1 | CGCAAAGACTTTATTGCGCCCACAGTGGCTTTTGTCTACTGATTCCATAGATAATGACAAATGTTCAAGGGGTTCTGGTACTTAGTCCGATCTCAGTGCGACTCGGGGGCGAACGTCGTGGTTATAAACTCGTCCAGATGCCGGCGCCAAACAAATATGATCCCATTGTGCACCCCCACTGGTCAGAACTCTCGGTGCTTAAGCGATACACGCGTCCGTGAGCATTCAACACCCAACTACTAGTCCGGTAATCTGAATGCACACGTGGCCCGGGTTACCGGGATGCCGAAAGAAAGAAAG 2 | -------------------------------------------------------------------------------- /Week6/dna/sequences/20.txt: -------------------------------------------------------------------------------- 1 | AATCCTGGTTGGACATACCGTTTTCCACACAAATGCCCCAGACACTGTACGGAGACCCTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTAAGAACCGGGGTTTTGGCTGATTCACCGAGTCAACCTAAGACACTAGTTAAACATGTTTGTCGATTATATCACCTTTCATATATTCCGAGCGACACTTTTCAATGCTATATGGTGCTTATTCCTGCTTACCATTTTCGGACCCAGGCCTCAACTTTTGCTTGTACGACATGAAAGGTGCAGCTCTACTTGGATAAGGTGTACTACCTAGCTTACTCGCACCGGACCATTAGCTATTACAGGGTTTGGATAGTTACGTGATGATCGAGGCAGACACCGTAAGACTCTTACGCGCCCGACGGTCCCCGTTAATGATGACAGTGACGAAAGGATTGAGAGGCGCGTCAGACCCCTGTTCCCATATTGTATGTTGTCGTTGGTACGGGCGCCTTACGGAGTAAGGTGTTAGGCAGGAATGGCCAAAGGTTGGTGAACCTGAATCATGGTTGACACGCAGCTCTCTACATTTATGGGCGTATTCCTATTCGCGACTACTACAACTCTTCGGCCGCCGGTAACCGTACGGTGGCTAGATGCCGCTCATACAAAGTATGCGAGCCGTATTCAGAGTATAATGACCTGAAGGAGTACATGAGGGTCATGGTCCGCAGGGACTCCCTGTCATATGCTGAGATGGAGCCATAATCCCTGCCAGCCGTGTGGACTCAGGCATTCCTGTATTAAGCACTCTAGCCCTCGTGAATGCTTGGAAGAGTCACCCAAGGAATCGATTATCACAGGTTGGGAGAGGATGTTTTTCAAGGCCCTGAAAATTTGAAGGGGCTATTGACTGCGGCGTTACAACCAAAGAGATGACGGAACCATTGCTTCCGTCATGCTGGTGTCCCTGTGCGACCCACCGTGTTTGCTCCAATAAGTGGAAGGGTAAATTGATTACTACCGGTTTCATAGGAAGTTCGAGGTGCACGGTTGAGTAGCATTAGAGCTTCGAGCCAGGTTACCATAGTTATCTTTATGGGGCACTCGCCCTGATGTTTACGCCAGGGTTTAGCTTTGTGATCCGTTAGGGGGTTACCTACGACGCAGCAATTAGCGGGTGTCGCAGGTGTGTAGTTTGTGGCACCAAGCCAGCGGGCTTTACTTAACCAACCCTGGGAAGATCACTTCATCCGAATATGAGATCGCCCAACGCTAATACGCCGAAATGGGAACTGAAGGTCTTAGACTAGCTCACGAACCGTATACCTTAAGTTCCCTAAGCGGACGAATTTTTACTAAGTAAGGATTGCAGGAATATGGAAATCATCCGTACGTGCTTTGACGACCCAAAAAGAGGATCAATGGTATCTACCCAAAGCGTTATTCCTAGTACCAGGAGCCTAAATCATTTATAAAAAAATGCAACCTTTACCGTGGAGCGAAGGAAACTCTACTTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGGTGTCAACCGTAGCCTGGTAGATGGAGGATGGTCGACTGGCTCAGATCCACCCTTGTGGCGGCATAACAAAATGTTCACTGAATTGGGCGAAAAATTAGCGAGTGTCACTTGACAAGGACTGAATAGCAGCAACAACCGTCGAGATCGTTGTCCAGTCACGCGGACTGATGATCTTAGATATAACGCAGAACTCAATGGCTCCTCCTGTACTATGATAGGGCGATATAGCGAGCCGAAAACTCGGGCCGGATGAGCGCTCACTGCGGTCCCGCAGCGCTGTTACGACGCCACGTTACCCTTGATCCGTGGTTGGTAGTGTCGCGTGATGAATGCACGAGTTGGTACCGTTCTAAGATCGACTACACGTGGCTCGATTTTAGCAAGTGTGCGATACCTGAATAGTCTGTAACAGTCCGGCGACCCATGGAAGCCGTTTCGTCCCGTATGCCAAGGCCCCGTTTATCCCTCAGCATGGGAATGACGGCCACCAGTGGTCCGTGTTCGCGATCAGTCTCGGGGAGGTACACACCCTCACTGTAAACTGGCAAGGAGGTGATTTTGCCCAATCTGAGAGCCTAAAGTGGCAGTACAGGTTCCTCACACATAACGAGGTACTTGCCTAACTACGTCCTATGTAGACAGGATAAGAAAACGCAGAGCGCGACCGCCGTGCAGTAATGAGTACTAAGGTAACTGGCCGCTCATATGTTCAGTACTGTCACCGTGTTGGTTAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAATCGACGCTAAGTCGGCTTCAGACTCTTGCGATGATTCCGATTCGGCCTTTTCCCTCAGTGCTTCTCAGCAGGCAACTTGCGAAAAGCATATCGCGCATTAGTACAACAGCAATTACTACACGACCAAAACGTCGTGGAGAGTCGCTGTACTGCAGCTCAAGGGTGGCCGACCATAGAACATTTAACGATATGCACGATCCGGTCAAATATCACAACAGAATTGTGTGCTAGTAGGGGAAAAGGGGAAGGCCCTTCCTTGGGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAACCGACTCATTGCGGAATTTTCAGTTTTACAATGCGGTGACCACTAGCCAACGGCGTCATTGATAATGATACTAACTTCCTTGGGGCGACTCCGGTTTAAAAGTGGCCGGTACGCTTGTTCGACATCATGTGTAGCGTTATTAGGACTGAATTACCGGGCCCCGTTCCGAGATGTTCTTTTTCGGCCCCTGGCGCAGAGGCGCTTGAGCTGCATATACTGGAATATAAGAGGTCACTCGCGAGAACGGTCACGCTACCATGTCGGCAGGATGCAGGATCAGGAATAATGTGGTAGACCTGTGTTCAACGGTGATCTCGGTGTGGATCGGGTGAGCACCAGATCGACTAACTAAGGGATATGCAAGCAGATTCTTCGGACGCCTTTGCCGGTAACACATGGAACACGCCTATGCGCTCCATTACTGGGTGCCTTGTTGAGACGGATAGGTCGGGTTCAATGATTATTAAGGTTTATCAACGTATTACTGCTTGTAACGGCTTGTAAGTGCCAATTGTCATTCGACCCCGGCTGGTCTGACAAGGTTTGTACGCCGATTTGGCATGAGGGGACTAGAGTGGAATAGGATTGTGCACTAAGCTGCGGTCCCGCCTGCGTACCCGCGTATCAAGTGGCTCGGTGGCTGGTTGCGATTACTGAGCTCGTGCATTGCTATCAGTGCGTCCCCTGCAAGAACAGGTATCAAGTGTGGTTCCGTATTGCACGATTGACAATTTCATCGGGTATTCGCTCGTCGGCAAACATTGAAGGCTTCATAGGTTCACAACCGCGTTCCCTGTGATGCGGAATCGCGAGATCTGGATCATCCTTCTAAGACACTCAAAATGCAGACGTCGAGAGACGTATGCGTCCGCGGGAACTATGGCATCTGCCCTTAACATGTGAAGAGACTGCTTTAGCTCGATCTAACCGTAGGCCCTTCATGAAGAGAAGCCATTGTCGGGGGTAGTGACTTTTGGCCGTACGTGATTAAATAACACGGAGTCAAACTCGGAGCGTTCCGTCTCTGATATCGCCAACATCGCAAGCTCCCTACGTACCACCCTGGGTGAACACGACTTTAATGCTTTGAAAATATTGATGGAGACGGCACAAATTTCCGAAAACTCGAAACTTAGTAAATTTACACTGAAAAACCCGGGCGGACAAGTACAAGAGTCCGCGCTCGTAGTGCTCTGTTGAAGCGTTGACCTCTGTCGCTTAAAATCGTAAAGACTTTATACACGAATATTGAGTGAGAAAGAGTCCCCGATCTATCATTACAAATATTCCGTTCTACAATCTGAGGCCAGACAGTTTTGTTCCCTCTCCTTACCTAGTGCCATATCGAGGGACAGAAATTTGACACCTTGCAGTCACACGTTGTTTTGAGATATGCAAACCACGCCCAGTGTCGAGATCCCACATATCTTCATTATAAGCTCGACCACTTGAGACTGCAGCACGAAGGCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGAAATTCCAAGCAATGGCTTCAGCGCTCGGACGCCCCGCCCGTGCCCGGCGTGAACATATGGATGTATGAATTATTGCATGGTCTGTATCTTAATGCGCGCTTGGCAACACATGTGAGAACGGTCTCACGTGCGACTACGTATGATCTATGCAAATGTGCGGTGGCGCCCGGCCTTTTTAGGAGGTTCCTAGACCAGGAGCCTGTGTGGTAAGGGCCGGCAGACGTTTCCGGTACGCTCCGCCAAGAAGGTAACCATGCGGCCCGGTAATGTAACCAGGTCTCGAAAAAATTAGGCGAATCGAAAGGGTTCTATCGGACCGTTAACAATTTACGGTCATTCTAGTATGCATTCAAGGAACCGACTCTCGTCTCACATTTATGTCATCATTATGACTAACGCAAGCTGTTACAACGTGACTACTCACCTGGATCGTCATCACGCGCGATGTGCATGAACTCGCAAAAACGAACCTAATCGAACGGTTATCGGTGACATTTGATTTTGAGTCTGCGGCACGTAAAAGCTCTGGGATGCAGCTCCTATATCAGCCTAGGGGTCGGGCTCTCTGGTTCTGCTCGCTAGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGCAGTCCCGTGAGTGAGTAGTATACGCGATCTTGTGTGTCTAAGTTATTGCCACACACGAATGACCAAATACGAGATCTAGACTCGTGTATATGAGACAGGTTGCACAATCAGCCTTTATTCTGAGACAGTGGTGCTGGGGATGGCTTGAGATACATACGCACACAAGCCCAGGGGGATTAATTGCTGCGCAGATAGCCCGCCCAAAGTTGTCCCAGTGACCTTAGAAGGACCCTGTACCTGGCGTTGGGTAAGACACGTCACCCGTCGTAGCCGTGTATAGCCGAGCGTCCTGCAAAAGCGTATCTTTTTGATGAGCGAAATCGCGTCCAAAGACTTCGCTCAATTCAGAAGGCTCGAATTGCCGATCGTCGCAGGGCTGCATTAGGCACGCCAGTTCTTCTAGGTCCCGGGCCGAGAGTGTTCGGCGGTAACTGCCTTTTAGGGGCCGCACACCTCGGCTGCGGCCGGGCGGAAGGCGCTTACTTCTGGATGCGGCTTCAGACGGCTGTAATATGTCTCGGAATACCGCTCAGCATACGAGGAGTCTCCGCTTTCGACAGCCTGGGGCCACGTCGTGTTGAA -------------------------------------------------------------------------------- /Week6/dna/sequences/3.txt: -------------------------------------------------------------------------------- 1 | AGAAAGTGATGAGGGAGATAGTTAGGAAAAGGTTAAATTAAATTAAGAAAAATTATCTATCTATCTATCTATCAAGATAGGGAATAATGGAGAAATAAAGAAAGTGGAAAAAGATCAGATCAGATCTTTGGATTAATGGTGTAATAGTTTGGTGATAAAAGAGGTTAAAAAAGTATTAGAAATAAAAGATAAGGAAATGAATGAATGAGGAAGATTAGATTAATTGAATGTTAAAAGTTAA 2 | -------------------------------------------------------------------------------- /Week6/dna/sequences/4.txt: -------------------------------------------------------------------------------- 1 | GGGGAATATGGTTATTAAGTTAAAGAGAAAGAAAGATGTGGGTGATATTAATGAATGAATGAATGAATGAATGAATGAATGTTATGATAGAAGGATAAAAATTAAATAAAATTTTAGTTAATAGAAAAAGAATATATAGAGATCAGATCTATCTATCTATCTTAAGGAGAGGAAGAGATAAAAAAATATAATTAAGGAA 2 | -------------------------------------------------------------------------------- /Week6/dna/sequences/5.txt: -------------------------------------------------------------------------------- 1 | GCTAAATTTGTTCAGCCAGATGTAGGCTTACAAATCAAGCTGTCCGCTCGGCACGGCCTACACACGTCGTGTAACTACAACAGCTAGTTAATCTGGATATCACCATGACCGAATCATAGATTTCGCCTTAAGGAGCTTTACCATGGCTTGGGATCCAATACTAAGGGCTCGACCTAGGCGAATGAGTTTCAGGTTGGCAATCAGCAACGCTCGCCATCCGGACGACGGCTTACAGTTAGTAGCATAGTACGCGATTTTCGGGAAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCCCGTCAACTCATTCACACCGCATCCTTTCCTGCCACTGTAACTAGTCGACTGGGGAACCTCATCATCCATACTCTCCCACATTATGCCTCCCAACCTTGTTAAGCGTGGCATGCTTGGGATTGCATTGATGCTTCTTGGAGAGGACGCTTTCGTTTTGGAGATTACAGGGATCCAATTTTATCATCGGTTCGACTCCCGTAACGACTTAGCAGTAAGGGTGCTAGTTCCTGGTTAGAATCTTAATAAATCACGTCGCTTGGAGCAAGACAAAGATCGTCGTAATGCCAAGTGCACGACCACCTTCAGACTTGCAGGACCCGTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTCGATAGCTATGCGGTTCAATACAATCTTAACGCAATGCAGCGATGTGGTTTCGTACACTTAGCATAAAACCCCCCACATTAAATCGATGTACCCGCCCTCTTAGACGCCAATTTCAATGCCGAACCTCCGGCGGGTATCTCTGCACTAGGAGAAGTAGCACGTCGCTGTAGCGAACTCCTATCGTGAGATAATTTGTAGAGCTGCTCTTATAATACAATAGCTCAGATGGATTATTCCATGGACATCCCCGTGCGTTGTTTCGAGGATGGTAGGTGGAAATTTTGCCAGACCTCTAGTCTTAAACATGGTTGACGTTATAGGCGCTATCTCTTGCGTCTGGAAGTGTTAATCCGTGAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAACACGCAACTCTGGAGGAGGGCACTGCACTGCAAACTTGCGTAATATCCTTCACCCACACTTGCCTGGCCTCCTTGCTTAAAGCTCTGGCGATGCGATTTTTCGGCCCAGTAGCTGAATAGGTCATGAAATGGGCACCGAACTGGAAAGACCCATATATTCGATACTCACAACTTAATGATAGCGCGATTAAGAGCGACACCAAAAACCAAATTACGTTCACGAACCTTTGAGAGTCAAGGAGACTTAGACCGAATTGAATGATCACTGATGCGCCCGCTGATACTGAGCCTCACCATTAATCGCCGACCAATACGGCGTGTACCGGGCGCGGCCTTGCCGCATAACGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATATCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTACACAGCCCCGTCCTCATTGCTAAGTGCACTGGCAACTGGACCTAAAGATTTTTCGAGTATGGCCCTCGAATCAAGCGCCCACCCAGAAACCTACGAGCCAGTAACCCCAGTAAACAAGCATTAGTGCTATATGCTTGCTGCCCACTAGGACCCTTATGGTTCATACCAGGGTGACGTGTCTTGCGGGCCAAGGATGAACCAGAAGCAAGATCCTTAGATGGACGACTGTCTCATTGCTTAAACTCCACATACCAAAGGGCGCGGTAAACGATAGTTTTAGGTAATGTTAGTCGGATGGTTGTCTGCAGCTACCAATACAGCCTGGCACCCAGGGTCTGAACAATAACGCGTGAGAGCAGCTCTCCCGCGTGTGGTGGATTTGCCGTCTATGAAATTGAGGCTCTTGCAACTATTCGCACTCGGAATGCCCTCATATCTGGTGCCTAGCGGCCTTTGCCCCGTGCCGGTAGGACTAAACTCTACGGATCGTTGACGGATCTCGATGTGGAAGATGGTTATGAAAGATAACAACGCGTGTGCTAATTGATTTAGACAAGTATTGCGGCAGTAAAAGATAATCGGCTGCAGAGTTACGAAAGACTTCCATGCATGGATTCCATTCCTTCTAGTATAGGACCCACTCTGAATACACGTCTTGCGGGCCGATCATCTCCACCGCTGCGGAAGAAAGCAATTAAGAATCTATGCTCATTAAGAGTGCGACTATAATGCGGATCTTACAGTGCTAATGATCAGGACGTCGTCCAAGCAGGCTGCATGCCGAATTTAGCTTACGTCAGGATCAGGCGTTATAGCCTGGGAATCGGACTATGAGGACGCCACGACCTCTGGGAGAAAGCTATATACATTGAGGATCGCGCCATCTTTATGAGACTCAAATGAATCTAGATAGGTAGCATTGCGGACTTGAGTTAGCACATCGGTATTGGAAGGTGAGGGTCCTGCCGCTCGTTCTATGTTCGGTTTATAGTATACAAATAGGTCATCCCGAACGTTGAAGTTAAACTCATGACACGTTGTCGTAATGAAACGGGCCTGTTATTAGGGATACAGACAAAAGGCACAAGCTGGCTTGCACATTAAGGCGCACTAGAGATCCTCACAACCGTTGCCCGCACGGAGGTCGTGTCTAACAGACAGTGAACCAGCCGTATTGGGGTGGATGACCTGAGCTTCTTGGGGCCTGTTGTACACCGCGTGTGGTTCAACTGGTACACATACTACGAATATTCGAAATCATTGTACTGTGCTCTTCGGTGCTACTGACTGTGAGCGAATGCATCCCAATCCCAAACAATGCTTGTGGTAGGAGAATTGAAACTCTCGAAGCCTGGCCCAATGTCATCTACTTTTAACATGTCGGGCCAGGAGTTACGGGCATTGCTTACTTACTTTGCCCCCTTACACCACAGCAGCGCGATTCTTGTTGTAGTAGATTTTATACGACTCGCGAATTAAATGGAACTTGTCTGTCCCATATCGATCGTGTCCATCGTAAGATGAGATTGTAGGAGCATTCGGAAGTCTATGCGGCCCAGGGACTACTACGTTAAATCTGGTCAGACGTGGTTTACAAGGCGTCCCGATCTTCTCAGAACATATGGGAAAGCACTACCGTTCCTTCACGCATACAGTTGTTCGTGCCGAACGAGTAAGCTTGCGACCAGCCCACCCGCTAGGGCTATGCAGCGGGTCATGGCTGGCGCCATACTGTGCGGACAACCCACGCTCTGGCAGAAAGCGTCTTGTGTTTTGTAGTAGCTCCAACGGTTAGACCTTCGATATCTATTCAGAGCGCGAGCGACCACTATTAGACGGCATGTAAACAATGTGTATTTGTTCGGCCCAACCGGTATATGGGTAAGACCGCGAAGGGCCTGCGCGAATACCAGCGTCCAAAAATTCCTCACCCGAGATATGCGGTTAGTACCCCTTGGGTAACGGTCCGCTACGGGTAGCGACGCGAGCCGGCCGCATCGGTTGGAGCCGAGTTGTCGGGCAGGCGAGTAACGTGTGCAATTTGATGGGCCCAAGCCTCCGGCACTATCCACCTCATACATCGACAAAAGCACCAAATATGGGGAAAAGCTGAGCGTCGATATGTACATCTACCCAGGAACCGGCCCGAACATTAGGCGGACGTGAATTTCCGACCTAGGTTCGGCTACATTTCTACGATCCAAGCACACGTGAAGGAGGAGGGGTGTTCCGACCGTAAATGAACGAGGTGCGCAGTGACCCGATGGCGTTTAGCGGATAGCCTTCCTATGCCGGCCTATGCTGTATGGTAGTTGGTTGGTGCCTCCAGAGCCACTGCACCCAATCATAGGGTCTACAGCAGCGTACTTATAAAATTGTACGGGTGACCCATATCCATTACGGGTTGCGACCAGTATAGGAGAGTATAACTGCGTGAACTAATGCGTTATGACGCTTCAGAGTTTGCTCGGGCCCGAGTTCTAGGGCTATAATGTGTTAGGGCGCAAGTATGCCAAGCTAAGATGTGGCGTGCACACTAGGAGTTGTGTTCCTCTGCAAGCAGACACGAGCACTCTGGCAGTAGTTTGACCACACCCGGGTATCACTGCTACTCCATTTCGAACAAGCTATTGGAGCGGACAAAATATGCTACTCAAGAGCATTAGTTATAGGTCTACGAGACAGAAGCAGTTACTGAGTCTGAATATTCGATATAAGTAGGCATGGAGGCGGAGCAAAACAACGTCTGCGATCAATCGTGTTGATGACGTATGGCGACTGGAAGGTAAGGACTATGGCCGGACGGAATGATTCATGTTCTGTTCAAAGCTATATTTCGAAGGGGTATATTAGCGGTCCTACACTTGGTTAGCACCCTCCCCCCTCTGGATCCTGCACTAATTCGAGCTGGCCTCCATCGGTATCAGTCCGGAAGCTCCACTCTCTATCGTAGTCCTAATCAACAGGGTGCCAGTTTGCTCACGTGGAAGTTTGAGGCCCTTTGTGCTCCATAGCCAATCACTAACCATGCACGCGCGACCCACTCTACGTCCAGATCGGCTATAATAGTTGCGCCCGGGACTGGCAGAGTAGACATGTAAGCTAGATAGAGCCCCGACATCGGCCAAGAGATCCTACGCTGCTTCCAGATAATGAGAGACATTCTAGCATTAGACATGCAAGTCGGCAGGGACTCCCCTTATCTAGTAATTTCGATGAATTGGTTTTTCGGCTAGCATCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGACCATGCCGACCTCATCATAGAAGGAATGCTCTAAACTTAGAGTGCTACTAGGAAAACTATTAATCAATGATCGTCCTGCTTACATAGCTGGACGGCGAAAGTTCTTATACTGCGGAGGTTGCTGACGTAGAGTGCGCTGGGTACAGCGGATAAGTTGATCAGGGTGGGGATAGGGTGGCTCACCGTTTATACTCATATAGATTCCTGGCGTCGACGCTGTGACAGGGTCGAGATCGAGGGGGAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGCGGAGCGGAGGGAAAATTATCACCAGAGGGTAGGGGCTCGCGACATTCTATTCAATGCATTTCAAGCTACTTACGTATTTCGGCACAGTGACTACTGCCTGCGCGGCAGCCGTAAGGTTTCCCGTCAATAGGTGGCACGTATCATTGATGAAAGTGTCAGCTAATCATTCAGGCCTTA -------------------------------------------------------------------------------- /Week6/dna/sequences/6.txt: -------------------------------------------------------------------------------- 1 | TCTATTCTTTGAGGATACGCTCGGCCTAGGCGGGGCTAATGGAAGCCAGGCTAATCCGATGTTGCGGTGCACCTCGATACCGTTCTAAAATATCACATCAACGCGCTCCAGTTGTGTGCCAAGGCCCGCTGAAGAGCAATGGAGCACCTACCCGGCCTTCTAACGCTGTCTAAAACTCCAAGCGAATTGCAGATTTTGGTTAGGACCCGTTTAATCTGTGGGCTTTGGTACTATGCAACCAATGGAACCGGTCGGACTCTGATCAGTCCCGACTGACAGGTCTCAAGTAGTTTGCTTACACGTTCTGACCCCCGTGCGCACCGTTGGGCGTACAGCGGTTCGGTCTATGGAATCAAGGAAAATCATTCGTATGGGGACGTAGTCACATAACAGCTGCAGGGAACTATGGAGATGACGAGGGGTCGTTTAGTGGAACGTCAAATGTCCTAACTGGTTCTGAGCTGTCTGGAACGTTGCAGTCAACGTCTACGATCTGGATTCTACAGTCTAGGCGTTCCAAGGGGCACCAGTAAGCTAAGTTGTTTAAATATGGCGGGTGTCGAAATGACGTCCAAAATCGCAAATAAGACAGATAGCAGGGGTGCAACTTAGGTATCTAAGGTAACTCTGACATACCTCATACAACTATCGAACAGTGGATTCCTTGTCGTCCTGTTGTAAACAGTTCAAGTCGGTACATGTTAGCGGGTGGTTTGGACGAGTATACAGGACCTGGCCTACACGGAATGTTTTAGATTCTATGTCCGGCGGGGACATCGCGTGCCGCTAGGATATAATTGGATTGTGGGAAGAATTTGGCCGGATTTTTGGCCTAGACTCGCGCTTCAGACCATACCGTGCGATCAGCACGATTGCTGACAAGCGTCGGTATTAAAGCAGGCTCCTTCCCAGCCAAACTAACCCAACGAAGACATCATGTTTCGCCGAAGTATCTTTGGGAGATGGGCGAATTAATCGCTTAGCGTGGCCGACTTGGGGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGGTTTAAGGGACTTATCCGACCAGAGGGGCAGTTACTTGTGGCGGTCACACGCCAGGACGAGTCTGTTCTTGCTGTGCGTAGATTAGGCTTGATCTGTGACTACAGGCGAATAGTAGGTGTGGGAAACAGAGGGGGGAGCAATGTGATCCCGGGGGGAGTGCTTCCTATACCTCGGTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGGATTATCCCCACCCAATGATCCGATCGCAAGCCTTAATACCATGGCACACCTCTCAACCTACTGATCTTCCATCCGTTTAACCCAGCACTAAGCTGCTCAGTGGTCACACTATGTTCAAGCTTCCGTGACGTGGGATCCTGGGGTCTTCGCAAGGCTAGTTTTGACCATTATCGACGACCGTCACCCTGTGACTGGTTCCCAACAAGGTGTCAAGTTCTAGCCCGTACCTGCAATCGGGAACCTCCGGTGCTTCATGAACCATGGATATAGGAATTATTGGTCTCCTCTCGCGTAGGTAGCGCGAATACCCCCAAGATGACACACTGTGGTGAACTTTGAGGACTCCCAGAAGGGTGACGGGTTATGTGGTTACGCGAAGTCGGCGTATCCACCGCCTAATTTTAAATTCAGCTCGAGCGACACGCGCGCTTCCTGGAAACGTTAGACGGGAAAAACCCCGCCCGAGAATGCGGGTTCCGCGGCCCACTAGGGGGCCCCCCAAGGATCTGACCGCGTATAAGCAATGCACAGCTGTACCATTTCAAATAGGACAGATAGTACCCCCACCGTGACTCGGCCTCAGATAATGGAATACGACCTGGTGACGGCGGTAGGGGTTCTATCTCAGGTATTCAGAGGGTGCATCCAGGTGATTCGTCACGTCCCGATTTCGACCCCACCACAGGATTTGTGCGATGGTAGTCTTGATGCTGTTTGCAGGCGGCCAAGCATCTAGGAGATGCCTCACTGCGCGAGATGAACCGGCGTTTCACAAGGGGACGCCAGGCCTTGCCGTCTCCATAAACCACGAGAAGGTATCGAACGTCAAACGGATAAATGCCGCGATACCGCTCGTTTCGAAGCGGCACTTCGATGGAAATGAGTAGTATGGCCTCGCCACACGACTACTCATCGGCTTGCGCTGACATCAATCCTGGCTGGCTTGAGGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGCTCCATAGGAAGGTGCGGGATAGCGGACAGCTAATCGGACAGAAGGGCCAGCTTGCACTCTCCTATAATTAGCAAGCGCCATACAATTGTAATCACGTATAAAATACAGCTACGTAAGTAATAGAGAGGCTCCCGGACTGTCCGGCGTCCCGCCAGTCTCGTACCAGGAGGTGGGATGGTAGGCAAACGAGCCTACTAGAATTGGGCCACCCTGTGAATAATATGCAGAGGCAACTACAGACGTCCGTCACCTGCCTAGAATCGAGTTCATTGACGGTGGGATATGCTCCGTTACCTGACTGTAGTTCGACTTTGTGGTGCGCACATAACGAGTGTCTACGATGCACAAAGTGTGAGCAAATTAGGAGTGTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTGCCGAGATGTTGGCGGGAAGTGTACGGCTTTGCGTCGTCGAGTGCTACGCAGTGTGCTACACTCCCGCAGCTGAGGCTAGGGCCCGAAACTAGACATTTTTTCTTTTGGCACTTCGTTCCGTATAATGAGTTCCCTCAATTCCCCGTCCGCAAGCCTCAGGATTACAATTAATTATACGGTTAAAGTTGGCTGCCAAGCCCGTTATTGACCGGTACCTGAGTCGAGGGGGGGTTGGGGATAGGCAATTATAGTATTCACTCACAGGACGCTCAGTAATGCCGCCGTTGTACTTCACGTAAGGGCCACAGTTTTTCTACCACAGAGGATGATCTGAGGACAGCGGTGCGTGAAGCCCGCTATTCAGGACACCCTCGAAACCCGTGGTTCACAGACAAAAAATTCGCCGCGGAAGCTGTTGCCCCTATGCCCCGGGTCAGCAAGGAGTCTGGATTTTATTCCAAGACTGCGTCTTTATTTTCTGGTGAGTATGAAATGACTCTGAGAAAATGGTCGAACCACGAGCTAGCTACAGCCACAGTCCGCTCAACTAACTTACCTCTACTCTAACAGTTACACGGCTTCCCGTTTTATGGGAAGAAGCACCTGTTCCTTTCCCAAGCCCCTTATAGCAGAGGTTGGTATTCGGTTGATTTGGAATAGTTAAACAGCGGCTATTTTGTAATCACTTTCCAGTCGGTAAGACATTCGAACCTCGTTTTGACGCTGCTCGCCATCGCGTTCGACTAGGAGTATTCCACTTTTCGGAGAGATGATTACTCATGACGCGGGGAACTCCATGGCTGTCATGCAGGATCTGGGCTAAATAAGATTAGATGTTCAACTGTCGTATACTTACTGCTACCAGCGGTGCTAGGCCCAGGACCCGCCATACCTGGCTATTGATCACTCTACCAGATGTCTCTTGACGAGTTACGAATTGCTGGGTGCTCTTGGAGACGAGTTGAGTCCGTAGTCGTGGCTGGGGAACGGGCGAGTTCGTACGTACCGTTTCAAAGCCCCACGAACCCAACCTCTTAGCCTTAACCCCACATTAGATACCCAAGTTGCATGACGCATTATGCGAGTACGACACTGGTATCGGCTGATCCGTCACTGCTCAAAGTCCAGTGGTTTCCTTATCTCGGGCTGGAAAGTGTAGCTTGTTCCAAACCTTCGAGAGGTTGATCGATGACCGGTTCTCACACACATCTTGCGGAGGGATGCTTGCGATGTGGCTTTACGTCCACCGACGGGCCGACTAGCTGGAAATCACAAACCCCTGCTCCGATAAGGTATTCTCGTTGACTTAGGGTAAACAAAATGCCCGTTACGTCCTAACCGAGTTTCCGGGCCTTCACTACCCGCGAGGGATGTGTAGTGGGGCCATTTACCTAAGCAGATGTACACCGAGTTACGATAGTCACATGGCCATTCAAAGCGTCTCACATAATCGATCGATAGATGATGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCCCGGAGGAAGCTGCGATTGGAATGCGGCTAACTTCGCTCTGCAACATTCTTGGCAGACGGCCCCAATGGCGTAATTTAGGCGTGTGTACCTAAAGTGGTCTACTCCTATGAACCGAATCGCGGGATAAATCGAGTTGGGACTGCTTTGCCTTAATTACATTCACTGATTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGGTCGAGCACGGCTGGCACGTCCGGCTCCATCGCGTCGTAATCCATCCCTATTCGACCAACAAAACCTCAGGGGACGGGATGTGAGTGGGTATCGATCATTATCGAACGCCCATAAGTACTCCACTCATCTGTCTGAAAAGTTTGTCGAGTGCCGCTCTCTGAAGAGTACGATAACTTACTCCAAACACTCTACGCCTAGTGGTCGAAAACACTAAAGGGAAAATACTCACTGACTTACTCTGTCGCTCTACGATTGCCGCGATACCTTAATAAGACACGTATCGGCTGTCGCAGCGATGGATTCCTTAAGCGATACAACTAAGATCAATCGGTGCCGGGCCTACAGCCTGGGCCCTAGCTCCAAAAGTGATAATGGATAGTCGGTTCAAGCGAATTTACACCAGACTGATCCTTTACGGTCATTCCGACCGCCGCATGATACATGCCAAAAGACACTTGTCTTCTTTCCTCTAAAAGACAGACCTTGTTTGCAAGGAGAGCCCAATCGGCACGACCCAAAGGGATTATCAACTGAACTATTATTGCATACTACTAAGCAGACGGACCGTATAGCATCATTGATACCTATTATATTTCCATACACCAACTCCATACGCGATGGGTCGAAACTACAAGCTTCACTTACGTGTACAGCCGCAGGACCCACTCTCTAATCTAGCCAATGACACTACTAATTTGAACATTCCCCAGCGATGAACAGGCACATGAGCGGTCCTCGTACCCACCACGGCCCGCTCAACTGCAAGGGGCCGCTCGGATCAAAGTTTTTCACTAACTCATGTCGAGCAGATCGGCATGCTCAAGATAGTATTTTAGGAGG -------------------------------------------------------------------------------- /Week6/dna/sequences/7.txt: -------------------------------------------------------------------------------- 1 | AATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGGTTAAAGCCAAGTGGAAGTTGACGAGCTACGGCACAGGTACCCTATACATACGGTAAATGAGTCGGAGGTTGTGGGTTTAAAGTAAGTCCCCGCTCAACATTCAGCAGACCCTCGAAGTGGGCCCTAAAATCGTGTTGCTAACGCTCCGGACCTGACCCCGAGCTTGGCTCCTAATTGTGTACTCTCTCCAACCAAGCAGCGTACCAACGCGGCAACCAGAGCGAAGCTGTACACGTCGATCATCGTTACGCCTCTACTCGATAGTCGTAGAAACTTGTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTGCGGTTGGTAGCTCTAACTGTCATCGTATTCGCGAATACCTCAGATATAAGCTCCAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAGTGAATGCACGAGAGTGTTATAGCAGATATCCCCGCTGATCCGGCTGCCGAGGAGGTGGGCATGTGACGTTATGCACTACACAGCTACTACCAAGGTCTTCTGCGGGAAAGGATAGACAAACCGGCAACTCCGCGAGGTCGCGGACTTAGTATTGCGACGGCGTCCTAATCGGCTGGATTTGCGGTTTGTTGGCGTTAGTCCAAAGGTGCCGCTAATGTGGCCATATTTACGATCCACCCTATAGGGCTCCAGGTCGTTTTAAGTCGAGTCGTGTCTAGGGGCCATTCCTGGCCTTGAACGAAAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCGGCCTTAATGCTCAGATTCATATGCTGTGAGGCCGAGGGTGGCGTCATATCTTCGATGATGTTGAACATACGGTCCGGTATTTCGACTTGCCACCTGGTACTGCTTTAAAAGATGATACCATCAACAAAAGGGCACGGCGTGCCTCATGCAGGACGGGACGTTGCCTGCCTACAGCGCTCTACGTAGCAATGTCCGTCTTTCTTCATACACGTATGCTCCTAAAGAAATTGTAGTCTAACAGCTTCCAAACTGTAATCGCCGTTAGGTTCGTCTAAAGTAAAAATGATTGCAAGACGCAATCGAAGGAGCCATCGTTTCGAGGTGACTTCTAATATAACTACCTATGGTCATAGCATGCCCCAACATTGAACGAGGTAAGATCACGGGATCGACTGTCCTGGCGAGGGCCTTACGTTAGTCGTGTAATGCTCCGCGCGTCCCAAATATATGAAAGGCACGACACTCCCCACAATTTAACCCTCCCGCCAAATAAGTACCTAGCGGAGATAAGAATCTGGTCGGTCAGAAAAGGGTCTATGTCCTACAGAGTAGGGCGAAGTCCGCATACCGCAACAGTGCGGTGGCAAACGCTTTAATGACCAGGATCGTGCTAGGCAGTGGAATTTCATGTGGATTGGCCCGCGAATGGACAGGGAGCTATGTCTGAACTCTGTTGACGCTGAACTGTATCCGGATCGTCATGTGAATCGTAGCTATGGGAGTGGTGGTACTGTAAGTCAGGGCTACTTACTGCGGGGTATCTATCTATCTATCTATCTATCCTCACAGTTCATGATTATACGGATGTAATTTGCCGCTGGCTCACGATACGGCTATACAGCGTTGGCTCCTAACGTTGCCACCTACAGTCTGCACTTGGGCACTCGGTATGGTATAAAATATATGACGGCAGACGTTGCGATAAGTAAAAGATCGAACAATCTCGCAGCAAATCTTAAAGCGCATCTAACATCGGGCGTGCGAATGGACCGTTCCGAGGGACACTAGTCGAGCCCCTCTTACAGCTCACAGGTAAATCGATTATCGTACGTAAGTCAAGTCGGCACTGCTTTACGGCAGGTAGTAATGGCTGCGTGCTGCGCAGACCTTCTGCCCCTCAGTTAGTCACGGCCACTAGCCCGGGAAAATATAGTTCGGACAGAAAAATCAGTACCCAGCACCCAACTAAAACAAGTTCTATTCCGAGACGCCTGCGGAGAGCCTCACTCGTTATAACTATGTACGGCGGATGGGGGTAGGGTATAAAGGGCATGCGTCTACACCGATTTCCTGGTTAATGATAATCTAGTTCTTAAAGCACTACTAGGCGCTGCGAATAGGGGTATTGGGCAATAGGCCCTGAATTAACCTTGTTTAGGGTTAGCCTATGCAGCGACCGTAGTACAATAATATCTATAAACGGGTACTCTCCAGACGTATTCATTAACTTCTCAATGAGGAACTATCTACAAAATCAATGAGTGATAACAGCGCATATGAAAAGTATGCAGTTGTTTCAAGCTGTTAACGGCCATTTCCACGAACGTGTTCACAGAGTAGAAGAAACGTAAAGCGTTACTCATCTCCGATACGGTGCGTGCGATGGGGCGTATTGCTTGTAATGTCGAGGGACGGGCATTGAAAAGAGTGCCACAGCATATCGGAGCAATTCACTAGTGAGCGTACCTTGATAAAGCAAAAGGATTACCTATTTTGCACACGTGTGCTAACCCCCAAGACCTGTTGAAACCGCCGAGCATCCGCCAATTTCTAGCACAACATTTCCATCTGCAACTAGCCGTAGAGCACTCAGGAATTTGATCTTAACATGATCGTGGAGGCAAGAAAAAAGGATGCAACAGCACCTTAGAGCACGAGATCATTCCTGGTTAATATTATGCTGTACGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGATCGCCATCATTAAGTACTTATATCTGCATAGAACATTAAGCGAGACGTTTGTGAGATATTCCCCTCTGGGCCCTTAGCTTCGCAGTTCCTCAGCGCCCTAAGATAAACGGGTGTAGCAGAAGAATCGGCGTGCTTTTTACAAGTCCTGCCGGCGATTCAGCATCAATTATAAACGGCCCCTAATAGAAATAGGGCGGCAGGAGTCAATTGGTATCGTTTTGGAGCCATTCACCGCCAAGGGTCAGATAACCCGGCATTCACTGCTGTATTCCCGGATTAACGGATCTCGGATCCAATGGCCCTCTGTGCCGATCTAATACTGCACGCTTAGTGGGCGGGATCAGATGAATGGCACCTCAGCCCCCCGAATTCAGTTGCTGGCCAGACGAGGGCGGGGACTGTTTGGAATTATTTGCTCAGTCCTTTTATCATCCCGATGCTATGACTCAATCCTCTAGATCCTTGGATGTCTCAGGAAATCTCACACATCATAGTCAACAAGAAACGAGACAAACTCGACTTGAGACTTCATCGCCTACAGTGTTTTATTGTAACGGGCACCTCTATATGTCGTCTTGATGGCATCAACAGCGCATGGTGATACATCGCTAGCGGCATTAGGCTTGATTGGTGCTTGCCGGGCGGGAGGCCATTTGGAGAGAGGCAGACTATCGTGGCATGCCGTAGCGCTTTGCATGCAGGTGGCGCGACCGTAAGGAGTGCAAGATGTAGATTGTCACGCTAAAGTTTATCACGTGATACTAGCTGACGTGTCCATAAGGCACGCAACAGCCTGCTCTAGGTTACTGTAGGGCTTGGCGATAGCATAGATAGGCCTGAGGGAGTTCTGGCGTAATAGTTGTTAGATAAAGCTGCCCAAATCCAACAGCTGGATTTCATGTGTGTTTGATAGCGCAATGCACTCATACTCAGTCCTTGCCAGCATGCTGTCACACGATGTACATCGTTAGCCCTAAGAGCCCCGTCGAGTAGCTAGTAAGCCTCATGAATGATACTCGGGGCCTCCCGACATAGACGCAGCTTGAGTGTCGGACGAGTATAAGCCATCCCAATGATTTGCCACTTAGAGAGTAGCGCCGTTTGGGATTGAGTCGAAGAGCGTGGCCTTAGACCACATATGATTTGCTTGCGCCTCCGTATCGCTTGCATTTGAGATGGAGCCTCATTTCTCTACCATCGCCGACTAGCAAGTTACCGATGGACAAGCCTAGCTTGTGTACTTTGAGAGTGGCTTCGTCACCAAAGGGTAGCCATAACCTCAATGGCTGTGATCTCTTACCCCCGGGGTCGGGCGAGATCTGGGCGAGAAGACTGCACGAGCCCTAGAAACTGCAAGTGGCACGGCTTCTTGTCCCATAGGCTATTGAGGGCATTGTTGAGTCGAAGTTTCTCCTAAAAATGTGAACATAGTTTCCCGCTCAGAGATACTCGCTTAAAACTCATACCATGGATGGCTGGAATGGACAAGCGGTATTCGTGCTGTGTAGGGATCCGCGTTGGTCTATTAACCACTGAGCGGATGCGGATTAAAGGGACAGACGATTACACGCCACGGAAGTCCTCGTCTGTGACGGGTCCCTCGCGTCTCCCCCAGAGGACCTTCATTCCCCGGTGGAGCGTCCATACGGTCTAGCTTGTACGCTTCGGGGTCGGGTATCGGACTGACCTATACGACAGACATATCCTAGAGAGGCCTAGATGGACCGGGAGCACGCGAGGGCAAACTCCCTCGCTATCCCACTTCGATTTCCCGGGGAGGGCGGCGTTTTAACACGTAAGGCACGTCTATTAGATGAGCTTATATATATGCGAACTTTGATCCAATTGGCACAGAACGTCAATTAAGAAAAATAATACGGAGATAGTGCCGCAATTGTCCATTTATACGCACCCTCTTTCTAGTATCTAACGTTCTTGGTACGCGGTCCACTAGACCCGACTCATAGCGTTATAATTTCCTGGTATCTATTAAATCGTCGGCCGTCTTTTCCACTAGTAACCTGCTCTTAGGCCGCAGGCACGGGCGTACGATACCCCCCGTACGGTGTAACATCAGTGCGAAGTAAATACGGGGCCAGCGTGTAGACGATAGTCATGTTAGCTGGAAGGGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATATTCTGAGTATGCCGATCCAGGTTTGGCAGCAACGGAAAATATCTTCTACTTGGGCCCCTATAACGAAATGTCTGCCTAACCACCTTTTTTCTGGACCCTCAACATGCCAGTTAACCCCGCGCGGGAAAAGCGTCTGGCGCGGGCGTCGGGATATACTGACCAGTAGAGCACTGATTAAAGTATTTGTGGTTAAAAATTCACAACGTATTCCATGCGGGACACCGACACGCACGTCAGTTGCTCGCAGGTGATGGTAGAGGGGTGGATCGACCGAGGTCGGGTTGGTGGGTAAAGGTTAGCCTGCACCACGCGAATGTGCTCCATTCAATTTTGGGGGTGCGATTCTCCGTTGCGGGATCCAAGAGGAGTTAAGATGGCCTTGTCCAGTTGAAACTTGGCTGTGGCATGGGCGACAAGATAAAAGGGTTATTACTGATCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGCACTGAGGTCTAGTACGTACGATGAGTGAGCATCGTTATTGGAAAAAGTCATGAACCGG -------------------------------------------------------------------------------- /Week6/dna/sequences/8.txt: -------------------------------------------------------------------------------- 1 | TGGTTTAGGGCCTATAATTGCAGGACCACTGGCCCTTGTCGAGGTGTACAGGTAGGGAGCTAAGTTCGAAACGCCCCTTGGTCGGGATTACCGCCATTCTAGTAGTCTAACCCCGAACGCGCTCAGGCTTTGAGTTCGCGCAGCATTAAGAAGTCCATGCCGGCACCGAATGTCCCGACGACAGGCAACCAGCACGGATACCCGCCTTGAAGGCGCAATCAGTAGGTCGAGTTACAGAGGCTCCCCCCGAGCTTGTGCTTCCATTGAGTAGGGGCTATAGATATGTAGCACTCAGGTTTAGTAGCGCCCTTTTAACAGCGAGAGCCCGCCTGGTCAGAACCGAACGGCTGATACGCGAGCTGATGGCTAGAGGATGAACACGGTCCTTCTCTTCGCTTCGATCCGGGGTAGTTTTGTAGCGAAGGATAACGCTCTGTGGATTCTCCGAGAATAATCATCAGTACGGTGTGCGTACCCTCTCTTTGATCCACGCCTGGGGCTGGACATAGTCAGGCGCATTTCATCTACTTAACCCCGGTAAGGGCCACGGGCGCGACATCTCCTTACCAGGGTTGTCTTATGCTCGCTTTTCCCAGATGATAAGCATCTCGTTGTAATGAACAGGTACCTAAGAAAACTGAGTTTCGACGACCCGTCGGCTCGTGTTCTTATCTATTGATCTAACCGAGGTGAAGCTCGCCAAAAATTTCGTAATGTAAGAGAGAAATTGAAGGGGTGAATTTTGCACTCTCGTGCATACGTCTTGCTACAATAGCAAGAGCTGTATGCGTGCGACCACTTCACTACCTCTATAGCATGCGATCTCGCAGCCCGGATTGTCGCCTCCTTTGGGCCGCAAAAACGGTATACGGACACACTGCATCTGTGAGCACGCACCAACTCGATGCGCGTAATAGGCATCTGCTCCACCCAGGGGGCAAGGGCACCTGAGGACGATCTGTTCCGAACAGTATATTTGAGCCAATGTTCTATTAGTGAAGGCAAGGTGAGGGCAACTCACACTGGTACCTCGAGGAGTAATCCGATCCATCTAAACTGGCATGCCCGTTCGAGCTCGGGGGGTTCTTGAATTTAGCTGCGTGTACCTCAGGTCTCCTGAAGGTGACACCAAAGTACAAGATAGATAGATAGATAGATAGGTAATATCTGACGTGAATTGCTTACCGCTAGTGAGCGATTTAGGTCACGTCCTCTGAAGATGTACCGTGATCATCGATGAAATGGCTCTGCAGAGCGTTGCTCTTAACTTAGTGGGAGTGTTCCTTTGCAGTCTGATGAAGTCGCTGCATGTTAACTTTGCACTAAGGGCGTTTCCGAACCCTATAGTCATCCTTATTGATTCGCCCTGTCTTACCCAGGATACACTACCGTTCGAGGCTCTTAACGTACCAACGCATGCAGTCAGAAGATGATTCACCATCCAAGCAAATCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTGGCTTTAAAGCACCGAATGTAGTTGGCCATCGGTCTCGGTCACCAATAAGACGGCCTCGTGGGTCACTCGGTCGATGATCTAGGGTCGGGTGCATAGTGTTTCAGGTCGGCGCTCAGGGTTCTTGTCAGGGAAATCTACGGGTGAGTTGGAAAGCGCCGCCAGCGAGATGCCTGTAGGCGATTAGTGTAGAGAGAGCAACATCGGAAAATTGTCCGTGGGGCGCTACGTAAGTGTTCCCAGTATTCTCGTCCAGAGTAAGTCATGCATACCAGTATCAGGCGTCTGTGTGTTACGTTGCAGTGTATCCCGGTAGCGGGAAGCGTATAGAGCGTAACAGACCTGTCCTACAGCACGCAGGATGTCGACCCTTTCTCAGGCACGATACTTCGTGTAACAGCAGTTCCGGTGTCATCTGTAACTGTTCTGTGTTCCATAGTGAAGATATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCGGGCGACCCTGGCAATCAGGCGCCTGCTTATATGACAATTTGTCGCAATACGGGTCGCAGATGTATTGTCCGCATGAGTTTACGGTATCCGGAACTGTCACCGCCGATCCAATATGATCGCAAATCGGGGTGACACAATGGACCGCCGTAGATAAACCCTGCGATGCTGCAATAAGGATATGATATCGCGCGCGGGCCGTAAAACCGATCTTGGAAGGCGGGAAGTCTCCGGGAAAAACTCTCTGATAAAGCCTATTACAAGAAGAGCTCGAAGGCAAGATGGGCATGCCCCGTCGACCACACGGGCAAGCTCTGAGAATCGATGTGGTCGCTTAACCAACCCATACGGAGTGAACGAGACCACGCGGGCGGTTCTTGGTACGCATGATTCCTATTGGTTCTGCCGGGCGTGTGCAGGATTGTTCACTCCCCACCCTGTCGCTCACGAACGCGCTGGTTGCTTAAACCGACCGGAAATTCTGTAGCCGCCCCGTAAGTTTAACGCTTTGAAATACTCCACATGTGCGTACCGGGTCTGATCGCTTACGTGGCGCCACTATGTTAGGAGCTCATAGATATCGATGAATCAAATGTCTTTCATCGCTCCTTAAACAACCTGACGTATTCGCAAAATTGCGCGTATTGAGAAGGGAAAGTTAAAGGAACGATAACAATGAGTCTGCTTTCACCGGCTGCATAACGGGATCGCGCGCTATGGGATTTCCTAACTATAATTCGTGTCGATACTCAGACGCGTTGTACAGGTAAGAAGTCGGCGGGACAGTATTTGAGAAGGGGCTCTGCGGCACCAACGCCGAGCTGTATCAGGGGGGTTAATGTGTAGCGGGCATATAACACAATACAGCCCGCGGCGCGTCGTGGTTACCGTAGAATGAATGAATGAATGAATGAATGAATGAATGAATGAATGGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAACACCGGAGCTAGGATCCACGACTACCAGTGGGAAACTGTGAATTGTGCATGGTAATTAAAGGATGACTGGTCAACACCGGTCTCCACGGGCGTTAAACAACCTCGCTCCAGTCAATCTCTAGCGGTGGTTGTGGCAGCTTATTCCTGGAGGTAATACTCTTCCGGGCCCACTAAAAATGTAACGAAGTCGAGGTTGGGTCAGGGGATTGAGTGGGGGCGACTCACTGATTCCACCAGGAATTGTCGTCAATCGCGACGTACTTTGAGCCTTGTATCTTGGCGTTTCTTGTTGGTACGCGGCCGTGTTCGTGAATCACGACGTCGTTCATGATTCATCCGTCCAAGCCTAGACCTAGCGTAAAAACGGTGTCGATCTGTGCTCCAACCGATGGATGGTTTTTACACAAGTGAACTTCGAGGCTGTGGGACAAACAGCACAACTTGTTCACTGCTGACCGTGGTACTAAACCACGCTTGCTTTCAGCCCTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTCAGATGCGGATCAAGGGTTACTCGAGCCGTTCTGAGGTCCTAAAATTTTAGCCCTTGGTGTTAGCTTCGGTTTAAGAACGTAGGTGCGACGCGGGGGTCCTAGAGCTCCGCGATCTGCACTCCCCACCTGGCACCAAAACGAATCCTGCATAACGGCTCTCTGTGCATGGGGGATGGTCGCAACAACGAGCATAGCTGGCATCACTTCGTTTGCTGTGGATTGCTGTTTTATACAGAATACGGTGGTGATCATCAAAGGAAGCATAATCCACATCGGGCACCCCGGGCCATCGTGCGTTCCCTTATAGCCGGCTTGCATGTTGGGGGAGGAGTAAGGCCGGTAACGTCTCGCAGCACTGTCGCGTAACACAGGTACATCTTTATTTCCGGTGCTGTAGAAGTGGTTTTTCGAAGGCGTAACCCAGAACGACTGATATAATAGTCCACTATTCCCTGGTTTAAGACTTCTACAAAGTTTTACGCAAAGTTACATGCACACTCGGCGACGTAAATATTAGCCTTGCTAAATTGCCACGGATATTAATCCCGAGCCAACCTGTTCCCACTAGCGGTCTACGGTCATAGTCCTTTGTGTAGAGCGTCATTGCGGTTGGGGCCCGTCCGCGGAGGTTCCCCTTATGATCTAACCGCGGTGCAGGTTGACTGAATGCCATACACTATAGAGAAGACGTCTAAGTAGAAACGTTCTTTAAAAATCTTGAACTGACGGCCGAGTATTATCAAGAGAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCATGCACAATAAGGTTAGAAGCAGCAAGCATGTATTCTTTGCATAGAGGCGGTAAAGCCGCCTTGCATACCCAGCAGCAGCCGCGAAGGCCTTACTCCAGAGGACAGAACTTCTCACACAGCGTCCGCATACACCGCGGACGTGACAAGGTTAGATAGCTCTAGTTTGCGGCAACCCTCGCATCAGGCCGACTCACCCGCGCTTGCTACCCGGAGGATGGGTCAAGGGATAAACATAGCACGTTAGTTAAGCCTAACGTCAGTTTTTAGAGTTTACATGCACGACTAAGTGCATCGAAATACACGCCGTTGACAGACCAACAGCGTGTCAACTGGGCCTTGAGAATTGTATCATAATAGCCAAATACGAGGCCAAGTAGTCCGACGAGAGGCACGTAGAGACCACTTTCCCTAAACGATCTGTCGCATTACCCTTTGACTCGCACCCTATGCCTTATGTTCCAAGCAGCACCGAAGTTAGATTTAAGGGCGTATCTATCGGTACCTCGGTTGGGCCGGTCCACAGCTCCAGCTGAATTAGTGCTCACCCCGCTTCGAGGTTGAGTAAGGGTCACTTTTAAAAATATGCTTAAGGGTGATTCACATGACAGTAATCGAATAGTGAGATATAAGTAGGTGCGCCCCGCGCACACATCAAAACTGTGCAGACTGAAACTGAATGCTGGAGGCTGAGGAAAATGAAGATCAGAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGAGAAGAGTGAATGAATAGATCTGCCGCTGAATCCCCGCGTGAGGTTTTTGCGAC -------------------------------------------------------------------------------- /Week6/dna/sequences/9.txt: -------------------------------------------------------------------------------- 1 | AGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCTTCCGTGATTCCTGGATACAGTAGGGCTTTCCAAAAGTTTTCCCCCATAGGGTTTGATACGACCGGAGCAGCACAGGCTCTTGAGGGGATCTTCCCTGTGGCCGCTAATTCACGTGCCGGAAGAGATACGGAGTACCGCTGTAGTTGGGAACGCTTTAACCATTGATAGCGTCCACGTCACTACACAACGTATCACAGTCGCATCTGGTCTCTCCTGCGGATTTACCTTACTGCCATTTTACCGCTGCACACTGTCGTTTTTAATAACACAAGCAACAGTCTCGGATCTATGATTCACGTGAAAACAGAAACATCTGAAATCACTGTCTTATCTAGGCCCTCCAAGCCTCGTCATGTAGAGTTTATCAGTTTATAGATCGGTTCATGGCGGCTATTAGTATAGAGCGTGCCATAATAACGGATCGATCCTAAGCATCTGCCCGTCTATCGAAACGACCGCCAACTGGCCGCAGCGAACCGTAGGAGACCCTGTACGGGCCTTGGCAATTTGGCTTTAAACCTATATATCGTTTCGGACACACAAGAAACTGGTAGGTCAAACGTGCGTCCGCTCACAGAATGGGTAAGCTACCAATGTGCATCTTATGGTGAGACCGCGCCGAGGGCAAAGGCTCAACAGGCTGATAGGGTTGTGCTTAGCGCGCTTGGTCATCAATTATGATGGATTCGATCATATAGTGTTCGTGCACACTGCGCCCTGTCAGACCTTCAGCCGAGACGCGCGCATCAACCATTCGTTTTCTCATGAGACTAGTACCCATTGGATTAAGCTGTGAGGTAACAGTCAGACATGGAATCCCGCAGGAACGTGCAGAAAATCCTTGCCCCATAACGATTCGTCACCGCGTTATAAACTGACTGCAATAAGAATTCTAGTCGGTCGTTTGGTCAGCTGTTGCACGTTAAACAACACTTGGAACTCAGACGAGGCCATACTTAATTCGCGGGATAACGGTTTCTGGCATTGACCGTCAGTTGTGGACGGCCGGGGCTAGTCGGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTCTAGTGTCGACTGTAGCCTAGCTAGGTCGAACACAAAAGGCGGCCTATTAAGAAGAAAAGATTGGAGCTGTCACACTTGAATTTATGGGTTTATCTCGTGTAGTGTAGCGTGAAAAACAGGCGCACTTGGACGCCCTAATGTTTTGCCTATCGTATAGTTCGGCACCCTTATGGACAGCCTAAGGTCCCACGAGCGGATCGCTGCCGGAACCATCAACAGGGCGGTATCGTTAAAGTTGAGAAAAAGGGCTGGCCACAGGAAGGGTCAACTTTCTCTATGGTGATGTGGGACCTCCGAGCTACCGCACAATAGTACTACGGGGGCAATGTCTTGGGTGCGTCTGGCTCTCCAACAATCATAATTTTGCCGTACCTGGTGAATGAGGTTGGGGACATAGTTACGGGTCGCCGGGCCCGCATGCAACAGAGGCTGGTGGAACCGGTGTTAATTGGCAAGAATCCACATTTTTAAGAATGTGGTCCTGACTAGATGGGGCCGCGGAGATTTCTGCCCGCGGATTCAGATTATATTATTGTATTTGATGCCGGAAAACTTCGTCACGACCGGTCCAGCTCGCGCGCTCTATGATTAGCTCTTATACGCAGGCTACGAGCTGCCGTTACAACATTTGCGCACGCAAAGCCAACCTGTCTGGCGACAAGATCAAGGGGCACGTCCACAGTTCCCACAATGGCAATTGTACTATAGGGGTACTCGTCGGATAGGAATTGTTAGGGGGCATTATCTTACGCCTGTGCGATATAGTCGCGGCGGGCTGTCTATCAATCCTGATCGACCGCTAGGTCAATGGGGGGATTACGGACAAACCCCGAGGCTCAACGTGGGACAACGGACTCCTCATGAGGGGCGAACGATTAAGAAGCTCGTCCCTATAAAAGACAGCACTTTCCTATCTTTTAGATAGAAAGGTAAGTGTGATGATCAGACCATTAGGGGCGACATGATTGCCTAAGGTTTCTCCTCATCTTCCATGCCAATCGACCAGGACCGATAGCCATATCTTATTGCTTGTAAGGATTGAGGCGCTTACGAGGACCCAATGGGAGAAATGAATGAATGAATGAATGAATGAATGAATGTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTCTGTGCGTATATCGCAACTCGATCCTAGCTCGCAGCCGTAAGCCGGCAGTAACGCACCTGTTTCTCTCCTGACACCTCTCCACGTCGGTATCTCGACCTAGGTCAATAGGCCCCGAGAAAATAGGGCCAACGCATGGATCCCTCGTAAAATTCTCTAAGCCCCCTGCGTCTCCATCAGGTCATCTAAGGATAAATCGGAACCAGTGTTCCTGATTCCTGGGGATCAGTCTCACAAGTCCCCTGTGCAGCAAATCTTAAGCAGCCTCTCCCAGGAAACTAGAGGGTGGAGGGTGTCCAGTGGCGCAACTAGGGAACCCTCGTGTCGACTGCTTTTTTGTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTTTTTTTCTATACTGTACGGTGCCCGAAGATCCAAAAGATTCTCGATTTCAAAAATAGTTTCACTATTGACCTCAGCTACCGAACGTGTCACGCGAATAAGAACTACGACTGATTGTTGGCCGAGTTCCTGTTGGTCAAATTGACACGCGTAAGAAAGTCATTATTGAAGATCGTAACTTTGCATTAGAGATATCATAAACTGAATACGATCGGAGCGCTCCTCTGATAACCGACCACGAGTTTTGAAAGTTAATGGCTCCACCCTTCCCCTACACATGAATCTCGGCCTACGTAAGGCGTACTGTAAGCCAAGTCATCCCTAGTCTGTTCATTCCGGGATGAGAGATAGCATACGAGGACTCCTAGGCACCGTACTAGAGATCCGTGACTACACTTGGTGAGGTGCAAACAGCCTCCCGCGGTACCCAGCCATGTGCGTAGAAGGCCTTCGGTGATTTAAACGTGGTTCAGTGGGGGACAACCCGCCGTTCTCATAGGTCGTCCTCCTCGTCCTCTGTTGGTAAGCTGTCACCAGAAGCTCTCAAAGGAGTTCCGCGTGGAACTGTACCTTACGCCCAAGTTGACAAGACGAGTCTCCATCCGCCCAATCGAGGGCGGATGCGGTGTTCATCTTAAACTACCGCCCCCGCCCTTCGTTTGAAAAAAGGCAGGCATCGGAAGCACTACGAGCCCCATTCACGAACCACACCCGTGCTAGCTGTGACGCTTACGTCGCTAAAGAGGGGTAGTGAGTAGGGTACACCTTCAGCACTCGGACCATCCCAAACGAAGGACACAGGTTTTAGCGCCGGTCACAGGCCTCGTATGATGAATGACAAGTCATATAATAGGGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAATTGTTCTTCGAGGCTTCTTCGCCAGGATTGGCGGCGTGGTGACCAGCGTGCATATCCCTCAGTTTACAGTCCATCCGGTCATACTAGAAAATCCGGGTGGACTTGACATGTGCTCAGTTTAAGGGCCATCCGGCCTCTCAATCGTTCAGGGCGATCGACTCAGCAGATAACCCGTCTTGAAGTCCTAGTTCCCGCTCCCGCGGTAATAGTGCTTGATCACTAGCGATTCAGGAAACGAGCCGTCCGTGGAAAAGCCGAACGGGACGCCCCCTCACCGAATGCGGTCTGTCCTGAGAGGACCTGACAAAACTACCAGGTGGCGTGTCTAGGTTGGCGAACTAGAATTTTATAGAACCACCGCTCTCCCCCGGTTGACACACCAACATTCCCGTACTCAGATGGAACAGCAGGGTGCAAAAGGTTAGCGTCGCTCCCCTTGTCCACTGTCCGCGGAAGGTACCTCTAACAGGAACCGGGGCCCTTTCTGAGCGAAGAACCAGGAGGTTGAACAAAAACAACGAAAACAGGTGCAGGCCACTGTAAGGTTTGTTTCCAAATCCGTGCCAAAGCAGTACCGGGAGTTTGTGACGAGTAACTGACAACAGTCCCTTCCTACGATACTGAGGTCAGAATAGGCGCTCGTGGAAATGAATCGCTAGCGGATTCACACCAAGCGTATGCCGCAGTCGACCTCTATTAGTAGGTGTCCCAGCGGAGCTGCCCAGCAAGCGAGTGTCAGTCCTCGTATGTCCTAGCAGTTGCAGCAGCATGCCTACGCTTGCGAAACCACAACCTTCATCCCAGAGGAATCCCTTGGACAGTGGTGGTTGACTAGAACGCGAATCCTATATGCTGGAGATCTCCCTTACAGACTAAATTCACTTGTCACTTCGAAATCGGATGCGAGCACGCTCTCAACATAGAAGGTTCGTGACTTTAGCCATGCTAGATCCGATCCCCTTGGTATCCCAGACCATAAAGTAAACCAAAGGACACCTCCACAAGTCGAGTCGATGACATGCAGTAAGCATGAATGATTCCTTTATCAGGAGCAGCATAACTATGAACAACCAGGTAGCGTTGTAACAGATATAGGTCGACACACGGCTTCCTTCATTGTCGGGATCGATGAGGAAGCGAAGTTAACCGCTGTGCTGGTCATCGCTCCAAGTGTTTTCTAATATTCCCCCGTATTATCACAGCTAACGCCCGCGGGATCGTCCGTAAGTTTTAAACAATCTGATAGCCAATAAACCAATAGCCACGTTATGGTACTGGAAGTAGTCGATAAGACTGGCGAAACAAACTTCCCGTCAGGGCCGGGCATGTACAGCATGGGACTGAGTCATTATCGTGTCGAGGGCAGCTGTACGTCTTTAGCAAGGGTAAGGTGAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAATACGGTGATCTGGTCAGGTCTTGGGGGTTGGAAGCATCTTGCAGGTATAAGCAAAAAGGGATATTCTTATGTATTCCGTATTCGTACACAATGAATGGACACTGGGACACTCGCGAGCAAAATACGCCCTGACGACAACACAAATGTCATGGGATTATATGTCTTCGATTAGAAGGTAAGAAATCGCACAGCGGCAACGAACGTAATCTAGAAGTTCTAAGATGGCCTAAAAAACGCCCGTCTCCCCTAAGGTCTAGCAACAACGGTTGATTGCAAGGGGCGTCGGAACAGCCCGGCTTCCTTATAGAAGTATCGAGGTTTCGCCAAAGTACATACTGTTGCCCGCTAAGGTTCGCCTAACAGTCAGAGTAGGTGAGGCGATCGGCCGTGCGTGTCTTTAGTTTTCGACAAGCGTGCTCGGTGTATCGCGT -------------------------------------------------------------------------------- /Week6/readme.md: -------------------------------------------------------------------------------- 1 | # Week 6 2 | 3 | python的首次课,作业包括对之前项目的复刻和两道新题。 4 | 5 | python的语法确实简单好用,就是需要记忆的内容较多。 6 | 7 | 新题均涉及对CSV文件的数据处理,为SQL课程做了铺垫。 -------------------------------------------------------------------------------- /Week6/readme_en.md: -------------------------------------------------------------------------------- 1 | # Week 6 2 | 3 | The first lecture in Python. The problem set includes the reimplementation of previous problems and two new ones. 4 | 5 | Python's grammar is much more user-friendly while needs to memorize more stuff. 6 | 7 | The new problems include data processing with CSV files which foreshadows the SQL. -------------------------------------------------------------------------------- /Week6/sentimental-credit/credit.py: -------------------------------------------------------------------------------- 1 | num = int(input("Number: ")) 2 | 3 | digit, counter, sum = 0, 0, 0 4 | while (num > 0): 5 | counter += 1 6 | digitbuf = digit 7 | digit = num % 10 8 | if counter % 2 == 0: 9 | sum += (2 * digit) % 10 + (2 * digit) // 10 10 | else: 11 | sum += digit 12 | num = num // 10 13 | 14 | cardtype = "INVALID" 15 | if sum % 10 == 0: 16 | if digit == 3 and counter == 15 and (digitbuf == 4 or digitbuf == 7): 17 | cardtype = "AMEX" 18 | elif digit == 4 and (counter == 13 or counter == 16): 19 | cardtype = "VISA" 20 | elif digit == 5 and counter == 16 and (digitbuf > 0 and digitbuf < 6): 21 | cardtype = "MASTERCARD" 22 | print(cardtype) -------------------------------------------------------------------------------- /Week6/sentimental-hello/hello.py: -------------------------------------------------------------------------------- 1 | name = input("What is your name?\n") 2 | print(f"hello, {name}\n") -------------------------------------------------------------------------------- /Week6/sentimental-mario-more/mario.py: -------------------------------------------------------------------------------- 1 | from cs50 import get_int 2 | 3 | while True: 4 | height = get_int("Height: ") 5 | if height > 0 and height <= 8: 6 | break 7 | 8 | ls = [] 9 | for i in range(height + 2): 10 | ls.append(" ") 11 | for i in range(height): 12 | ls[height - 1 - i] = "#" 13 | ls.append("#") 14 | print("".join(ls)) -------------------------------------------------------------------------------- /Week6/sentimental-readability/readability.py: -------------------------------------------------------------------------------- 1 | from cs50 import get_string 2 | 3 | 4 | def main(): 5 | text = get_string("Text: ") 6 | letters = count_letters(text) 7 | words = count_words(text) 8 | sentences = count_sentences(text) 9 | L = letters / words * 100 10 | S = sentences / words * 100 11 | index = round(0.0588 * L - 0.296 * S - 15.8) 12 | if index > 16: 13 | print("Grade 16+") 14 | elif index < 1: 15 | print("Before Grade 1") 16 | else: 17 | print(f"Grade {index}") 18 | 19 | 20 | def count_letters(text): 21 | count = 0 22 | for c in text: 23 | if c.isalpha(): 24 | count += 1 25 | return count 26 | 27 | 28 | def count_words(text): 29 | count = 1 30 | for c in text: 31 | if c.isspace(): 32 | count += 1 33 | return count 34 | 35 | 36 | def count_sentences(text): 37 | count = 0 38 | for c in text: 39 | if c == '.' or c == '!' or c == '?': 40 | count += 1 41 | return count 42 | 43 | 44 | main() -------------------------------------------------------------------------------- /Week6/world-cup/tournament.py: -------------------------------------------------------------------------------- 1 | # Simulate a sports tournament 2 | 3 | import csv 4 | import sys 5 | import random 6 | 7 | # Number of simluations to run 8 | N = 1000 9 | 10 | 11 | def main(): 12 | 13 | # Ensure correct usage 14 | if len(sys.argv) != 2: 15 | sys.exit("Usage: python tournament.py FILENAME") 16 | 17 | teams = [] 18 | # TODO: Read teams into memory from file 19 | with open(sys.argv[1], 'r') as file: 20 | reader = csv.DictReader(file) 21 | for row in reader: 22 | row["rating"] = int(row["rating"]) 23 | teams.append(row) 24 | 25 | counts = {} 26 | # TODO: Simulate N tournaments and keep track of win counts 27 | for team in teams: 28 | counts[team["team"]] = 0 29 | for i in range(N): 30 | champion = simulate_tournament(teams) 31 | counts[champion] += 1 32 | 33 | # Print each team's chances of winning, according to simulation 34 | for team in sorted(counts, key=lambda team: counts[team], reverse=True): 35 | print(f"{team}: {counts[team] * 100 / N:.1f}% chance of winning") 36 | 37 | 38 | def simulate_game(team1, team2): 39 | """Simulate a game. Return True if team1 wins, False otherwise.""" 40 | rating1 = team1["rating"] 41 | rating2 = team2["rating"] 42 | probability = 1 / (1 + 10 ** ((rating2 - rating1) / 600)) 43 | return random.random() < probability 44 | 45 | 46 | def simulate_round(teams): 47 | """Simulate a round. Return a list of winning teams.""" 48 | winners = [] 49 | 50 | # Simulate games for all pairs of teams 51 | for i in range(0, len(teams), 2): 52 | if simulate_game(teams[i], teams[i + 1]): 53 | winners.append(teams[i]) 54 | else: 55 | winners.append(teams[i + 1]) 56 | 57 | return winners 58 | 59 | 60 | def simulate_tournament(teams): 61 | """Simulate a tournament. Return name of winning team.""" 62 | # TODO 63 | while (len(teams) > 1): 64 | teams = simulate_round(teams) 65 | return teams[0]["team"] 66 | 67 | 68 | if __name__ == "__main__": 69 | main() 70 | -------------------------------------------------------------------------------- /Week7/fiftyville/answers.txt: -------------------------------------------------------------------------------- 1 | The THIEF is: Bruce 2 | The city the thief ESCAPED TO: New York City 3 | The ACCOMPLICE is: Robin 4 | -------------------------------------------------------------------------------- /Week7/fiftyville/log.sql: -------------------------------------------------------------------------------- 1 | -- Keep a log of any SQL queries you execute as you solve the mystery. 2 | 3 | -- Extract the id, street and description of the crime based on the time. The id 295's description corresponds to the crime: 4 | /*"Theft of the CS50 duck took place at 10:15am at the Humphrey Street bakery. 5 | Interviews were conducted today with three witnesses who were present at the time –each of their interview transcripts mentions the bakery."*/ 6 | SELECT id, description, street 7 | FROM crime_scene_reports 8 | WHERE year = 2021 9 | AND month = 7 10 | AND day = 28; 11 | 12 | -- Extract the imformation of the interview of the crime based on the reference of "bakery": 13 | /* +---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 14 | | name | transcript | 15 | +---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 16 | | Ruth | Sometime within ten minutes of the theft, I saw the thief get into a car in the bakery parking lot and drive away. 17 | If you have security footage from the bakery parking lot, you might want to look for cars that left the parking lot in that time frame. | 18 | 19 | | Eugene | I don't know the thief's name, but it was someone I recognized. 20 | Earlier this morning, before I arrived at Emma's bakery, I was walking by the ATM on Leggett Street and saw the thief there withdrawing some money. | 21 | 22 | | Raymond | As the thief was leaving the bakery, they called someone who talked to them for less than a minute. 23 | In the call, I heard the thief say that they were planning to take the earliest flight out of Fiftyville tomorrow. 24 | The thief then asked the person on the other end of the phone to purchase the flight ticket. | 25 | +---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+*/ 26 | SELECT name, transcript 27 | FROM interviews 28 | WHERE year = 2021 29 | AND month = 7 30 | AND day = 28 31 | AND transcript LIKE "%bakery%"; 32 | 33 | -- Get the flight number and destination id 34 | /*+----+------------------------+ 35 | | id | destination_airport_id | 36 | +----+------------------------+ 37 | | 36 | 4 | 38 | +----+------------------------+*/ 39 | SELECT id, destination_airport_id 40 | FROM flights 41 | WHERE year = 2021 42 | AND month = 7 43 | AND day = 28 + 1 44 | ORDER BY hour ASC, minute ASC LIMIT 1; 45 | 46 | -- Match the theif based on bank acount, license plate, passport number and phone call 47 | /*+--------+-------+----------------+ 48 | | id | name | phone_number | 49 | +--------+-------+----------------+ 50 | | 686048 | Bruce | (367) 555-5533 | 51 | +--------+-------+----------------+*/ 52 | SELECT id, name, phone_number 53 | FROM people 54 | WHERE id IN 55 | (SELECT person_id 56 | FROM bank_accounts 57 | WHERE account_number IN 58 | (SELECT account_number 59 | FROM atm_transactions 60 | WHERE year = 2021 61 | AND month = 7 62 | AND day = 28 63 | AND atm_location = "Leggett Street" 64 | AND transaction_type = "withdraw")) 65 | AND license_plate IN 66 | (SELECT license_plate 67 | FROM bakery_security_logs 68 | WHERE year = 2021 69 | AND month = 7 70 | AND day = 28 71 | AND hour = 10 72 | AND minute > 15 73 | AND minute <= 15 + 10 74 | AND activity = "exit") 75 | AND passport_number IN 76 | (SELECT passport_number 77 | FROM passengers 78 | WHERE flight_id = 36) 79 | AND phone_number IN 80 | (SELECT caller 81 | FROM phone_calls 82 | WHERE year = 2021 83 | AND month = 7 84 | AND day = 28 85 | AND duration <= 60); 86 | 87 | -- Find the destination of the flight 88 | /*+---------------+ 89 | | city | 90 | +---------------+ 91 | | New York City | 92 | +---------------+*/ 93 | SELECT city 94 | FROM airports 95 | WHERE id = 4; 96 | 97 | --Find the accomplice 98 | /*+-------+ 99 | | name | 100 | +-------+ 101 | | Robin | 102 | +-------+*/ 103 | SELECT name 104 | FROM people 105 | WHERE phone_number = 106 | (SELECT receiver 107 | FROM phone_calls 108 | WHERE caller = "(367) 555-5533" 109 | AND year = 2021 110 | AND month = 7 111 | AND day = 28 112 | AND duration <= 60); -------------------------------------------------------------------------------- /Week7/movies/1.sql: -------------------------------------------------------------------------------- 1 | SELECT title FROM movies WHERE year = 2008; -------------------------------------------------------------------------------- /Week7/movies/10.sql: -------------------------------------------------------------------------------- 1 | SELECT name FROM people WHERE id IN 2 | (SELECT person_id FROM directors WHERE movie_id IN 3 | (SELECT movie_id FROM ratings WHERE rating >= 9.0)); -------------------------------------------------------------------------------- /Week7/movies/11.sql: -------------------------------------------------------------------------------- 1 | SELECT title FROM movies JOIN ratings ON movies.id = ratings.movie_id WHERE id IN 2 | (SELECT movie_id FROM stars WHERE person_id = 3 | (SELECT id FROM people WHERE name = "Chadwick Boseman")) 4 | ORDER BY rating DESC LIMIT 5; -------------------------------------------------------------------------------- /Week7/movies/12.sql: -------------------------------------------------------------------------------- 1 | SELECT title FROM movies WHERE id IN 2 | (SELECT movie_id FROM stars WHERE person_id = 3 | (SELECT id FROM people WHERE name = "Helena Bonham Carter") AND movie_id IN 4 | (SELECT movie_id FROM stars WHERE person_id = 5 | (SELECT id FROM people WHERE name = "Johnny Depp"))); -------------------------------------------------------------------------------- /Week7/movies/13.sql: -------------------------------------------------------------------------------- 1 | SELECT DISTINCT name FROM people WHERE 2 | (id IN(SELECT person_id FROM stars WHERE movie_id IN 3 | (SELECT movie_id FROM stars WHERE person_id = 4 | (SELECT id FROM people WHERE name = "Kevin Bacon" AND birth = 1958))) 5 | AND id <> (SELECT id FROM people WHERE name = "Kevin Bacon" AND birth = 1958)); -------------------------------------------------------------------------------- /Week7/movies/2.sql: -------------------------------------------------------------------------------- 1 | SELECT birth FROM people WHERE name = "Emma Stone"; -------------------------------------------------------------------------------- /Week7/movies/3.sql: -------------------------------------------------------------------------------- 1 | SELECT title FROM movies WHERE year >= 2018 ORDER BY title; -------------------------------------------------------------------------------- /Week7/movies/4.sql: -------------------------------------------------------------------------------- 1 | SELECT COUNT(movie_id) FROM ratings WHERE rating = 10.0; -------------------------------------------------------------------------------- /Week7/movies/5.sql: -------------------------------------------------------------------------------- 1 | SELECT title, year FROM movies WHERE title LIKE "Harry Potter%" ORDER BY year; -------------------------------------------------------------------------------- /Week7/movies/6.sql: -------------------------------------------------------------------------------- 1 | SELECT AVG(rating) FROM ratings WHERE movie_id IN (SELECT id FROM movies WHERE year = 2012); -------------------------------------------------------------------------------- /Week7/movies/7.sql: -------------------------------------------------------------------------------- 1 | SELECT title, rating FROM movies JOIN ratings ON movies.id = ratings.movie_id WHERE year = 2010 2 | ORDER BY rating DESC, title ASC; -------------------------------------------------------------------------------- /Week7/movies/8.sql: -------------------------------------------------------------------------------- 1 | SELECT name FROM people WHERE id IN 2 | (SELECT person_id FROM stars WHERE movie_id = 3 | (SELECT id FROM movies WHERE title = "Toy Story")); -------------------------------------------------------------------------------- /Week7/movies/9.sql: -------------------------------------------------------------------------------- 1 | SELECT DISTINCT name FROM people WHERE id IN 2 | (SELECT person_id FROM stars WHERE movie_id IN 3 | (SELECT id FROM movies WHERE year = 2004))ORDER BY birth; -------------------------------------------------------------------------------- /Week7/readme.md: -------------------------------------------------------------------------------- 1 | # Week 7 2 | 3 | movies和songs均用到了实际的数据库数据,彩蛋满满,为作业平添许多乐趣。 4 | 5 | fiftyville**吹爆,神中神**。推荐给所有SQL入门同学。代入感不错,难度适中,构思精巧,做起来就和玩游戏一样停不下来,感觉完全可以做成一个解密推理独立小游戏。 -------------------------------------------------------------------------------- /Week7/readme_en.md: -------------------------------------------------------------------------------- 1 | # Week 7 2 | 3 | Movies and songs used data from real databases and are interesting. 4 | 5 | Fiftyville is **highly recommended** to all SQL beginners. With elegant design and moderate difficulty, solving the problem is as fun as playing games. Could be made into an independent game. 6 | -------------------------------------------------------------------------------- /Week7/songs/1.sql: -------------------------------------------------------------------------------- 1 | SELECT name FROM songs; -------------------------------------------------------------------------------- /Week7/songs/2.sql: -------------------------------------------------------------------------------- 1 | SELECT name FROM songs ORDER BY tempo; -------------------------------------------------------------------------------- /Week7/songs/3.sql: -------------------------------------------------------------------------------- 1 | SELECT name FROM songs ORDER BY duration_ms DESC LIMIT 5; -------------------------------------------------------------------------------- /Week7/songs/4.sql: -------------------------------------------------------------------------------- 1 | SELECT name FROM songs WHERE danceability > 0.75 AND energy > 0.75 AND valence > 0.75; -------------------------------------------------------------------------------- /Week7/songs/5.sql: -------------------------------------------------------------------------------- 1 | SELECT AVG(energy) FROM songs; -------------------------------------------------------------------------------- /Week7/songs/6.sql: -------------------------------------------------------------------------------- 1 | SELECT name FROM songs WHERE artist_id = (SELECT id FROM artists WHERE name = "Post Malone"); -------------------------------------------------------------------------------- /Week7/songs/7.sql: -------------------------------------------------------------------------------- 1 | SELECT AVG(energy) FROM songs WHERE artist_id = (SELECT id FROM artists WHERE name = "Drake"); -------------------------------------------------------------------------------- /Week7/songs/8.sql: -------------------------------------------------------------------------------- 1 | SELECT name FROM songs WHERE LIKE "%feat.%"; -------------------------------------------------------------------------------- /Week8/homepage/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | My collections 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 23 |
24 |
25 |
26 | 27 |
28 |
29 | 30 |
31 |
32 | 33 |
34 |
35 | 36 | 37 |
38 |

Welcome To My First Webpage.

40 |
41 | 42 | 43 |
44 |
45 | 46 |
47 |
48 | FRONTCOVER-1 49 |
50 |
51 |

To Kill a Mockingbird

52 |

53 | To Kill a Mockingbird is a novel by the American author Harper Lee. It was published in 1960 and was instantly successful. In the United States, it is widely read in high schools and middle schools. To Kill a Mockingbird has become a classic of modern American literature, winning the Pulitzer Prize. The plot and characters are loosely based on Lee's observations of her family, her neighbors and an event that occurred near her hometown of Monroeville, Alabama, in 1936, when she was ten. 54 |

55 |
56 |
57 | 58 |
59 |
60 | FRONTCOVER-2 61 |
62 |
63 |

The Moon and Sixpence

64 |

65 | The Moon and Sixpence is a novel by W. Somerset Maugham, first published on 15 April 1919. It is told in episodic form by a first-person narrator providing a series of glimpses into the mind and soul of the central character, Charles Strickland, a middle-aged English stockbroker, who abandons his wife and children abruptly to pursue his desire to become an artist. The story is, in part, based on the life of the painter Paul Gauguin. 66 |

67 |
68 |
69 | 70 |
71 |
72 | FRONTCOVER-2 73 |
74 |
75 |

Animal Farm

76 |

77 | Animal Farm is a beast fable, in form of satirical allegorical novella, by George Orwell, first published in England on 17 August 1945. It tells the story of a group of farm animals who rebel against their human farmer, hoping to create a society where the animals can be equal, free, and happy. Ultimately, the rebellion is betrayed, and the farm ends up in a state as bad as it was before, under the dictatorship of a pig named Napoleon. 78 |

79 |
80 |
81 | 82 |
83 |
84 | 85 | 86 |
87 | 88 |
89 | 90 |
91 | 92 |
93 | 94 | 95 | -------------------------------------------------------------------------------- /Week8/homepage/myscript.js: -------------------------------------------------------------------------------- 1 | function openPage(pageName, elmnt) { 2 | // Hide all elements with class="tabcontent" by default */ 3 | var i, tabcontent, tablinks; 4 | tabcontent = document.getElementsByClassName("tabcontent"); 5 | for (i = 0; i < tabcontent.length; i++) { 6 | tabcontent[i].style.display = "none"; 7 | } 8 | 9 | // Show the specific tab content 10 | document.getElementById(pageName).style.display = "block"; 11 | } 12 | 13 | function MenuClick() { 14 | var x = document.getElementById("ToggleBar"); 15 | if (x.className.indexOf("w3-show") == -1) { 16 | x.className += " w3-show"; 17 | } else { 18 | x.className = x.className.replace(" w3-show", ""); 19 | } 20 | } -------------------------------------------------------------------------------- /Week8/homepage/styles.css: -------------------------------------------------------------------------------- 1 | body{ 2 | height: 100%; 3 | margin: 0; 4 | } 5 | 6 | :root { 7 | --bs-body-bg-rgb:255,255,255; 8 | --bd-violet-rgb: 6,160,2; 9 | --bd-accent-rgb: 0,20,80; 10 | --bd-pink-rgb: 200,0,13; 11 | --bd-teal-rgb: 3,0,150; 12 | } 13 | 14 | .bd-masthead { 15 | padding: 20rem 0; 16 | background-image: 17 | linear-gradient(180deg, rgba(var(--bs-body-bg-rgb), 0.01), rgba(var(--bs-body-bg-rgb), 1) 85%), 18 | radial-gradient(ellipse at top left, rgba(var(--bd-teal-rgb), 0.5), transparent 50%), 19 | radial-gradient(ellipse at top right, rgba(var(--bd-accent-rgb), 0.5), transparent 50%), 20 | radial-gradient(ellipse at center right, rgba(var(--bd-violet-rgb), 0.5), transparent 50%), 21 | radial-gradient(ellipse at center left, rgba(var(--bd-pink-rgb), 0.5), transparent 50%); 22 | } 23 | 24 | /* Style tab links */ 25 | .bar { 26 | background-color: #134ca1; 27 | } 28 | 29 | .tablink { 30 | background-color: inherit; 31 | color: white; 32 | float: left; 33 | border: none; 34 | outline: none; 35 | cursor: pointer; 36 | padding:14px 16px; 37 | font-size: 17px; 38 | width: 25%; 39 | } 40 | 41 | .tablink:hover { 42 | background-color: #3375d7; 43 | } 44 | 45 | .tabcontent { 46 | display:none; 47 | } 48 | 49 | .center { 50 | display: block; 51 | margin-left: auto; 52 | margin-right: auto; 53 | width: 50%; 54 | } 55 | 56 | .row-margin { 57 | padding:3rem 0; 58 | } 59 | -------------------------------------------------------------------------------- /Week8/readme.md: -------------------------------------------------------------------------------- 1 | # Week 8 2 | 3 | 开放式命题,很烦。 4 | 5 | 花了近一天把W3Shools的HTML、CSS和JS教程简单看了一遍,又看了看bootstrap和W3.CSS的教程。前端的内容实在庞杂,差点给我劝退。 6 | 7 | 最后给自己的资源站简单做了个主页和导航栏。项目成型后会上传并在此附上链接。 -------------------------------------------------------------------------------- /Week8/readme_en.md: -------------------------------------------------------------------------------- 1 | # Week 8 2 | 3 | Open-ended problems are annoying. 4 | 5 | Took quite a whole day skimming through the HTML, CSS and JS tutorials on W3Shools, and also read about the tutorials of bootstrap and W3.CSS. Front-end stuff is complicated. 6 | 7 | Made a homepage and a navbar for my resource station. Might share the project after completion. -------------------------------------------------------------------------------- /Week8/trivia/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Trivia! 8 | 9 | 10 |
11 |

Trivia!

12 |
13 | 14 |
15 |
16 |

Part 1: Multiple Choice

17 |
18 | 19 |

What's the number after 1?

20 |

21 | 22 | 23 | 24 |
25 | 26 |
27 |

Part 2: Free Response

28 |
29 | 30 |

What's the smallest positive integer?

31 |

32 | 33 | 34 |
35 |
36 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /Week8/trivia/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #fff; 3 | color: #212529; 4 | font-size: 1rem; 5 | font-weight: 400; 6 | line-height: 1.5; 7 | margin: 0; 8 | text-align: left; 9 | } 10 | 11 | .container { 12 | margin-left: auto; 13 | margin-right: auto; 14 | padding-left: 15px; 15 | padding-right: 15px; 16 | } 17 | 18 | .header { 19 | background-color: #477bff; 20 | color: #fff; 21 | margin-bottom: 2rem; 22 | padding: 2rem 1rem; 23 | text-align: center; 24 | } 25 | 26 | .section { 27 | padding: 0.5rem 2rem 1rem 2rem; 28 | } 29 | 30 | .section:hover { 31 | background-color: #f5f5f5; 32 | transition: color 2s ease-in-out, background-color 0.15s ease-in-out; 33 | } 34 | 35 | h1 { 36 | font-family: 'Montserrat', sans-serif; 37 | font-size: 48px; 38 | } 39 | 40 | button, input[type="submit"] { 41 | background-color: #d9edff; 42 | border: 1px solid transparent; 43 | border-radius: 0.25rem; 44 | font-size: 0.95rem; 45 | font-weight: 400; 46 | line-height: 1.5; 47 | padding: 0.375rem 0.75rem; 48 | text-align: center; 49 | transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; 50 | vertical-align: middle; 51 | } 52 | 53 | 54 | input[type="text"] { 55 | line-height: 1.8; 56 | width: 25%; 57 | } 58 | 59 | input[type="text"]:hover { 60 | background-color: #f5f5f5; 61 | transition: color 2s ease-in-out, background-color 0.15s ease-in-out; 62 | } 63 | -------------------------------------------------------------------------------- /Week9/birthdays/app.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from cs50 import SQL 4 | from flask import Flask, flash, jsonify, redirect, render_template, request, session 5 | 6 | # Configure application 7 | app = Flask(__name__) 8 | 9 | # Ensure templates are auto-reloaded 10 | app.config["TEMPLATES_AUTO_RELOAD"] = True 11 | 12 | # Configure CS50 Library to use SQLite database 13 | db = SQL("sqlite:///birthdays.db") 14 | 15 | 16 | @app.after_request 17 | def after_request(response): 18 | """Ensure responses aren't cached""" 19 | response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate" 20 | response.headers["Expires"] = 0 21 | response.headers["Pragma"] = "no-cache" 22 | return response 23 | 24 | 25 | @app.route("/", methods=["GET", "POST"]) 26 | def index(): 27 | if request.method == "POST": 28 | # TODO: Add the user's entry into the database 29 | # TODO: Add input checking 30 | name = request.form.get("name") 31 | month = int(request.form.get("month")) 32 | day = int(request.form.get("day")) 33 | db.execute("INSERT INTO birthdays (name, month, day) VALUES(?, ?, ?)", name, month, day) 34 | return redirect("/") 35 | 36 | else: 37 | # TODO: Display the entries in the database on index.html 38 | birthdays = db.execute("SELECT * FROM birthdays") 39 | return render_template("index.html", birthdays=birthdays) 40 | 41 | @app.route("/delete", methods=["POST"]) 42 | def delete(): 43 | db.execute("DELETE FROM birthdays WHERE id = ?", request.form.get("id")) 44 | return redirect("/") 45 | -------------------------------------------------------------------------------- /Week9/birthdays/birthdays.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lng205/CS50x2022/b2f0d2a10c5ba046094a8fea9a03c0a5dce1b0c3/Week9/birthdays/birthdays.db -------------------------------------------------------------------------------- /Week9/birthdays/static/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #fff; 3 | color: #212529; 4 | font-size: 1rem; 5 | font-weight: 400; 6 | line-height: 1.5; 7 | margin: 0; 8 | text-align: left; 9 | } 10 | 11 | .container { 12 | margin-left: auto; 13 | margin-right: auto; 14 | padding-left: 15px; 15 | padding-right: 15px; 16 | text-align: center; 17 | width: 90%; 18 | } 19 | 20 | .header { 21 | background-color: #477bff; 22 | color: #fff; 23 | margin-bottom: 2rem; 24 | padding: 2rem 1rem; 25 | text-align: center; 26 | } 27 | 28 | .section { 29 | padding-bottom: 1rem; 30 | padding-left: 2rem; 31 | padding-right: 2rem; 32 | padding-top: 0.5rem; 33 | } 34 | 35 | .section:hover { 36 | background-color: #f5f5f5; 37 | transition: color 2s ease-in-out, background-color 0.15s ease-in-out; 38 | } 39 | 40 | h1 { 41 | font-family: 'Montserrat', sans-serif; 42 | font-size: 48px; 43 | } 44 | 45 | button, input[type="submit"] { 46 | background-color: #d9edff; 47 | border: 1px solid transparent; 48 | border-radius: 0.25rem; 49 | font-size: 0.95rem; 50 | font-weight: 400; 51 | line-height: 1.5; 52 | padding: 0.375rem 0.75rem; 53 | text-align: center; 54 | transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; 55 | vertical-align: middle; 56 | } 57 | 58 | input[type="text"], input[type="number"] { 59 | line-height: 1.8; 60 | width: 25%; 61 | } 62 | 63 | input[type="text"]:hover, input[type="number"]:hover { 64 | background-color: #f5f5f5; 65 | transition: color 2s ease-in-out, background-color 0.15s ease-in-out; 66 | } 67 | 68 | table { 69 | background-color: transparent; 70 | margin-bottom: 1rem; 71 | width: 100%; 72 | } 73 | 74 | table th, 75 | table td { 76 | padding: 0.75rem; 77 | vertical-align: middle; 78 | } 79 | 80 | tbody tr:nth-of-type(odd) { 81 | background-color: rgb(179, 208, 255, 0.3) 82 | } 83 | 84 | -------------------------------------------------------------------------------- /Week9/birthdays/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Birthdays 8 | 9 | 10 |
11 |

Birthdays

12 |
13 |
14 |
15 | 16 |

Add a Birthday

17 | 18 |
19 | 20 | 21 | 22 | 23 |
24 |
25 | 26 |
27 | 28 |

All Birthdays

29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | {% for birthday in birthdays %} 40 | 41 | 42 | 43 | 49 | 50 | {% endfor %} 51 | 52 |
NameBirthday
{{ birthday["name"] }}{{ birthday["month"] }}/{{ birthday["day"] }} 44 |
45 | 46 | 47 |
48 |
53 |
54 |
55 | 56 | 57 | -------------------------------------------------------------------------------- /Week9/finance/__pycache__/app.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lng205/CS50x2022/b2f0d2a10c5ba046094a8fea9a03c0a5dce1b0c3/Week9/finance/__pycache__/app.cpython-38.pyc -------------------------------------------------------------------------------- /Week9/finance/__pycache__/helpers.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lng205/CS50x2022/b2f0d2a10c5ba046094a8fea9a03c0a5dce1b0c3/Week9/finance/__pycache__/helpers.cpython-38.pyc -------------------------------------------------------------------------------- /Week9/finance/app.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from cs50 import SQL 4 | from flask import Flask, flash, redirect, render_template, request, session 5 | from flask_session import Session 6 | from tempfile import mkdtemp 7 | from werkzeug.security import check_password_hash, generate_password_hash 8 | 9 | from helpers import apology, login_required, lookup, usd 10 | 11 | # Configure application 12 | app = Flask(__name__) 13 | 14 | # Ensure templates are auto-reloaded 15 | app.config["TEMPLATES_AUTO_RELOAD"] = True 16 | 17 | # Custom filter 18 | app.jinja_env.filters["usd"] = usd 19 | 20 | # Configure session to use filesystem (instead of signed cookies) 21 | app.config["SESSION_PERMANENT"] = False 22 | app.config["SESSION_TYPE"] = "filesystem" 23 | Session(app) 24 | 25 | # Configure CS50 Library to use SQLite database 26 | db = SQL("sqlite:///finance.db") 27 | 28 | # Make sure API key is set 29 | if not os.environ.get("API_KEY"): 30 | raise RuntimeError("API_KEY not set") 31 | 32 | 33 | @app.after_request 34 | def after_request(response): 35 | """Ensure responses aren't cached""" 36 | response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate" 37 | response.headers["Expires"] = 0 38 | response.headers["Pragma"] = "no-cache" 39 | return response 40 | 41 | 42 | @app.route("/") 43 | @login_required 44 | def index(): 45 | """Show portfolio of stocks""" 46 | stocks = db.execute("SELECT * FROM stocks WHERE user_id = ?", session["user_id"]) 47 | cash = db.execute("SELECT * FROM users WHERE id = ?", session["user_id"])[0]["cash"] 48 | total = cash 49 | for stock in stocks: 50 | stock_data = lookup(stock["symbol"]) 51 | stock["name"], stock["price"] = stock_data["name"], stock_data["price"] 52 | stock["sum"] = stock["share"] * stock["price"] 53 | total += stock["sum"] 54 | return render_template("home.html", stocks=stocks, cash=usd(cash), total=usd(total)) 55 | 56 | 57 | @app.route("/buy", methods=["GET", "POST"]) 58 | @login_required 59 | def buy(): 60 | """Buy shares of stock""" 61 | # User reached route via POST 62 | if request.method == "POST": 63 | # Get user input 64 | symbol = request.form.get("symbol") 65 | share = request.form.get("shares") 66 | 67 | # Validate the submission 68 | if not symbol: 69 | # flash("Please enter a symbol.") 70 | # return redirect("/buy") 71 | return apology("Please enter a symbol.") 72 | if not share: 73 | # flash("Please enter a share.") 74 | # return redirect("/buy") 75 | return apology("Please enter a share.") 76 | if not share.isdigit(): 77 | return apology("Please enter a positive integer share.") 78 | share = int(share) 79 | if share <= 0: 80 | # flash("Please enter a positive integer share.") 81 | # return redirect("/buy") 82 | return apology("Please enter a positive integer share.") 83 | 84 | # Look up the symbol 85 | symbol_data = lookup(symbol) 86 | if not symbol_data: 87 | # flash("Invalid symbol.") 88 | # return redirect("/buy") 89 | return apology("Invalid symbol.") 90 | price = symbol_data["price"] 91 | 92 | # Get current share and cash 93 | row = db.execute("SELECT share FROM stocks WHERE user_id = ? AND symbol = ?", session["user_id"], symbol) 94 | if row: 95 | share_old = row[0]["share"] 96 | else: 97 | share_old = 0 98 | cash_old = db.execute("SELECT cash FROM users WHERE id = ?", session["user_id"])[0]["cash"] 99 | 100 | # Calculate share and cash after purchase 101 | cost = share * price 102 | share_new = share_old + share 103 | cash_new = cash_old - cost 104 | 105 | # Check for cash's sufficiency 106 | if cash_new < 0: 107 | # flash(f"Insufficient cash. Current cash: {usd(cash_old)}. Cash required: {usd(cost)}") 108 | # return redirect("/buy") 109 | return apology(f"Insufficient cash. Current cash: {usd(cash_old)}. Cash required: {usd(cost)}") 110 | 111 | # Update users table 112 | db.execute("UPDATE users SET cash = ? WHERE id = ?", cash_new, session["user_id"]) 113 | 114 | # Update stocks table 115 | if share_old == 0: 116 | db.execute("INSERT INTO stocks VALUES(?, ?, ?)", session["user_id"], symbol, share_new) 117 | else: 118 | db.execute("UPDATE stocks SET share = ? WHERE user_id = ? AND symbol = ?", share_new, session["user_id"], symbol) 119 | 120 | # Update history table 121 | db.execute("Insert INTO history(user_id, symbol, price, share) VALUES(?, ?, ?, ?)", 122 | session["user_id"], symbol, price, share) 123 | 124 | # Success flash 125 | flash( 126 | f"Success! Total cost:{usd(cost)}. Current Shares of {symbol_data['name']}: {share_new}. Current Cash: {usd(cash_new)}") 127 | return redirect("/buy") 128 | 129 | return render_template("buy.html") 130 | 131 | 132 | @app.route("/history") 133 | @login_required 134 | def history(): 135 | """Show history of transactions""" 136 | transactions = db.execute("SELECT * FROM history WHERE user_id = ?", session["user_id"]) 137 | return render_template("history.html", transactions=transactions) 138 | 139 | 140 | @app.route("/login", methods=["GET", "POST"]) 141 | def login(): 142 | """Log user in""" 143 | # User reached route via POST (as by submitting a form via POST) 144 | if request.method == "POST": 145 | 146 | # Ensure username was submitted 147 | if not request.form.get("username"): 148 | # flash("must provide username") 149 | # return redirect("/login") 150 | return apology("must provide username") 151 | 152 | # Ensure password was submitted 153 | elif not request.form.get("password"): 154 | # flash("must provide password") 155 | # return redirect("/login") 156 | return apology("must provide password") 157 | 158 | # Query database for username 159 | rows = db.execute("SELECT * FROM users WHERE username = ?", request.form.get("username")) 160 | 161 | # Ensure username exists and password is correct 162 | if len(rows) != 1 or not check_password_hash(rows[0]["hash"], request.form.get("password")): 163 | # flash("invalid username and/or password") 164 | # return redirect("/login") 165 | return apology("invalid username and/or password") 166 | 167 | # Remember which user has logged in 168 | session["user_id"] = rows[0]["id"] 169 | 170 | # Redirect user to home page 171 | return redirect("/") 172 | 173 | # User reached route via GET (as by clicking a link or via redirect) 174 | return render_template("login.html") 175 | 176 | 177 | @app.route("/logout") 178 | def logout(): 179 | """Log user out""" 180 | 181 | # Forget any user_id 182 | session.clear() 183 | 184 | # Redirect user to login form 185 | return redirect("/") 186 | 187 | 188 | @app.route("/quote", methods=["GET", "POST"]) 189 | @login_required 190 | def quote(): 191 | """Get stock quote.""" 192 | # User reached route via POST 193 | if request.method == "POST": 194 | price = lookup(request.form.get("symbol")) 195 | if price: 196 | flash(f"A share of {price['name']}({price['symbol']}) costs {usd(price['price'])}.") 197 | return redirect("/quote") 198 | else: 199 | # flash 200 | # redirect 201 | return apology("Invalid symbol.") 202 | 203 | return render_template("quote.html") 204 | 205 | 206 | @app.route("/register", methods=["GET", "POST"]) 207 | def register(): 208 | """Register user""" 209 | # User reached route via POST 210 | if request.method == "POST": 211 | username = request.form.get("username") 212 | password = request.form.get("password") 213 | confirmation = request.form.get("confirmation") 214 | 215 | # Validate the submission 216 | if not username: 217 | # flash("must provide username") 218 | # return redirect("/register") 219 | return apology("must provide username.") 220 | elif not password: 221 | # flash("must provide password") 222 | # return redirect("/register") 223 | return apology("must provide password.") 224 | elif password != confirmation: 225 | return apology("password not match.") 226 | 227 | namesRegisterd = [nameRegisterd['username'] for nameRegisterd in db.execute("SELECT username FROM users")] 228 | if username in namesRegisterd: 229 | # flash("Username has already been registered.") 230 | # return redirect('/register') 231 | return apology("Username has already been registered.") 232 | 233 | db.execute("INSERT INTO users (username, hash) VALUES(?, ?)", username, generate_password_hash(password)) 234 | return redirect("/login") 235 | 236 | return render_template("register.html") 237 | 238 | 239 | @app.route("/sell", methods=["GET", "POST"]) 240 | @login_required 241 | def sell(): 242 | # User reached route via POST 243 | if request.method == "POST": 244 | # Get user input 245 | symbol = request.form.get("symbol") 246 | share = request.form.get("shares") 247 | 248 | # Validate the submission 249 | if not symbol: 250 | # flash("Please choose an option.") 251 | # return redirect("/sell") 252 | return apology("Please choose an option.") 253 | if not share: 254 | # flash("Please enter a share.") 255 | # return redirect("/sell") 256 | return apology() 257 | share = - int(share) 258 | if share >= 0: 259 | # flash("Please enter a positive integer Share.") 260 | # return redirect("/sell") 261 | return apology("Please enter a positive integer Share.") 262 | 263 | # Look up the symbol 264 | symbol_data = lookup(symbol) 265 | if not symbol_data: 266 | # flash("Invalid symbol.") 267 | # return redirect("/sell") 268 | return apology("Invalid symbol.") 269 | price = symbol_data["price"] 270 | 271 | # Get current share and cash 272 | share_old = db.execute("SELECT share FROM stocks WHERE user_id = ? AND symbol = ?", session["user_id"], symbol)[0]["share"] 273 | cash_old = db.execute("SELECT cash FROM users WHERE id = ?", session["user_id"])[0]["cash"] 274 | 275 | # Calculate share and cash after selling 276 | share_new = share_old + share 277 | cash_new = cash_old - share * price 278 | 279 | # Check for share's sufficiency 280 | if share_new < 0: 281 | # flash(f"Insufficient share. Current share: {share_old}") 282 | # return redirect("/sell") 283 | return apology(f"Insufficient share. Current share: {share_old}") 284 | 285 | # Update users table 286 | db.execute("UPDATE users SET cash = ? WHERE id = ?", cash_new, session["user_id"]) 287 | 288 | # Update stocks table 289 | if share_new == 0: 290 | db.execute("DELETE FROM stocks WHERE user_id = ? AND symbol = ?", session["user_id"], symbol) 291 | else: 292 | db.execute("UPDATE stocks SET share = ? WHERE user_id = ? AND symbol = ?", share_new, session["user_id"], symbol) 293 | 294 | # Update history table 295 | db.execute("Insert INTO history(user_id, symbol, price, share) VALUES(?, ?, ?, ?)", 296 | session["user_id"], symbol, price, share) 297 | 298 | # Success flash 299 | flash( 300 | f"Success! Total earn:{usd(share * price)}. Current shares of {symbol_data['name']}: {share_new}. Current cash: {usd(cash_new)}") 301 | return redirect("/sell") 302 | 303 | symbols = db.execute("SELECT symbol FROM STOCKS WHERE user_id = ?", session["user_id"]) 304 | return render_template("sell.html", symbols=symbols) 305 | -------------------------------------------------------------------------------- /Week9/finance/finance.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lng205/CS50x2022/b2f0d2a10c5ba046094a8fea9a03c0a5dce1b0c3/Week9/finance/finance.db -------------------------------------------------------------------------------- /Week9/finance/helpers.py: -------------------------------------------------------------------------------- 1 | import os 2 | import requests 3 | import urllib.parse 4 | 5 | from flask import redirect, render_template, request, session 6 | from functools import wraps 7 | 8 | 9 | def apology(message, code=400): 10 | """Render message as an apology to user.""" 11 | def escape(s): 12 | """ 13 | Escape special characters. 14 | 15 | https://github.com/jacebrowning/memegen#special-characters 16 | """ 17 | for old, new in [("-", "--"), (" ", "-"), ("_", "__"), ("?", "~q"), 18 | ("%", "~p"), ("#", "~h"), ("/", "~s"), ("\"", "''")]: 19 | s = s.replace(old, new) 20 | return s 21 | return render_template("apology.html", top=code, bottom=escape(message)), code 22 | 23 | 24 | def login_required(f): 25 | """ 26 | Decorate routes to require login. 27 | 28 | https://flask.palletsprojects.com/en/1.1.x/patterns/viewdecorators/ 29 | """ 30 | @wraps(f) 31 | def decorated_function(*args, **kwargs): 32 | if session.get("user_id") is None: 33 | return redirect("/login") 34 | return f(*args, **kwargs) 35 | return decorated_function 36 | 37 | 38 | def lookup(symbol): 39 | """Look up quote for symbol.""" 40 | 41 | # Contact API 42 | try: 43 | api_key = os.environ.get("API_KEY") 44 | url = f"https://cloud.iexapis.com/stable/stock/{urllib.parse.quote_plus(symbol)}/quote?token={api_key}" 45 | response = requests.get(url) 46 | response.raise_for_status() 47 | except requests.RequestException: 48 | return None 49 | 50 | # Parse response 51 | try: 52 | quote = response.json() 53 | return { 54 | "name": quote["companyName"], 55 | "price": float(quote["latestPrice"]), 56 | "symbol": quote["symbol"] 57 | } 58 | except (KeyError, TypeError, ValueError): 59 | return None 60 | 61 | 62 | def usd(value): 63 | """Format value as USD.""" 64 | return f"${value:,.2f}" 65 | -------------------------------------------------------------------------------- /Week9/finance/requirements.txt: -------------------------------------------------------------------------------- 1 | cs50 2 | Flask 3 | Flask-Session 4 | requests -------------------------------------------------------------------------------- /Week9/finance/static/styles.css: -------------------------------------------------------------------------------- 1 | /* Size for brand */ 2 | nav .navbar-brand 3 | { 4 | font-size: xx-large; 5 | } 6 | 7 | /* Colors for brand */ 8 | nav .navbar-brand .blue 9 | { 10 | color: #537fbe; 11 | } 12 | nav .navbar-brand .red 13 | { 14 | color: #ea433b; 15 | } 16 | nav .navbar-brand .yellow 17 | { 18 | color: #f5b82e; 19 | } 20 | nav .navbar-brand .green 21 | { 22 | color: #2e944b; 23 | } 24 | -------------------------------------------------------------------------------- /Week9/finance/templates/apology.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block title %} 4 | Apology 5 | {% endblock %} 6 | 7 | {% block main %} 8 | 9 | {{ top }} 10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /Week9/finance/templates/buy.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block title %}Buy{% endblock %} 4 | 5 | {% block main %} 6 |
7 |
8 | 9 |
10 |
11 | 12 |
13 | 14 |
15 | {% endblock %} -------------------------------------------------------------------------------- /Week9/finance/templates/history.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block title %}History{% endblock %} 4 | 5 | {% block main %} 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | {% for transaction in transactions %} 17 | 18 | 19 | 20 | 21 | 22 | 23 | {% endfor %} 24 | 25 |
SymbolSharesPriceTransacted
{{ transaction["symbol"] }}{{ transaction["share"] }}{{ transaction["price"] }}{{ transaction["time"] }}
26 | {% endblock %} -------------------------------------------------------------------------------- /Week9/finance/templates/home.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block title %}Home{% endblock %} 4 | 5 | {% block main %} 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | {% for stock in stocks %} 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | {% endfor %} 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |
SymbolNameSharesPriceTOTAL
{{ stock["symbol"] }}{{ stock["name"] }}{{ stock["share"] }}{{ stock["price"] }}{{ stock["sum"] }}
Cash{{ cash }}
TOTAL{{ total }}
38 | 39 | {% endblock %} -------------------------------------------------------------------------------- /Week9/finance/templates/layout.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | C$50 Finance: {% block title %}{% endblock %} 20 | 21 | 22 | 23 | 24 | 25 | 51 | 52 | {% if get_flashed_messages() %} 53 |
54 | 57 |
58 | {% endif %} 59 | 60 |
61 | {% block main %}{% endblock %} 62 |
63 | 64 |
65 | Data provided by IEX 66 |
67 | 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /Week9/finance/templates/login.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block title %} 4 | Log In 5 | {% endblock %} 6 | 7 | {% block main %} 8 |
9 |
10 | 11 |
12 |
13 | 14 |
15 | 16 |
17 | {% endblock %} 18 | -------------------------------------------------------------------------------- /Week9/finance/templates/quote.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block title %}Quote{% endblock %} 4 | 5 | {% block main %} 6 |
7 |
8 | 9 |
10 | 11 |
12 |
13 |

Don't know what symbol to quote? Try searching the company or try using: TSLA/AAPL/NFLX

14 | {% endblock %} -------------------------------------------------------------------------------- /Week9/finance/templates/register.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block title %} 4 | Register 5 | {% endblock %} 6 | 7 | {% block main %} 8 |
9 |
10 | 11 |
12 |
13 | 14 |
15 |
16 | 17 | 18 |
19 | 20 | 37 |
38 | {% endblock %} -------------------------------------------------------------------------------- /Week9/finance/templates/sell.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block title %}Sell{% endblock %} 4 | 5 | {% block main %} 6 |
7 |
8 | 14 |
15 |
16 | 17 |
18 | 19 |
20 | {% endblock %} -------------------------------------------------------------------------------- /Week9/readme.md: -------------------------------------------------------------------------------- 1 | # Week 9 2 | 3 | Web应用开发。**又一出色作业题**,涉及前后端,通过Python调用Flask框架实现Web应用,调用SQL作为后端数据库,很好地将近四次课的内容串为一个整体。 4 | 5 | 以为没有check50,所以将模板大改特改,用Flask提供的基于session的flash功能代替apology页面,结果check50过不去,最后又得改回模板形式,算是个略不满意的地方。 -------------------------------------------------------------------------------- /Week9/readme_en.md: -------------------------------------------------------------------------------- 1 | # Week 9 2 | 3 | Web application development. **Another excellent problem**, Including the front-end and back-end, using Python with Flask and SQL, chains the latter half of the course into a whole. 4 | 5 | Modify the code framework a lot thinking there's no check50. Used the flash function provided by Flask based on the session, but was unable to pass check50, having to change back to the given framework, which is an unsatisfying experience. -------------------------------------------------------------------------------- /images/p1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lng205/CS50x2022/b2f0d2a10c5ba046094a8fea9a03c0a5dce1b0c3/images/p1.png -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # 总结 2 | 3 | English version: [en](./readme_en.md) 4 | 5 | [课程网站](https://cs50.harvard.edu/x/2022/) 6 | 7 | [CS50P](https://github.com/lng205/CS50P) 8 | 9 | [鸭鸭助手网页版](https://cs50.ai/chat) 10 | 11 | 本课程是面向零基础的CS入门课程。此前我已用C语言做过几个嵌入式开发项目,python也跟着[廖雪峰的博客](https://www.liaoxuefeng.com/wiki/1016959663602400)学了一半。 12 | 13 | 本以为是复习,但课程内容给了我惊喜,C的部分很好的加深了我对这门语言的理解,后半段的Web应用更为我打开了新世界的大门,推荐。 14 | 15 | 前后共三周。除去摸鱼时间,总计100小时左右。 16 | 17 | 下一门课选择了[Nand2Tetris](https://github.com/lng205/Nand2Tetris)。该课被誉为CS101,配套资料完善且开源,教材刚刚在2021年再版了一次。课程仅下半部分前置要求掌握一门高级语言,CS50x完全符合要求。 18 | 19 | ## Week0 20 | 21 | Scratch项目是课程的起点,但不看也不太影响后续学习,已有编程基础的同学可以也选择跳过。 22 | 23 | ## [Week1](./Week1) 24 | 25 | ## [Week2](./Week2) 26 | 27 | ## [Week3](./Week3) 28 | 29 | ## [Week4](./Week4) 30 | 31 | ## [Week5](./Week5) 32 | 33 | ## [Week6](./Week6) 34 | 35 | ## [Week7](./Week7) 36 | 37 | ## [Week8](./Week8) 38 | 39 | ## [Week9](./Week9/readme.md) 40 | 41 | ## Week10 42 | 43 | 大作业计划做个工具站。 44 | 45 | 上完课已经变成了linux的样子,不想再去学Windows命令行,且折腾半天WSL和Docker还是不太顺手。正好手里有个树莓派,打算开发一下。 46 | 47 | 本项目仅供参考,请遵守[学术诚信](https://cs50.harvard.edu/x/2023/honesty/)。 48 | 49 | ## Gradebook 50 | 51 | ![p1](./images/p1.png) 52 | -------------------------------------------------------------------------------- /readme_en.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | [Course station](https://cs50.harvard.edu/x/2022/) 4 | 5 | [CS50P](https://github.com/lng205/CS50P) 6 | 7 | This is a course for CS beginners. I've completed several embedded projects with C before the course, also I've been learning python through half of [this blog](https://www.liaoxuefeng.com/wiki/1016959663602400). 8 | 9 | Thinking as a review, the course surprised me. The C part greatly deepened my understanding of the language. Moreover, the Web application part opened a new world for me. Recommended. 10 | 11 | The course took me three weeks in total. Apart from the relaxing time, it's about a hundred hours. 12 | 13 | Choose [Nand2Tetris](https://github.com/lng205/Nand2Tetris) as my next course. With complete and open-sourced material, the course has been dubbed 'CS101'. The textbook had just been republished in 2021. The course only requires commanding a high-level language for the latter half, and CS50x is sufficient. 14 | 15 | ## Week 0 16 | 17 | Though scratch is the starting point of the course, skipping it won't affect further study much. Thus students with programming basics could skip this part. 18 | 19 | ## [Week1](./Week1/readme_en.md) 20 | 21 | ## [Week2](./Week2/readme_en.md) 22 | 23 | ## [Week3](./Week3/readme_en.md) 24 | 25 | ## [Week4](./Week4/readme_en.md) 26 | 27 | ## [Week5](./Week5/readme_en.md) 28 | 29 | ## [Week6](./Week6/readme_en.md) 30 | 31 | ## [Week7](./Week7/readme_en.md) 32 | 33 | ## [Week8](./Week8/readme_en.md) 34 | 35 | ## [Week9](./Week9/readme_en.md) 36 | 37 | ## Week 10 38 | 39 | Plan to build a tools station. 40 | 41 | Familiar with Linux after the course, I tried to use WSL and Docker, but was not satisfied. So I turned to my [Raspberri pi 4B](https://github.com/lng205/Raspi-WebApp) on hand. 42 | 43 | ## Gradebook 44 | 45 | ![p1](./images/p1.png) 46 | --------------------------------------------------------------------------------