Veränderung von Listen etc < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 12:48 Mo 27.06.2011 | Autor: | Paulo26 |
Aufgabe | ich habe zum Beispiel (2,3,4,5,6). Hierbei handelt es sich um eine Liste.
Ich möchte nun verschiedene Variationen angezeigt bekommen.
2,3,4,5,5 also letztes -1
2,3,4,4,7 also vorletztes -1, letztes +1
2,3,3,6,6 also drittletztes -1, vorletztes +1
2,2,5,5,6 also viertletztes -1, drittletztes +1
1,4,4,5,6 also fünftletztes -1, viertletztes +1 usw.
Dies soll für alle möglich Eingaben Zahlen gelten. |
Hallo,
ich benötige mal Eure Hilfe.
Bei der obenen genannten Aufgabe komme ich nicht weiter.
Bis jetzt habe ich mir die Zeile jeweils als Matrix angeben lassen und die benötigten Zahlen verändert. Dies ist aber auf Dauer ziemlich umständlich und aufwendig. Könnt Ihr mir sagen obs irgendwie schneller geht bzw automatisch?
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
> ich habe zum Beispiel (2,3,4,5,6). Hierbei handelt es sich
> um eine Liste.
>
> Ich möchte nun verschiedene Variationen angezeigt
> bekommen.
>
> 2,3,4,5,5 also letztes -1
> 2,3,4,4,7 also vorletztes -1, letztes +1
> 2,3,3,6,6 also drittletztes -1, vorletztes +1
> 2,2,5,5,6 also viertletztes -1, drittletztes +1
> 1,4,4,5,6 also fünftletztes -1, viertletztes +1 usw.
>
Hallo Paulo26,
um das Element an der k-ten Stelle um 1 zu vermindern
und das an der (k+1)-ten Stelle um 1 zu erhöhen, habe ich
diesen Befehl entworfen:
change[liste_, k_] := ReplacePart[ReplacePart[liste, liste[ [k] ] - 1,
k], liste[ [k + 1] ] + 1, k + 1]
Ich definiere die Liste:
liste := {2, 3, 4, 5, 6}
und rufe dann den Befehl z.B. für k=3 auf:
change[liste, 3]
Ergebnis: {2, 3, 3, 6, 6}
Schönheitsfehler: für k=5 (letztes Element) gibt es noch
eine Fehlermeldung, weil das 6-te Element von liste gar
nicht existiert. Das müsste man noch mit einem If-Befehl
abfangen ...
LG Al-Chw.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 10:43 Di 05.07.2011 | Autor: | Paulo26 |
Hallo!
vielen Dank! Es hat geklappt.
Ich will aber jetzt den nten Faktor um 2 erniedrigen und den 2*n-ten Faktor um 1 erhöhen.
Also: 1 2 3 4 5 6 7 --> 1 0 3 5 5 6 7 (n=2)
oder 1 2 3 4 5 6 7 --> 1 2 1 4 5 7 7 (n=3)
Ich habe dies mit der Replacefunktion wie oben gemacht.
change[liste_, k_] := ReplacePart[ReplacePart[liste, liste[ [k] ] - 2,
k], liste[ [k + k] ] + 1, k +k]
Als Ergebnis habe ich allerdings {}, sprich nix.
Was mache ich da falsch??
|
|
|
|
|
> Hallo!
> vielen Dank! Es hat geklappt.
> Ich will aber jetzt den nten Faktor um 2 erniedrigen und
> den 2*n-ten Faktor um 1 erhöhen.
>
> Also: 1 2 3 4 5 6 7 --> 1 0 3 5 5 6 7 (n=2)
> oder 1 2 3 4 5 6 7 --> 1 2 1 4 5 7 7 (n=3)
>
> Ich habe dies mit der Replacefunktion wie oben gemacht.
>
> change[liste_, k_] := ReplacePart[ReplacePart[liste, liste[
> [k] ] - 2,
> k], liste[ [k + k] ] + 1, k +k]
>
> Als Ergebnis habe ich allerdings {}, sprich nix.
>
> Was mache ich da falsch??
Das weiß ich nicht.
Bei mir kommt auf diesen Input:
change[liste_, k_] := ReplacePart[ReplacePart[liste, liste[[k]] - 2,k], liste[[k + k]] + 1, k + k]
liste := {1, 2, 3, 4, 5, 6, 7}
change[liste, 3]
der Output:
{1, 2, 1, 4, 5, 7, 7}
wie gewünscht !
LG Al-Chw.
|
|
|
|