Program to print DNA sequence
Given the value of n i.e, the number of lobes. Print the double-helix structure of Deoxyribonucleic acid(DNA).
Input: n = 8 Output: AT T--A A----T T------A T------A G----C T--A GC CG C--G A----T A------T T------A A----T A--T GC AT C--G T----A C------G C------G T----A G--C AT AT T--A A----T T------A T------A G----C T--A GC
Explanation :
DNA primarily consists of 4 hydrocarbons i.e. cytosine [C], guanine [G], adenine[A], thymine [T].
DNA bases pair up with each other, A with T and C with G, to form units called base pairs.
Below is the implementation to print the double-helix DNA sequence :
CPP
// CPP Program to print the // 'n' lobes of DNA pattern #include <bits/stdc++.h> using namespace std; // Function to print upper half // of the DNA or the upper lobe void printUpperHalf(string str) { char first, second; int pos = 0; // Each half of the DNA is made of // combination of two compounds for ( int i = 1; i <= 4; i++) { // Taking the two carbon // compounds from the string first = str[pos]; second = str[pos + 1]; pos += 2; for ( int j = 4 - i; j >= 1; j--) cout << " " ; cout << first; for ( int j = 1; j < i; j++) cout << "--" ; cout << second << endl; } } // Function to print lower half // of the DNA or the lower lobe void printLowerHalf(string str) { char first, second; int pos = 0; for ( int i = 1; i <= 4; i++) { first = str[pos]; second = str[pos + 1]; pos += 2; for ( int j = 1; j < i; j++) cout << " " ; cout << first; for ( int j = 4 - i; j >= 1; j--) cout << "--" ; cout << second << endl; } } // Function to print 'n' parts of DNA void printDNA(string str[], int n) { for ( int i = 0; i < n; i++) { int x = i % 6; // Calling for upperhalf if (x % 2 == 0) printUpperHalf(str[x]); else // Calling for lowerhalf printLowerHalf(str[x]); } } // Driver function int main() { int n = 8; // combinations stored in the array string DNA[] = { "ATTAATTA" , "TAGCTAGC" , "CGCGATAT" , "TAATATGC" , "ATCGTACG" , "CGTAGCAT" }; printDNA(DNA, n); return 0; } |
Java
// Java Program to print the // 'n' lobes of DNA pattern import java.io.*; class GFG { // Function to print upper half // of the DNA or the upper lobe static void printUpperHalf(String str) { char first, second; int pos = 0 ; // Each half of the DNA is made of // combination of two compounds for ( int i = 1 ; i <= 4 ; i++) { // Taking the two carbon // compounds from the string first = str.charAt(pos); second = str.charAt(pos+ 1 ); pos += 2 ; for ( int j = 4 - i; j >= 1 ; j--) System.out.print( " " ); System.out.print(first); for ( int j = 1 ; j < i; j++) System.out.print( "--" ); System.out.println(second); } } // Function to print lower half // of the DNA or the lower lobe static void printLowerHalf(String str) { char first, second; int pos = 0 ; for ( int i = 1 ; i <= 4 ; i++) { first = str.charAt(pos); second = str.charAt(pos+ 1 ); pos += 2 ; for ( int j = 1 ; j < i; j++) System.out.print( " " ); System.out.print(first); for ( int j = 4 - i; j >= 1 ; j--) System.out.print( "--" ); System.out.println(second); } } // Function to print 'n' parts of DNA static void printDNA(String str[], int n) { for ( int i = 0 ; i < n; i++) { int x = i % 6 ; // Calling for upperhalf if (x % 2 == 0 ) printUpperHalf(str[x]); else // Calling for lowerhalf printLowerHalf(str[x]); } } public static void main (String[] args) { int n = 8 ; // combinations stored in the array String DNA[] = { "ATTAATTA" , "TAGCTAGC" , "CGCGATAT" , "TAATATGC" , "ATCGTACG" , "CGTAGCAT" }; printDNA(DNA, n); } } // This code is contributed by Gitanjali |
Python3
# Python Program to print the # 'n' lobes of DNA pattern import math # Function to print upper half # of the DNA or the upper lobe def printUpperHalf( str ): first = 0 second = 0 pos = 0 # Each half of the DNA is made of # combination of two compounds for i in range ( 1 , 5 ): # Taking the two carbon # compounds from the string first = str [pos] second = str [pos + 1 ] pos + = 2 for j in range ( 4 - i, 0 , - 1 ): print ( " " ,end = "") print (first,end = "") for j in range ( 1 , i): print ( "--" ,end = "") print (second) # Function to print lower half # of the DNA or the lower lobe def printLowerHalf( str ): first = 0 second = 0 pos = 0 for i in range ( 1 , 5 ): first = str [pos] second = str [pos + 1 ] pos + = 2 for j in range ( 1 ,i): print ( " " ,end = "") print (first,end = "") for j in range ( 4 - i, 0 , - 1 ): print ( "--" ,end = "") print (second) # Function to print 'n' parts of DNA def printDNA( str , n): for i in range ( 0 ,n): x = i % 6 # Calling for upperhalf if (x % 2 = = 0 ): printUpperHalf( str [x]) else : # Calling for lowerhalf printLowerHalf( str [x]) # driver code n = 8 # combinations stored in the array DNA = [ "ATTAATTA" , "TAGCTAGC" , "CGCGATAT" , "TAATATGC" , "ATCGTACG" , "CGTAGCAT" ] printDNA(DNA, n) # This code is contributed by Gitanjali. |
C#
// C# Program to print the 'n' lobes of // DNA pattern using System; class GFG { // Function to print upper half // of the DNA or the upper lobe static void printUpperHalf( string str) { char first, second; int pos = 0; // Each half of the DNA is made of // combination of two compounds for ( int i = 1; i <= 4; i++) { // Taking the two carbon // compounds from the string first = str[pos]; second = str[pos+1]; pos += 2; for ( int j = 4 - i; j >= 1; j--) Console.Write( " " ); Console.Write(first); for ( int j = 1; j < i; j++) Console.Write( "--" ); Console.WriteLine(second); } } // Function to print lower half // of the DNA or the lower lobe static void printLowerHalf( string str) { char first, second; int pos = 0; for ( int i = 1; i <= 4; i++) { first = str[pos]; second = str[pos+1]; pos += 2; for ( int j = 1; j < i; j++) Console.Write( " " ); Console.Write(first); for ( int j = 4 - i; j >= 1; j--) Console.Write( "--" ); Console.WriteLine(second); } } // Function to print 'n' parts of DNA static void printDNA( string []str, int n) { for ( int i = 0; i < n; i++) { int x = i % 6; // Calling for upperhalf if (x % 2 == 0) printUpperHalf(str[x]); else // Calling for lowerhalf printLowerHalf(str[x]); } } public static void Main () { int n = 8; // combinations stored in the array string []DNA = { "ATTAATTA" , "TAGCTAGC" , "CGCGATAT" , "TAATATGC" , "ATCGTACG" , "CGTAGCAT" }; printDNA(DNA, n); } } // This code is contributed by vt_m. |
PHP
<?php // PHP implementation to print the // 'n' lobes of DNA pattern // Function to print upper half // of the DNA or the upper lobe function printUpperHalf( $str ) { $pos = 0; // Each half of the DNA is made of // combination of two compounds for ( $i = 1; $i <= 4; $i ++) { // Taking the two carbon // compounds from the string $first = $str [ $pos ]; $second = $str [ $pos + 1]; $pos += 2; for ( $j = 4 - $i ; $j >= 1; $j --) echo " " ; echo $first ; for ( $j = 1; $j < $i ; $j ++) echo "--" ; echo $second . "\n" ; } } // Function to print lower half // of the DNA or the lower lobe function printLowerHalf( $str ) { $pos = 0; for ( $i = 1; $i <= 4; $i ++) { $first = $str [ $pos ]; $second = $str [ $pos + 1]; $pos += 2; for ( $j = 1; $j < $i ; $j ++) echo " " ; echo $first ; for ( $j = 4 - $i ; $j >= 1; $j --) echo "--" ; echo $second . "\n" ; } } // Function to print 'n' parts of DNA function printDNA( $str , $n ) { for ( $i = 0; $i < $n ; $i ++) { $x = $i % 6; // Calling for upperhalf if ( $x % 2 == 0) printUpperHalf( $str [ $x ]); else // Calling for lowerhalf printLowerHalf( $str [ $x ]); } } // Driver code $n = 8; $DNA = array ( "ATTAATTA" , "TAGCTAGC" , "CGCGATAT" , "TAATATGC" , "ATCGTACG" , "CGTAGCAT" ); printDNA( $DNA , $n ); // This code is contributed by mits. ?> |
Javascript
<script> // javascript Program to print the // 'n' lobes of DNA pattern // Function to print upper half // of the DNA or the upper lobe function printUpperHalf(str) { var first, second; var pos = 0; // Each half of the DNA is made of // combination of two compounds for ( var i = 1; i <= 4; i++) { // Taking the two carbon // compounds from the string first = str.charAt(pos); second = str.charAt(pos+1); pos += 2; for ( var j = 4 - i; j >= 1; j--) document.write( " " ); document.write(first); for ( var j = 1; j < i; j++) document.write( "--" ); document.write(second+ "<br>" ); } } // Function to print lower half // of the DNA or the lower lobe function printLowerHalf(str) { var first, second; var pos = 0; for ( var i = 1; i <= 4; i++) { first = str.charAt(pos); second = str.charAt(pos+1); pos += 2; for ( var j = 1; j < i; j++) document.write( " " ); document.write(first); for ( var j = 4 - i; j >= 1; j--) document.write( "--" ); document.write(second+ "<br>" ); } } // Function to print 'n' parts of DNA function printDNA(str , n) { for ( var i = 0; i < n; i++) { var x = i % 6; // Calling for upperhalf if (x % 2 == 0) printUpperHalf(str[x]); else // Calling for lowerhalf printLowerHalf(str[x]); } } var n = 8; // combinations stored in the array var DNA = [ "ATTAATTA" , "TAGCTAGC" , "CGCGATAT" , "TAATATGC" , "ATCGTACG" , "CGTAGCAT" ]; printDNA(DNA, n); // This code contributed by Princi Singh </script> |
Output :
AT T--A A----T T------A T------A G----C T--A GC CG C--G A----T A------T T------A A----T A--T GC AT C--G T----A C------G C------G T----A G--C AT AT T--A A----T T------A T------A G----C T--A GC
Time Complexity: O(N), as we are using a loop to traverse N times. Where N is the input given.
Auxiliary Space: O(1), as we are not using any extra space.