Minimice las operaciones aritméticas que se realizarán en elementos adyacentes de un Array dado para reducirlo

Dada una array arr[] , la tarea es realizar operaciones aritméticas (+, -, *, /) en arr[] en secuencia. Estas operaciones se realizan en elementos adyacentes hasta que el tamaño de la array se reduce a 1 . Finalmente, devuelve el valor reducido y el número de operaciones necesarias para el mismo. Consulte los ejemplos para mayor claridad. 

Ejemplos:

Entrada: arr = {12, 10, 2, 9, 1, 2}
Salida: Valor reducido: 10
Operaciones realizadas:
+ : 2
– : 1
* : 1
/ : 1

Explicación:
Paso 1: realice la suma del elemento consecutivo [22, 12, 11, 10, 3]
Paso 2: realice la resta del elemento consecutivo [10, 1, 1, 7]
Paso 3: realice la multiplicación del elemento consecutivo [10, 1 , 7]
Paso 4: realice la división del elemento consecutivo [10, 0]
Paso 5: Realice nuevamente la suma del elemento consecutivo [10]
 

Entrada: arr = {5, -2, -1, 2, 4, 5}
Salida: Valor reducido: -3
Operaciones realizadas:
+ : 2
– : 2
* : 1
/ : 1

Enfoque: dado que en este problema tenemos que realizar operaciones basadas en la secuencia, como primero la suma, luego la resta, luego la multiplicación y luego la división, podemos usar Cambiar caso para resolver este problema.

Inicialice un diccionario donde el operador (+, -, *, /) como clave y 0 como valor. Usando las funciones add, sub, mul y div, se realizará la operación en la array. Tiene como función Operación que mapea el arreglo con funciones basadas en el valor de c%4 y devuelve el arreglo reducido. donde c realiza un seguimiento del número de operaciones realizadas. El diccionario realiza un seguimiento de cada operación realizada hasta que el tamaño de la array se reduce a 1 .
Siga los pasos a continuación para resolver el problema dado.

Paso 1: Asigne c a 1 y declare el diccionario d .
 

  • Paso 2: si c% 4 == 1 , realice la operación de suma en elementos consecutivos utilizando la función Operación.
     
  • Paso 3: si c% 4 == 2 , realice la operación de resta en el elemento consecutivo usando la función Operación.
     
  • Paso 4: si c% 4 == 3 , realice la operación de multiplicación en elementos consecutivos usando la función Operación.
     
  • Paso 5: si c% 4 == 0 , realice la operación de división en elementos consecutivos utilizando la función Operación.
     
  • Paso 6: el paso 2 se repetirá hasta que el tamaño de la array sea igual a 1 .
     
  • Paso 7: d se utiliza para realizar un seguimiento de cada operación realizada.

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

Python3

# Function for adding consecutive element
def add(a):
    return [a[i]+a[i + 1] for i in range(len(a)-1)]
 
# Function for subtracting consecutive element
def sub(a):
    return [a[i] - a[i + 1] for i in range(len(a)- 1)]
 
# Function for multiplication of consecutive element
def mul(a):
    return [a[i] * a[i + 1] for i in range(len(a) - 1)]
 
# Function for division of consecutive element
def div(a):
    return [0 if a[i] == 0 or a[i + 1] == 0 \
            else a[i]//a[i + 1] \
                 for i in range(len(a) - 1)]
 
# Operation function which maps array
# to corresponding function
# based on value of i.
def Operation(i, A):
    switcher = {
        1: add,
        2: sub,
        3: mul,
        0: div
    }
    func = switcher.get(i, lambda: 'Invalid')
    return func(A)
  
# Driver Code
c = 1
 
# dictionary value which keep track
# of no of operation of each operator.
d = {'+':0, '-':0, '*':0, '/':0 }
 
arr =[5, -2, -1, 2, 1, 4, 5]
 
# loop till size of array become equal to 1.
while len(arr)!= 1:
    x = c % 4
    # After each operation value
    # in dictionary value is incremented
    # also reduced array
    # is assigned to original array.
    if x == 1:
        d['+'] += 1
        arr = Operation(x, arr)
    elif x == 2:
        d['-'] += 1
        arr = Operation(x, arr)
    elif x == 3:
        d['*'] += 1
        arr = Operation(x, arr)
    elif x == 0:
        d['/'] += 1
        arr = Operation(x, arr)
    c += 1
 
# Printing reduced value
print("Reduced value:", *arr)
 
 
# Printing value of each operation
# performed to reduce size of array to 1.
print("Operations Performed:")
for i in d.keys():
    print(str(i) + " : " +str(d[i]))
Producción

Reduced value: -3
Operations Performed:
+ : 2
- : 2
* : 1
/ : 1

Complejidad temporal: O(N)
Espacio auxiliar: O(N)

Publicación traducida automáticamente

Artículo escrito por harshdeepmahajan88 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 *