Hi Jason - thanks a lot - I have attached a text file which is just a
cleaned-up version of my code, with some explanations at the top for
functions whose details are not relevant to the question. Apologies -
you'll see it's a "neat mess", so to speak ....
Kind regards
Gary
On Sat, Mar 30, 2013 at 10:45 AM, Jason Grout
<[email protected]>wrote:
> On 3/30/13 5:08 AM, Gary McConnell wrote:
>
>> Hi Jason
>>
>> fair question - I was trying to avoid including all the boring details
>> of my code! In the simplest case I have a search routine which looks for
>> M sets of d vectors inside a vector space of dimension N over a finite
>> field, whose dot products satisfy a bunch of polynomial equations. My
>> problem is that I need to compare each new vector with all of the
>> antecedent vectors, so that the number of "equations" varies with d, M
>> and N (in several "recursive dimensions"). The only way I have been able
>> to do it so far is to construct separate loops by hand for each of d,N,M
>> and for each "new" vector within them ... ie every time I alter any one
>> of d, N or M, I need a new program!!
>>
>> So I had hoped that your code would have allowed me to "telescope" the
>> search and comparison loops as functions of d,M,N in a neat way; only
>> obviously I've misunderstood what it does.
>>
>
> I think the confusion may be in what we mean by "variable". My code in
> this thread is for easily constructing Sage symbolic variables, and is just
> a convenient way to do something like var('x1,x2,x3') (x[1] is something
> like var('x1')). It sounds like you are referring to python variables,
> which are a different concept.
>
> Still, if you can give a short example illustrating exactly what you
> trying to do, I think we can still probably point you in the right
> direction (for example, give us a working example of the nested for loops
> that you currently have that you'd like to generalize). If I followed you
> correctly, you should be able to do what you want fairly easily.
>
>
> Thanks,
>
> Jason
>
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "sage-support" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/**
> topic/sage-support/**GFJdjFvKCvo/unsubscribe?hl=en<https://groups.google.com/d/topic/sage-support/GFJdjFvKCvo/unsubscribe?hl=en>
> .
> To unsubscribe from this group and all its topics, send an email to
> sage-support+unsubscribe@**googlegroups.com<sage-support%[email protected]>
> .
> To post to this group, send email to [email protected].
> Visit this group at
> http://groups.google.com/**group/sage-support?hl=en<http://groups.google.com/group/sage-support?hl=en>
> .
> For more options, visit
> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>
> .
>
>
>
--
You received this message because you are subscribed to the Google Groups
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-support?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
# ip(v,w) = dot product of vectors
# xRy(v,w) = is x related to y by the conditions I need?
# XRY(V,W) = are all v in V and w in W pairwise related by xRy? (where V and W
are lists of vectors)
N1 = list(#of all of the vectors i am interested in#); n1 = len(N1);
for vv1 in range(0,n1):
for vv2 in range(0,n1):
if ip(N1[vv1],N1[vv2])==0:
for vv3 in range(0,n1):
if ip(N1[vv1],N1[vv3])==0 and ip(N1[vv2],N1[vv3])==0:
basez1 = list([N1[vv1],N1[vv2],N1[vv3]]);
print basez1; print vv1,vv2,vv3; print
'basez1...................\n';
for ww1 in range(0,n1):
if xRy(N1[ww1],N1[vv1]) and xRy(N1[ww1],N1[vv2]) and
xRy(N1[ww1],N1[vv3]):
for ww2 in range(0,n1):
if ip(N1[ww1],N1[ww2])==0:
if xRy(N1[ww2],N1[vv1]) and
xRy(N1[ww2],N1[vv2]) and xRy(N1[ww2],N1[vv3]):
for ww3 in range(0,n1):
if ip(N1[ww1],N1[ww3])==0 and
ip(N1[ww2],N1[ww3])==0:
if xRy(N1[ww3],N1[vv1]) and
xRy(N1[ww3],N1[vv2]) and xRy(N1[ww3],N1[vv3]):
testbasez2 =
list([N1[ww1],N1[ww2],N1[ww3]]);
if XRY(basez1,testbasez2):
basez2 = testbasez2;
print basez2; print
ww1,ww2,ww3; print 'basez2-------------------\n';
for xx1 in range(0,n1):
if
xRy(N1[xx1],N1[vv1]) and xRy(N1[xx1],N1[vv2]) and xRy(N1[xx1],N1[vv3]) and
xRy(N1[xx1],N1[ww1]) and xRy(N1[xx1],N1[ww2]) and xRy(N1[xx1],N1[ww3]):
for xx2 in
range(0,n1):
if
ip(N1[xx1],N1[xx2])==0:
if
xRy(N1[xx2],N1[vv1]) and xRy(N1[xx2],N1[vv2]) and xRy(N1[xx2],N1[vv3]) and
xRy(N1[xx2],N1[ww1]) and xRy(N1[xx2],N1[ww2]) and xRy(N1[xx2],N1[ww3]):
for xx3 in range(0,n1):
if ip(N1[xx1],N1[xx3])==0 and ip(N1[xx2],N1[xx3])==0:
if xRy(N1[xx3],N1[vv1]) and xRy(N1[xx3],N1[vv2]) and
xRy(N1[xx3],N1[vv3]) and xRy(N1[xx3],N1[ww1]) and xRy(N1[xx3],N1[ww2]) and
xRy(N1[xx3],N1[ww3]):
testbasez3 = list([N1[xx1],N1[xx2],N1[xx3]]);
if XRY(basez1,testbasez3) and XRY(basez2,testbasez3):
basez3 = testbasez3;
print basez3; print xx1,xx2,xx3; print
'basez3=====================\n';