Python :: Aufgabe #324

4 Lösungen Lösungen öffentlich

Produkt der Werte eines Arrays

Fortgeschrittener - Python von JKooP - 21.02.2021 um 12:15 Uhr
Gegeben ist ein Array bestehend aus Integer-Werten. Aus diesen Werten soll das Produkt errechnet werden,
aber immer ausgenommen der Zahl, welche sich an der Stelle des Durchlaufs befindet.
Ist die letzte Stelle erreicht, geht’s von vorne weiter (Umlauf).

Beispiel:
Array = {1, 2, 3, 4}

Lösung:
Array = {24, 12, 8, 6}

Erklärung:
1. Durchlauf: 2 * 3 * 4 = 24 (ohne 1)
2. Durchlauf: 3* 4 * 1 = 12 (ohne 2)
3. Durchlauf: 4 * 1 * 2 = 8 (ohne 3)
4. Durchlauf: 1 * 2 * 3 = 6 (ohne 4)

Schreibe eine Funktion/Methode, mit der ein Array aus Integer-Werten aufgenommen werden kann und die Produkte als Integer-Array zurückgegen werden.

1. Aufgabe (leicht):
Verschachteln mehrerer Schleifen

2. Aufgabe (schwieriger):
das Ganze mit nur einem Schleifendurchlauf realisieren

Statt Arrays können, je nach Programmiersprache und Vorliebe, natürlich auch Listen oder Vektoren verwendet werden.

Viel Spaß

Lösungen:

vote_ok
von felixTheC (1200 Punkte) - 04.03.2021 um 11:57 Uhr
Quellcode ausblenden Python-Code
import operator
from functools import reduce
from itertools import combinations
from typing import List
from typing import Tuple

from strongtyping.strong_typing import match_typing


@match_typing
def product_array(array: List[int]) -> Tuple[int]:
    return tuple([reduce(operator.mul, elem)
                  for elem in combinations(array, len(array) - 1)
                  ][::-1])

vote_ok
von eisheiliger (3750 Punkte) - 05.03.2021 um 19:24 Uhr
Quellcode ausblenden Python-Code

"""
#324: Produkt der Werte eines Arrays
Gegeben ist ein Array bestehend aus Integer-Werten. Aus diesen Werten soll das Produkt errechnet
werden, aber immer ausgenommen der Zahl, welche sich an der Stelle des Durchlaufs befindet.
Ist die letzte Stelle erreicht, geht’s von vorne weiter (Umlauf).
"""
import operator
import functools


def pruef(arr):
    for _ in arr:
        pause = arr[0]
        arr.pop(0)
        print(functools.reduce(operator.mul, arr, 1))
        arr.append(pause)


def main():
    pruef([1, 2, 3, 4])


if __name__ == '__main__':
    main()


vote_ok
von satn1241 (3090 Punkte) - 06.03.2021 um 20:19 Uhr
Quellcode ausblenden Python-Code
liste = [1, 2, 3, 4]
produkte = []

for e in liste:
    produkt = 1
    liste.append(liste.pop(0))
    for i in range(0, len(liste) - 1):
        produkt *= liste[i]
    produkte.append(produkt)

print(produkte)
vote_ok
von AlexGroeg (2010 Punkte) - 17.03.2021 um 16:57 Uhr
Quellcode ausblenden Python-Code

a = [1,2,3,4]

b = []
for i in range(len(a)):              
    b.append(a[1]*a[2]*a[3])
    a.append(a.pop(0))

print(b)