DMUG-Archiv 2006

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

RE: Antwort: Re: Indizierung von Tables mit Null beginnen.

hmmm, 

hatte mich auch etwas gewundert. zweck der übung war das hooked irgendwie zu kapseln.
hoffe das package ist soweit konsistent.

l.g. robert

BeginPackage["MyPart`"];
Part::usage="Part originated form 0 instead of 1";
Begin["`Private`"];
  hooked=True;
  Unprotect[Part];
  Part[a_List, seq__] /; hooked := 
    Block[{hooked = False}, Part[a, Sequence @@ ( # + 1 & /@ {seq})]];
  Protect[Part];
End[];
EndPackage[];

{1,2,3}[[1]]
Out[11]=
2

MyPart`Private`hooked=False;
{1,2,3}[[1]]
Out[13]=
1

-----Original Message-----
From: Jens-Peer Kuska [mailto:kuska@XXXXXXX.de] 
Sent: Tuesday, March 14, 2006 5:22 PM
To: Nowak Robert; demug@XXXXXXX.ch
Subject: Re: Antwort: Re: Indizierung von Tables mit Null beginnen.


Hallo,

und was soll diese "behübschung" bringen ??
Als erstes ist das vom Module[] erzeugte
hooked$xx nach dem Verlassen des Modules nicht
mehr definiert und True ist es schon garnicht.

Man kann das ganze auch nicht mehr auschalten, 
weil
man nur unter Verrenkungen an hooked$xx heran 
kommt.

Das ganze funktioniert auch nur deshalb, weil 
Condition[]
alles was nicht False ist als True ansieht.

Das trägt also nicht besonders zur 
Verständlichkeit bei.

Gruß
  Jens


----- Original Message ----- 
From: "Nowak Robert" <robert.nowak@XXXXXXX.at>
To: "Jens-Peer Kuska" 
<kuska@XXXXXXX.de>; 
<demug@XXXXXXX.ch>
Sent: Tuesday, March 14, 2006 3:58 PM
Subject: RE: Antwort: Re: Indizierung von Tables 
mit Null beginnen.


| man lernt nie aus,
|
| habe mir erlaubt das noch zu behübschen.
|
| l.g. robert
|
| Module[{hooked = True},
|  Unprotect[Part];
|  Part[a_List, seq__] /; hooked := Block[{hooked
= False}, Part[a, Sequence @@ ( # + 1 & /@ 
{seq})]];
|  Protect[Part];
| ]
|
| -----Original Message-----
| From: Jens-Peer Kuska
[mailto:kuska@XXXXXXX.de]
| Sent: Tuesday, March 14, 2006 11:45 AM
| To: Nowak Robert; demug@XXXXXXX.ch
| Subject: Re: Antwort: Re: Indizierung von Tables
mit Null beginnen.
|
|
| Hallo,
|
| ja und ?? was ist mit
| Unprotect[Part]
| $hooked = False;
| Verbatim[Part][a_, seq___] /; Not[ $hooked] :=
|  Block[{$hooked = True}, Part[a, Sequence @@ (
(#
| + 1) & /@ {seq})]]
| Protect[Part]
|
| Gruß
|
|  Jens
|
| ----- Original Message -----
| From: "Nowak Robert" <robert.nowak@XXXXXXX.at>
| To: <demug@XXXXXXX.ch>
| Sent: Tuesday, March 14, 2006 10:42 AM
| Subject: FW: Antwort: Re: Indizierung von Tables
| mit Null beginnen.
|
|
||
|| wünschenswert wäre es doch (nicht nur bei Part
| sondern generell bei allen system funktionen)
bei
| umdefinition von Part[] innerhalb der
| neudefinition auf das originale Part[] zugreifen
| zu können.
||
|| in etwa so auf die art:
||
|| NewPart[x_List, n_Integer] := Part[x, n + 1];
|| Unprotect[Part];
|| Part /: Part[x_List, n_Integer] := NewPart[x,
| n];
|| Protect[Part];
||
|| funktioniert aber so nicht weil in der
| neudefinition von Part[] aufs eben auch auf das
| neue Part[] zugegriffen wird und somit eine
nicht
| sinnvolle  rekursion erzeugt wird.
||
|| l.g. robert
||
|| -----Original Message-----
|| From: Jens-Peer Kuska
| [mailto:kuska@XXXXXXX.de]
|| Sent: Monday, March 13, 2006 1:50 PM
|| To: Nowak Robert; Udo und Susanne Krause
|| Cc: Richard Gollreiter; demug@XXXXXXX.ch
|| Subject: Re: Antwort: Re: Indizierung von
Tables
| mit Null beginnen.
||
||
|| Hallo,
||
|| also die Bemerkung "fast keine Zeit verbraucht"
| is
|| ja wohl
|| ein Witz, man probiere
||
|| SetAttributes[myPart, HoldFirst]
|| myPart[a_, i_Integer] := a[[i + 1]]
|| SetAttributes[udoPart, HoldFirst]
|| udoPart[a_, i_Integer] := First[RotateLeft[a,
| i]]
|| Timing[
|| Table[
||  k = Random[Integer, {0, Length[test] - 1}];
||  myPart[test, k], {100000}
|| ]
|| ] // First
|| im Gegensatz zu
|| Timing[
|| Table[
||  k = Random[Integer, {0, Length[test] - 1}];
||  udoPart[test, k], {100000}
|| ]
|| ] // First
||
|| das Erste dauer bei mir 1.266 Sekunden, die
|| Version mit
|| RotateLeft[] is nach unglaublichen 144.14
| Sekunden
|| fertig.
||
|| Gruß
||  Jens
||
|| ----- Original Message -----
|| From: "Nowak Robert" <robert.nowak@XXXXXXX.at>
|| To: "Udo und Susanne Krause"
|| <su.krause@XXXXXXX.ch>; "Jens-Peer Kuska" 
|| <kuska@XXXXXXX.de>
|| Cc: "Richard Gollreiter" <RGollreiter@XXXXXXX.de>; <demug@XXXXXXX.ch>
|| Sent: Monday, March 13, 2006 12:05 PM
|| Subject: RE: Antwort: Re: Indizierung von 
Tables
|| mit Null beginnen.
||
||
||| hallo udo,
|||
||| > Part /: Part[x_List, n_Integer] :=
|| First[RotateLeft[x, n]]
|||
||| wie funktioniert deine lösung eigentlich,
wieso
|| wird für das rotieren scheinbar keine zeit
|| verbraucht ?
||| wird das array nur ein einziges mal rotiert
und
|| bei den individuellen zugriffen nicht mehr wenn
|| ja, wodurch ?
|||
||| l.g. robert
|||
||
| 





Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html