<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://teaching.healthtech.dtu.dk/22113/index.php?action=history&amp;feed=atom&amp;title=Comprehension%2C_Generators%2C_Functions_and_Methods</id>
	<title>Comprehension, Generators, Functions and Methods - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://teaching.healthtech.dtu.dk/22113/index.php?action=history&amp;feed=atom&amp;title=Comprehension%2C_Generators%2C_Functions_and_Methods"/>
	<link rel="alternate" type="text/html" href="https://teaching.healthtech.dtu.dk/22113/index.php?title=Comprehension,_Generators,_Functions_and_Methods&amp;action=history"/>
	<updated>2026-04-29T05:13:09Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://teaching.healthtech.dtu.dk/22113/index.php?title=Comprehension,_Generators,_Functions_and_Methods&amp;diff=112&amp;oldid=prev</id>
		<title>WikiSysop: /* Exercises to be handed in */</title>
		<link rel="alternate" type="text/html" href="https://teaching.healthtech.dtu.dk/22113/index.php?title=Comprehension,_Generators,_Functions_and_Methods&amp;diff=112&amp;oldid=prev"/>
		<updated>2025-03-16T06:12:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Exercises to be handed in&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:12, 16 March 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l25&quot;&gt;Line 25:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 25:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Exercises to be handed in ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Exercises to be handed in ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;lt;font color=&quot;#AA00FF&quot;&amp;gt;Make a program that calculates the product of two matrices and prints it on &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;STDOUT (&lt;/del&gt;the screen). The matrices are in the files &#039;&#039;mat1.dat&#039;&#039; and &#039;&#039;mat2.dat&#039;&#039;. Numbers in the files are tab separated. A matrix should be stored as an list of lists.&amp;lt;br&amp;gt;Advice: The program should have a function that reads a matrix from a given file (to be used twice), a function that calculates the product, and a function that prints a matrix. This way ensures that your program is easy to change to other forms of matrix calculations. Here are two links to the definition of matrix multiplication.&amp;lt;br&amp;gt;[https://www.mathsisfun.com/algebra/matrix-multiplying.html Math is Fun]&amp;lt;br&amp;gt;[http://mathworld.wolfram.com/MatrixMultiplication.html Math world]&amp;lt;/font&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &amp;lt;font color=&quot;#AA00FF&quot;&amp;gt;Make a program that calculates the product of two matrices and prints it on the screen &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(which is STDOUT, remember unix&lt;/ins&gt;). The matrices are in the files &#039;&#039;mat1.dat&#039;&#039; and &#039;&#039;mat2.dat&#039;&#039;. Numbers in the files are tab separated. A matrix should be stored as an list of lists.&amp;lt;br&amp;gt;Advice: The program should have a function that reads a matrix from a given file (to be used twice), a function that calculates the product, and a function that prints a matrix. This way ensures that your program is easy to change to other forms of matrix calculations. Here are two links to the definition of matrix multiplication.&amp;lt;br&amp;gt;[https://www.mathsisfun.com/algebra/matrix-multiplying.html Math is Fun]&amp;lt;br&amp;gt;[http://mathworld.wolfram.com/MatrixMultiplication.html Math world]&amp;lt;/font&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The purpose of this exercise is to find the 10 genes that has the biggest difference in expression between cancer and control patients in the &amp;#039;&amp;#039;dna-array.dat&amp;#039;&amp;#039; file after a linear transformation of the numbers in the columns. In order to not start from the beginning, use the file &amp;#039;&amp;#039;dna-array-norm.dat&amp;#039;&amp;#039; created in exercise 4 in [[Advanced Data Structures and New Data Types]] as input. The other tab-separated input file &amp;#039;&amp;#039;lineartransform.dat&amp;#039;&amp;#039; has an &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039; (slope) and a &amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039; (intersection) - one AB pair for each number column in the &amp;#039;&amp;#039;dna-array-norm.dat&amp;#039;&amp;#039; file. For each line in &amp;#039;&amp;#039;dna-array-norm.dat&amp;#039;&amp;#039; you first linear transform the numbers according to the A &amp;amp; B in &amp;#039;&amp;#039;lineartransform.dat&amp;#039;&amp;#039; - first number uses first AB pair, second number uses second AB pair, and so forth. If your number is X, then the transformed number is A*X+B. When the entire line is transformed, you calculate the average of the cancer patients and the average of the controls. From that, find the 10 genes with the biggest difference in expression. There are a number of ways, but a simple one is to create a list of tuples with every tuple consisting of (gene name, cancer average, control average), and then sort the list according to the difference in cancer and control average. Using a lambda function when sorting springs to mind. Display the top 10 in the sorted list.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The purpose of this exercise is to find the 10 genes that has the biggest difference in expression between cancer and control patients in the &amp;#039;&amp;#039;dna-array.dat&amp;#039;&amp;#039; file after a linear transformation of the numbers in the columns. In order to not start from the beginning, use the file &amp;#039;&amp;#039;dna-array-norm.dat&amp;#039;&amp;#039; created in exercise 4 in [[Advanced Data Structures and New Data Types]] as input. The other tab-separated input file &amp;#039;&amp;#039;lineartransform.dat&amp;#039;&amp;#039; has an &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039; (slope) and a &amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039; (intersection) - one AB pair for each number column in the &amp;#039;&amp;#039;dna-array-norm.dat&amp;#039;&amp;#039; file. For each line in &amp;#039;&amp;#039;dna-array-norm.dat&amp;#039;&amp;#039; you first linear transform the numbers according to the A &amp;amp; B in &amp;#039;&amp;#039;lineartransform.dat&amp;#039;&amp;#039; - first number uses first AB pair, second number uses second AB pair, and so forth. If your number is X, then the transformed number is A*X+B. When the entire line is transformed, you calculate the average of the cancer patients and the average of the controls. From that, find the 10 genes with the biggest difference in expression. There are a number of ways, but a simple one is to create a list of tuples with every tuple consisting of (gene name, cancer average, control average), and then sort the list according to the difference in cancer and control average. Using a lambda function when sorting springs to mind. Display the top 10 in the sorted list.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Make a moving average generator: &amp;#039;&amp;#039;&amp;#039;moving_avg(List_of_numbers, Window_size)&amp;#039;&amp;#039;&amp;#039;. The generator calculates the average number in a window moving across the list. Try it on the numbers in &amp;#039;&amp;#039;ex1.dat&amp;#039;&amp;#039;, i.e. load the numbers column-based into a single list first, i.e. first all the numbers in column 1, then the numbers in column 2, and so forth in the list.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Make a moving average generator: &amp;#039;&amp;#039;&amp;#039;moving_avg(List_of_numbers, Window_size)&amp;#039;&amp;#039;&amp;#039;. The generator calculates the average number in a window moving across the list. Try it on the numbers in &amp;#039;&amp;#039;ex1.dat&amp;#039;&amp;#039;, i.e. load the numbers column-based into a single list first, i.e. first all the numbers in column 1, then the numbers in column 2, and so forth in the list.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key c22113:diff:1.41:old-31:rev-112:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://teaching.healthtech.dtu.dk/22113/index.php?title=Comprehension,_Generators,_Functions_and_Methods&amp;diff=31&amp;oldid=prev</id>
		<title>WikiSysop: Created page with &quot;__NOTOC__ {| width=500  style=&quot;font-size: 10px; float:right; margin-left: 10px; margin-top: -56px;&quot; |Previous: Advanced Data Structures and New Data Types |Next: Classes |} == Required course material for the lesson == Powerpoint: [https://teaching.healthtech.dtu.dk/material/22113/22113_06-Comprehension.ppt Comprehension, Generators, Functions and Methods]&lt;br&gt; Video: [https://panopto.dtu.dk/Panopto/Pages/Viewer.aspx?id=ef476c74-cc82-4478-afd2-af270128c92f Compreh...&quot;</title>
		<link rel="alternate" type="text/html" href="https://teaching.healthtech.dtu.dk/22113/index.php?title=Comprehension,_Generators,_Functions_and_Methods&amp;diff=31&amp;oldid=prev"/>
		<updated>2024-03-06T13:59:12Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;__NOTOC__ {| width=500  style=&amp;quot;font-size: 10px; float:right; margin-left: 10px; margin-top: -56px;&amp;quot; |Previous: &lt;a href=&quot;/22113/index.php/Advanced_Data_Structures_and_New_Data_Types&quot; title=&quot;Advanced Data Structures and New Data Types&quot;&gt;Advanced Data Structures and New Data Types&lt;/a&gt; |Next: &lt;a href=&quot;/22113/index.php/Classes&quot; title=&quot;Classes&quot;&gt;Classes&lt;/a&gt; |} == Required course material for the lesson == Powerpoint: [https://teaching.healthtech.dtu.dk/material/22113/22113_06-Comprehension.ppt Comprehension, Generators, Functions and Methods]&amp;lt;br&amp;gt; Video: [https://panopto.dtu.dk/Panopto/Pages/Viewer.aspx?id=ef476c74-cc82-4478-afd2-af270128c92f Compreh...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOTOC__&lt;br /&gt;
{| width=500  style=&amp;quot;font-size: 10px; float:right; margin-left: 10px; margin-top: -56px;&amp;quot;&lt;br /&gt;
|Previous: [[Advanced Data Structures and New Data Types]]&lt;br /&gt;
|Next: [[Classes]]&lt;br /&gt;
|}&lt;br /&gt;
== Required course material for the lesson ==&lt;br /&gt;
Powerpoint: [https://teaching.healthtech.dtu.dk/material/22113/22113_06-Comprehension.ppt Comprehension, Generators, Functions and Methods]&amp;lt;br&amp;gt;&lt;br /&gt;
Video: [https://panopto.dtu.dk/Panopto/Pages/Viewer.aspx?id=ef476c74-cc82-4478-afd2-af270128c92f Comprehension] Monday&amp;lt;br&amp;gt;&lt;br /&gt;
Video: [https://panopto.dtu.dk/Panopto/Pages/Viewer.aspx?id=ad2b345c-4c9f-4fbb-8593-af270128ae40 Generators] Monday&amp;lt;br&amp;gt;&lt;br /&gt;
Video: [https://panopto.dtu.dk/Panopto/Pages/Viewer.aspx?id=ff23a72f-a1ee-46fc-a434-af2701281405 Iteration in detail, use of lambda function, libraries] Monday&amp;lt;br&amp;gt;&lt;br /&gt;
Video: [https://panopto.dtu.dk/Panopto/Pages/Viewer.aspx?id=83c5ef87-3ed8-4069-b691-af130047ec9f How to parse bio files with many entries]&amp;lt;br&amp;gt;&lt;br /&gt;
Resource: [[Example code - Comprehension]]&amp;lt;br&amp;gt;&lt;br /&gt;
Resource: [[Example code - Misc]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Video: [https://video.dtu.dk/media/22110-lesson11-LiveCoding/0_0l5ifl0e Live Coding 1]&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
Video: [https://panopto.dtu.dk/Panopto/Pages/Viewer.aspx?id=56f5c2c8-a3fe-4847-bb94-af2701286138 Live Coding 2]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Subjects covered ==&lt;br /&gt;
&amp;#039;&amp;#039;Comprehension&amp;#039;&amp;#039;, which is a way of manipulation/selecting data with a hidden loop.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Lambda&amp;#039;&amp;#039;, the small anonymous function.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Generators&amp;#039;&amp;#039;, which is like a function with memory of previous calls.&amp;lt;br&amp;gt;&lt;br /&gt;
More theoretical iteration.&amp;lt;br&amp;gt;&lt;br /&gt;
New functions and methods.&lt;br /&gt;
&lt;br /&gt;
== Exercises to be handed in ==&lt;br /&gt;
# &amp;lt;font color=&amp;quot;#AA00FF&amp;quot;&amp;gt;Make a program that calculates the product of two matrices and prints it on STDOUT (the screen). The matrices are in the files &amp;#039;&amp;#039;mat1.dat&amp;#039;&amp;#039; and &amp;#039;&amp;#039;mat2.dat&amp;#039;&amp;#039;. Numbers in the files are tab separated. A matrix should be stored as an list of lists.&amp;lt;br&amp;gt;Advice: The program should have a function that reads a matrix from a given file (to be used twice), a function that calculates the product, and a function that prints a matrix. This way ensures that your program is easy to change to other forms of matrix calculations. Here are two links to the definition of matrix multiplication.&amp;lt;br&amp;gt;[https://www.mathsisfun.com/algebra/matrix-multiplying.html Math is Fun]&amp;lt;br&amp;gt;[http://mathworld.wolfram.com/MatrixMultiplication.html Math world]&amp;lt;/font&amp;gt;&lt;br /&gt;
# The purpose of this exercise is to find the 10 genes that has the biggest difference in expression between cancer and control patients in the &amp;#039;&amp;#039;dna-array.dat&amp;#039;&amp;#039; file after a linear transformation of the numbers in the columns. In order to not start from the beginning, use the file &amp;#039;&amp;#039;dna-array-norm.dat&amp;#039;&amp;#039; created in exercise 4 in [[Advanced Data Structures and New Data Types]] as input. The other tab-separated input file &amp;#039;&amp;#039;lineartransform.dat&amp;#039;&amp;#039; has an &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039; (slope) and a &amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039; (intersection) - one AB pair for each number column in the &amp;#039;&amp;#039;dna-array-norm.dat&amp;#039;&amp;#039; file. For each line in &amp;#039;&amp;#039;dna-array-norm.dat&amp;#039;&amp;#039; you first linear transform the numbers according to the A &amp;amp; B in &amp;#039;&amp;#039;lineartransform.dat&amp;#039;&amp;#039; - first number uses first AB pair, second number uses second AB pair, and so forth. If your number is X, then the transformed number is A*X+B. When the entire line is transformed, you calculate the average of the cancer patients and the average of the controls. From that, find the 10 genes with the biggest difference in expression. There are a number of ways, but a simple one is to create a list of tuples with every tuple consisting of (gene name, cancer average, control average), and then sort the list according to the difference in cancer and control average. Using a lambda function when sorting springs to mind. Display the top 10 in the sorted list.&lt;br /&gt;
# Make a moving average generator: &amp;#039;&amp;#039;&amp;#039;moving_avg(List_of_numbers, Window_size)&amp;#039;&amp;#039;&amp;#039;. The generator calculates the average number in a window moving across the list. Try it on the numbers in &amp;#039;&amp;#039;ex1.dat&amp;#039;&amp;#039;, i.e. load the numbers column-based into a single list first, i.e. first all the numbers in column 1, then the numbers in column 2, and so forth in the list.&lt;br /&gt;
# Make a trend discoverer generator: &amp;#039;&amp;#039;&amp;#039;trend(List_of_numbers)&amp;#039;&amp;#039;&amp;#039;. It looks at a list of numbers in a moving window way and emits 1, if the next number is higher than the previous, and 0 otherwise. Any longer sequence of 0&amp;#039;s or 1&amp;#039;s in the generator output is a trend in the data. Check with &amp;#039;&amp;#039;ex1.dat&amp;#039;&amp;#039; (load same way a previous exercise) or another file of your choosing.&lt;br /&gt;
# Changing the previous exercise: Make a &amp;#039;&amp;#039;&amp;#039;find_trend(List_of_numbers, Minimum_trend_size)&amp;#039;&amp;#039;&amp;#039; generator, which return a tuple &amp;#039;&amp;#039;&amp;#039;(Position_Start, Size, Direction)&amp;#039;&amp;#039;&amp;#039; of where and how big the trends in List_of_numbers are. &amp;#039;&amp;#039;&amp;#039;Direction&amp;#039;&amp;#039;&amp;#039; is 0 or 1 as you want to know which direction the trend is going. &amp;#039;&amp;#039;&amp;#039;Position_start&amp;#039;&amp;#039;&amp;#039; is the position in the (zero-based) list, where the trend starts. &amp;#039;&amp;#039;&amp;#039;Size&amp;#039;&amp;#039;&amp;#039; is how long the trend of ascending/descending numbers is. This is surprisingly difficult. Test with a simple file of your own making to check your results.&lt;br /&gt;
# Make a generator &amp;#039;&amp;#039;&amp;#039;combinations()&amp;#039;&amp;#039;&amp;#039;, that takes a list of strings as input, e.g. &amp;#039;&amp;#039;&amp;#039;combinations([&amp;quot;GAVIL&amp;quot;, &amp;quot;ST&amp;quot;, &amp;quot;NQ&amp;quot;, &amp;quot;FWY&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;HKR&amp;quot;])&amp;#039;&amp;#039;&amp;#039;, and generates all possible combinations. A combination is formed by choosing 1 letter from the first string, 1 letter from the second string, and so forth, in that order, until a letter from all strings is chosen. The input list can have any number of strings and the strings can have any length (greater than 0). There must be NO REPEATS - random is not an acceptable library to use. As is obvious, the example has 5*2*2*3*1*3 = 180 different combinations, the first being GSNFDH. Print them all on the screen. If your input is [&amp;#039;0123456789&amp;#039;, &amp;#039;0123456789&amp;#039;, &amp;#039;0123456789&amp;#039;], then you will print the numbers from 000 to 999. Hint: A list of counters, 1 per string, could be useful in iterating through the combinations.&amp;lt;br&amp;gt;When can such a generator be useful? If you want to generate a list of antigens, which needs certain amino acids to be in certain positions.&lt;br /&gt;
&lt;br /&gt;
== Exercises for extra practice ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
</feed>