Talk:Law of cosines - triples: Difference between revisions

 
(7 intermediate revisions by 2 users not shown)
Line 129:
 
I guess the next thing to do is compare Houts dict based solution and look at the differences. [[User:Paddy3118|Paddy3118]] ([[User talk:Paddy3118|talk]])
: Some particular 60 degree matches which I see in my output but not (I think) in yours include:
: As far as I can see, by writing your output to file, the first 8 values generated by your uneven 60 degree stream are: (3, 7, 8)
: (8, 15, 13), (16, 30, 26), (24, 45, 39), (32, 60, 52) etc ... up to (4704, 8820, 7644) (all of which, as far as I can see match the pattern ((a^2) + (b^2)) - (a * b) == c ^ 2) [[User:Hout|Hout]] ([[User talk:Hout|talk]]) 20:05, 26 September 2018 (UTC)
:(5, 7, 8)
:: PS I notice that you are braver than me and mutating the referent of the name '''c2'''. Is it possible that an earlier mutation is (in a subset of cases) shadowing a later test ? You have ''c2 -= ab'' and then ''c2 += 2 * ab'' [[User:Hout|Hout]] ([[User talk:Hout|talk]]) 20:18, 26 September 2018 (UTC)
:(5, 19, 21)
 
:(6, 14, 16)
:::Yep, that's the reason for the discrepancy, Hout :)
:(7, 13, 15)
 
:(7, 37, 40)
:::I just ran it through my Go version and there's apparently 588 cases where both (a*a + b*b) and (a*a + b*b -a*b) are perfect squares. So they are being filtered out by the 90° case.
:(9, 21, 24)
 
:(9, 61, 65)
:::As The first two of those look familiar, but do the next six match the A2 + B218394 - AB 588 = C2 pattern17806 that youexplains arePaddy's looking for ?results. --[[User:HoutPureFox|HoutPureFox]] ([[User talk:HoutPureFox|talk]]) 1921:2520, 26 September 2018 (UTC)
:::: Aha ! Well spotted :-) Mutation is a tricky business ... [[User:Hout|Hout]] ([[User talk:Hout|talk]]) 21:43, 26 September 2018 (UTC)
 
 
====I woke in the night...====
 
With an idea that the continue statements might be at fault.<br>
(I am disowning them in my use of English, but it was me).<br>
I commented-out all the continue statements in method1 and method2 as I literally had that lightbulb moment of thinking that in my loops, I didn't allow for one triple to be in more than one of the three groups.
 
Before sleeping I had added Houts case as method3; seen that hehad captured cases that I had not; but was unable to work out why and had gonne to bed with the problem
 
<lang python># Houts code with a slight modification to his `main` function so that it returned `triangles(f60unequal, 10000)`
# ...
#%%
 
method3_t60_uneven_strings = main() # Houts'
method3_t60_uneven = [tuple(eval(triple_list_str))
for triple_list_str in method3_t60_uneven_strings]
method2_t60_uneven = [(a, b, c) for a, b, c in method2_t60 if a != b or b != c]
method1_t60_uneven = [(a, b, c) for a, b, c in method1_t60 if a != b or b != c]
#%%
methods_t60_uneven = [method1_t60_uneven, method2_t60_uneven, method3_t60_uneven]
whos_methods = "Paddys set, Paddys dict, Houts dict".split(", ")
 
print("\n# Stated extra credit answers")
for who, t60u in zip(whos_methods, methods_t60_uneven):
print(f" {who:12s}: {len(t60u)}")
 
print("\n# Filtered (again in some cases) for unequal sides")
for who, t60u in zip(whos_methods, methods_t60_uneven):
t60uf = [(a, b, c) for a, b, c in t60u if a != b or b != c]
print(f" {who:12s}: {len(t60uf)}")
 
print("\n# Filtered, ordered, and duplicates removed: size changes")
for who, t60u in zip(whos_methods, methods_t60_uneven):
t60ufod = set([tuple(sorted([a, b, c]))
for a, b, c in t60u if a != b or b != c])
print(f" {who:12s}: From {len(t60u)} to {len(t60ufod)}")
 
diff13 = sorted(set(method1_t60_uneven) - set(method3_t60_uneven))
diff31 = sorted(set(method3_t60_uneven) - set(method1_t60_uneven))
print(f'\n# I have {len(diff13)} triples that Hout does not have')
print(f'# Hout has {len(diff31)} triples that I do not have')</lang>
 
 
;Original output:
<pre>60 degrees - uneven triangles of maximum side 10000. Total:
18394
 
# Stated extra credit answers
Paddys set : 17806
Paddys dict : 17806
Houts dict : 18394
 
# Filtered (again in some cases) for unequal sides
Paddys set : 17806
Paddys dict : 17806
Houts dict : 18394
 
# Filtered, ordered, and duplicates removed: size changes
Paddys set : From 17806 to 17806
Paddys dict : From 17806 to 17806
Houts dict : From 18394 to 18394
 
# I have 0 triples that Hout does not have
# Hout has 588 triples that I do not have</pre>
 
;Output when those continue statements in method1 and method2 are removed:
<pre># Stated extra credit answers
Paddys set' : 18394
Paddys dict': 18394
Houts dict : 18394
 
# Filtered (again in some cases) for unequal sides
Paddys set' : 18394
Paddys dict': 18394
Houts dict : 18394
 
# Filtered, ordered, and duplicates removed: size changes
Paddys set' : From 18394 to 18394
Paddys dict': From 18394 to 18394
Houts dict : From 18394 to 18394
 
# I have 0 triples that Hout does not have
# Hout has 0 triples that I do not have</pre>
 
'''Yay!!!''' From the discussions of sharper minds above, I found that you had already found the answer, but I thought I would go ahead and finish my public debugging session. <br>
Thanks people :-)<br>
[[User:Paddy3118|Paddy3118]] ([[User talk:Paddy3118|talk]]) 01:18, 27 September 2018 (UTC)
Anonymous user