title: Sum Two Large Numbers
signature: sumTwoLargeNumbers :: String -> String -> String
  sumTwoLargeNumbers str1 str2 = 
test_code: import Text.Printf
  import Control.Exception (catch, SomeException)
  import Data.Typeable
  import qualified Data.List as List
  import qualified Data.Map as Map
  import qualified Data.Set as Set
  
  -- SOLUTION CODE
  -- ============================================
  
  PLACEHOLDER_CODE_BODY
  
  -- TESTING CODE 
  -- ============================================
  validateSolution :: String -> String -> Bool
  validateSolution actual expected = do
      actual == expected
  
  
  driver :: String -> String -> String -> String
  driver str1 str2 expected = do
      if (validateSolution (PLACEHOLDER_FN_NAME str1 str2) expected)
          then "PASSED"
      else "FAILED"
  
  main = do
      printf "TEST-0...%s\n" (driver ("VkfzrPG") ("rKZ") ("44527855") )
  
      printf "TEST-1...%s\n" (driver ("0526110506447") ("903") ("0526110507350") )
  
      printf "TEST-2...%s\n" (driver ("011010010") ("110100000") ("121110010") )
  
      printf "TEST-3...%s\n" (driver ("sPAwZACc ") ("liYMsojPiinOV") ("66153436372942") )
  
      printf "TEST-4...%s\n" (driver ("3") ("611") ("614") )
  
      printf "TEST-5...%s\n" (driver ("0101") ("01110101011") ("01110101112") )
  
      printf "TEST-6...%s\n" (driver ("VTtNu") ("Wsmc") ("469530") )
  
      printf "TEST-7...%s\n" (driver ("2317170") ("898421173423") ("898423490593") )
  
      printf "TEST-8...%s\n" (driver ("111111000010") ("01100001110111") ("01211112110121") )
  
      printf "TEST-9...%s\n" (driver ("Ktt") ("CTbbVX wGBkE") ("2315420138859") )
  
source_py: def sum_two_large_numbers(str1, str2):
      if (len(str1) > len(str2)):
          t = str1
          str1 = str2
          str2 = t
      str = ''
      n1 = len(str1)
      n2 = len(str2)
      str1 = str1[::(- 1)]
      str2 = str2[::(- 1)]
      carry = 0
      for i in range(n1):
          sum = ((ord(str1[i]) - 48) + ((ord(str2[i]) - 48) + carry))
          str += chr(((sum % 10) + 48))
          carry = int((sum / 10))
      for i in range(n1, n2):
          sum = ((ord(str2[i]) - 48) + carry)
          str += chr(((sum % 10) + 48))
          carry = int((sum / 10))
      if carry:
          str += chr((carry + 48))
      str = str[::(- 1)]
      return str
source_cpp: string sum_two_large_numbers(string str1, string str2) {
    if ( str1 . length ( ) > str2 . length ( ) ) swap ( str1, str2 );
    string str = "";
    int n1 = str1 . length ( ), n2 = str2 . length ( );
    reverse ( str1 . begin ( ), str1 . end ( ) );
    reverse ( str2 . begin ( ), str2 . end ( ) );
    int carry = 0;
    for ( int i = 0;
    i < n1;
    i ++ ) {
      int sum = ( ( str1 [ i ] - '0' ) + ( str2 [ i ] - '0' ) + carry );
      str . push_back ( sum % 10 + '0' );
      carry = sum / 10;
    }
    for ( int i = n1;
    i < n2;
    i ++ ) {
      int sum = ( ( str2 [ i ] - '0' ) + carry );
      str . push_back ( sum % 10 + '0' );
      carry = sum / 10;
    }
    if ( carry ) str . push_back ( carry + '0' );
    reverse ( str . begin ( ), str . end ( ) );
    return str;
  }