Python :: Aufgabe #176
3 Lösungen
Ermittlung von Zeilen- und Spaltennummer eines 2D-Array-Feldes
Anfänger - Python
von hollst
- 09.02.2018 um 11:03 Uhr
Die Felder eines "unendlich" großen 2D-Arrays seien nach folgendem "Diagonal-Schema" nummeriert:
1 2 4 7 . . .
3 5 8 . . . .
6 9 . . . . .
10 . . . . . .
. . . . . . usw.
Man schreibe ein Programm, das für eine gegebene Feldnummer N die Zeilen- (ZN) und die Spaltennummer (SN) zurückgibt.
Zeilen- und Spaltennummerierungen beginnen wie üblich mit 0.
Beispiele:
N = 8 -> ZN = 1, SN = 2
N = 31 -> ZN = 2, SN = 5
1 2 4 7 . . .
3 5 8 . . . .
6 9 . . . . .
10 . . . . . .
. . . . . . usw.
Man schreibe ein Programm, das für eine gegebene Feldnummer N die Zeilen- (ZN) und die Spaltennummer (SN) zurückgibt.
Zeilen- und Spaltennummerierungen beginnen wie üblich mit 0.
Beispiele:
N = 8 -> ZN = 1, SN = 2
N = 31 -> ZN = 2, SN = 5
Lösungen:
Python-Code
array, pre_array = [], [] while True: n = input("Feldnummer eingeben: ") try: n = int(n) break except: print("Keine Zahl eingegeben! Bitte nochmal!\n") i, j, k = 1, 1, 0 while True: if i < n: while i < n: pre_array.append(i) i += k + j k += 1 elif i == n: pre_array.append(i) array.append(pre_array) break else: array.append(pre_array) i = array[j-1][0] + j + 1 j += 1 k = 0 pre_array = [] for l in range(len(array)): if n in array[l]: print("ZN =", l, ", SN =", array[l].index(n))
Python-Code
def pos(nr): n = 0 for i in range(1, nr + 1): n = n + i if n >= nr: d = n - nr return [ i - d -1 , d ]
Meine erster Beitrag auf der Seite, also bitte seid bitte gnädig mit meiner Lösung :D
Python-Code
## Autor: Yannik K. ## Variblen festlegen Startwert = 1 Gesucht = int(input("Bitte eine Zahl eingeben: ")) Zeile = 0 Spalte = 0 ## Schleife für die 0-te Spalte ## Ausgabe, wenn in 0-ter Spalte while Startwert <= Gesucht: Spalte = Spalte + 1 Startwert = Startwert + Spalte if Startwert == Gesucht: print("ZN = 0 SN = " + str(Spalte)) break ## Variable festlegen Ausgangspunkt= Startwert-Spalte ## Schleife für die n-te Spalte ## Geht von der 0-ten Spalte aus und verringert pro Durchlauf den Spaltenwert um -1 while Ausgangspunkt != Gesucht: Zeile = Zeile + 1 Ausgangspunkt = Ausgangspunkt + 1 Spalte = Spalte - 1 ## Ausgabe, wenn nicht in 0-ter Spalte if Startwert != Gesucht: print("ZN = " + str(Zeile) + " SN = " + str(Spalte-1))