Pares de cuerdas | TCS Codevita 2020

Una persona le entrega la lista de dígitos al Sr. String, pero el Sr. String solo entiende strings. Dentro de las strings también entiende solo las vocales. El Sr. String necesita tu ayuda para encontrar el número total de pares que suman un cierto dígito D .

Las reglas para calcular el dígito D son las siguientes:

  • Tome todos los dígitos y conviértalos en su representación textual.
  • A continuación, sume el número de vocales, es decir , {a, e, i, o, u} de todas las representaciones textuales. Esta suma es el dígito D.
  • Ahora, una vez que se conoce el dígito D ,  descubra todos los pares de números desordenados en la entrada cuya suma es igual a D.

Declaración del problema: dada una array arr[] que consta de N ( 1 ≤ N ≤ 100 ) enteros, la tarea es convertir cada elemento de la array ( 1 ≤ arr[i] ≤ 100 ) en sus respectivas representaciones textuales e imprimir la representación en minúsculas de el recuento de todos los pares posibles de la array cuya suma es igual al recuento total de vocales presentes en su representación textual. Si el conteo excede 100, imprima “mayor 100” .
Nota: Para el número 100, conviértalo a una representación textual como cien y no como cien .

Ejemplos:

Entrada: arr[] = {1, 2, 3, 4, 5}
Salida: uno
Explicación:
1 -> uno -> o, e (2 vocales)
2 -> dos -> o (1 vocal)
3 -> tres -> e, e (2 vocales)
4 -> cuatro -> o, u (2 vocales)
5 -> cinco – > i, e (2 vocales)
El total de vocales en sus representaciones textuales = {2 + 1 + 2 + 2 + 2} = 9.
Ahora, de la array dada, solo un solo par desordenado {4, 5} suma 9. Por lo tanto, el conteo es 1. Por lo tanto, la salida requerida es » uno «.

Entrada: arr[] = {7, 4, 2, }
Salida: cero
Explicación:
7 -> siete -> e, e (2 vocales)
4 -> cuatro -> o, u (2 vocales)
2 -> dos – > o (1 vocal)
La cuenta total de vocales en su representación textual = {2 + 2 + 1} = 5.
Ahora, de la array dada, no existe ningún par que sume 5. Por lo tanto, la respuesta es » cero «.

Enfoque: siga los pasos a continuación para resolver este problema:

  • Almacene la representación textual de cada número del 0 al 100 en un mapa .
  • Recorra la array y, para cada elemento de la array, convierta cada dígito a su forma textual.
  • Encuentre el número total de vocales presentes en las formas textuales y guárdelo en una variable, digamos D .
  • Ahora, genere todos los pares posibles de la array dada .
  • Cuente todos los pares con suma D .
  • Si el conteo excede 100, “mayor 100” . De lo contrario, imprima su forma textual.

A continuación se muestra la implementación del enfoque anterior:

Python3

# Python3 program for the above approach
  
# Import combinations
from itertools import combinations
  
# Function to check the string pair
def string_pair(n, nums):
    words = {0: 'zero', 1: 'one', 2: 'two', 3: 'three',
             4: 'four', 5: 'five', 6: 'six', 7: 'seven',
             8: 'eight', 9: 'nine', 10: 'ten', 11: 'eleven',
             12: 'twelve', 13: 'thirteen', 14: 'fourteen',
             15: 'fifteen', 16: 'sixteen', 17: 'seventeen',
             18: 'eighteen', 19: 'nineteen', 20: 'twenty',
             21: 'twentyone', 22: 'twentytwo', 23: 'twentythree',
             24: 'twentyfour', 25: 'twentyfive', 26: 'twentysix',
             27: 'twentyseven', 28: 'twentyeight', 29: 'twentynine',
             30: 'thirty', 31: 'thirtyone', 32: 'thirtytwo',
             33: 'thirtythree', 34: 'thirtyfour', 35: 'thirtyfive',
             36: 'thirtysix', 37: 'thirtyseven', 38: 'thirtyeight',
             39: 'thirtynine', 40: 'forty', 41: 'fortyone',
             42: 'fortytwo', 43: 'fortythree', 44: 'fortyfour',
             45: 'fortyfive', 46: 'fortysix', 47: 'fortyseven',
             48: 'fortyeight', 49: 'fortynine', 50: 'fifty',
             51: 'fiftyone', 52: 'fiftytwo', 53: 'fiftythree',
             54: 'fiftyfour', 55: 'fiftyfive', 56: 'fiftysix',
             57: 'fiftyseven', 58: 'fiftyeight', 59: 'fiftynine',
             60: 'sixty', 61: 'sixtyone', 62: 'sixtytwo',
             63: 'sixtythree', 64: 'sixtyfour', 65: 'sixtyfive',
             66: 'sixtysix', 67: 'sixtyseven', 68: 'sixtyeight',
             69: 'sixtynine', 70: 'seventy', 71: 'seventyone',
             72: 'seventytwo', 73: 'seventythree', 74: 'seventyfour',
             75: 'seventyfive', 76: 'seventysix', 77: 'seventyseven',
             78: 'seventyeight', 79: 'seventynine', 80: 'eighty',
             81: 'eightyone', 82: 'eightytwo', 83: 'eightythree',
             84: 'eightyfour', 85: 'eightyfive', 86: 'eightysix',
             87: 'eightyseven', 88: 'eightyeight', 89: 'eightynine',
             90: 'ninety', 91: 'ninetyone', 92: 'ninetytwo',
             93: 'ninetythree', 94: 'ninetyfour', 95: 'ninetyfive',
             96: 'ninetysix', 97: 'ninetyseven', 98: 'ninetyeight',
             99: 'ninetynine', 100: 'hundred'}
  
    # Map the string into list of integers
    nums = list(map(int, nums))
  
    # Temporary lists to store list of count
    ls, ls1 = [], []
    count, c = 0, 0
  
    # Iterating through the numbers
    for i in nums:
  
        # Stores the textual form of i
        s = words[i]
        for a in range(len(s)):
            vo = ['a', 'e', 'i', 'o', 'u']
  
            # If it is vowel
            if s[a] in vo:
  
                # Increment the count
                count += 1
  
        # Append the count
        ls.append(count)
        count = 0
  
    # D = sum(count of vowels)
    d = sum(ls)
    for i in nums:
  
      # To find the numbers less
      # that or equal to d,
      # so as to find the pair sum
        if i <= d:
  
            # Append the numbers
            # whose sum can be d
            ls1.append(i)
  
    # Stores all possible pairs in the
    # form of an object list of tuples
    comb = combinations(ls1, 2)
  
    # Traverse all the pairs
    for i in list(comb):
  
        # If sum is equal to d
        if sum(i) == d:
  
            # Increment count
            c += 1
  
    # If count exceeds 100
    if c <= 100:
        print(words)
  
    # Otherwise
    else:
        print("greater 100")
  
  
# Driver Code
if __name__ == '__main__':
  
    # Given Length of string
    n = 5
  
    # Given array
    arr = [1, 2, 3, 4, 5]
  
    # Function Call
    string_pair(n, arr)
Producción:

one

Tiempo Complejidad: O(N 2 )
Espacio Auxiliar: O(N 2 )

Publicación traducida automáticamente

Artículo escrito por deepapandey364 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *