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:
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))
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))
