Problem Statement
A parallelogram is a quadrilateral with two sets of parallel sides.
You are given three distinct points A(xA,yA), B(xB,yB) and C(xC,yC) in the plane.
Consider all non-degenerate parallelograms such that A, B, and C are three of its vertices. Your method should return the difference between the largest and the smallest possible perimeter of such a parallelogram. If there is no such parallelogram, return -1 instead.
Definition
- Class:
- Parallelograms
- Method:
- getDifference
- Parameters:
- int, int, int, int, int, int
- Returns:
- double
- Method signature:
- double getDifference(int xA, int yA, int xB, int yB, int xC, int yC)
- (be sure your method is public)
Constraints
- xA, yA, xB, yB, xC and yC will be between -5,000 and 5,000, inclusive.
- A, B, and C will be three different points.
Examples
0
0
0
1
1
0
Returns: 0.8284271247461898
For this input there are three possible parallelograms, with the fourth vertex at (1,1), (1,-1), or (-1,1). In the first case, we get a 1 by 1 square with a perimeter of 4. In both the second and third cases, we get a parallelogram with side lengths 1 and sqrt(2), with a perimeter of approximately 4.828427.
0
0
4
0
0
3
Returns: 4.0
In this case the largest possible perimeter is 18 and the smallest possible perimeter is 14.
0
0
1
0
47
0
Returns: -1.0
No parallelogram can have three vertices on the same line. Therefore, the answer for this test case is -1.
1
2
3
4
8
7
Returns: 11.547796284592874
436
235
-4626
-524
436
-2355
Returns: 5585.947241185979
-5000
-5000
5000
5000
5000
-5000
Returns: 8284.271247461904
-5000
-5000
-3403
-2416
-819
1765
Returns: 9830.120446871433
Almost, but not entirely, a straight line.
970
-668
880
-902
910
-824
Returns: -1.0
695
-774
811
-734
840
-724
Returns: -1.0
729
-894
945
-882
549
-904
Returns: -1.0
-39
-388
45
-223
73
-168
Returns: -1.0
664
882
925
987
1186
1092
Returns: -1.0
674
-822
606
-954
538
-1086
Returns: -1.0
-399
312
-237
396
-75
480
Returns: -1.0
597
616
529
452
461
288
Returns: -1.0
332
342
293
159
345
403
Returns: -1.0
-4693
1479
-266
-2950
2041
-2986
Returns: 11545.015116559363
4135
-2541
3105
-4276
-1711
-79
Returns: 8740.926220856029
-433
4456
-560
4345
-4340
3888
Returns: 7558.801566422929
4688
-3938
-2878
-2550
3001
-4997
Returns: 11400.832936896662
1536
595
3564
3396
161
-81
Returns: 6665.975491806637
-4663
-4544
4287
192
-3426
-3873
Returns: 17437.095760718257
4306
658
-2367
-3868
-3919
-4926
Returns: 16126.19444457268
-115
-233
1904
684
2597
3990
Returns: 5602.689038865257
-3205
-716
-4360
762
-179
2015
Returns: 4977.899735458446
1021
-4571
4324
770
1261
-4958
Returns: 12080.310892726471
2929
4059
2749
1935
2300
4669
Returns: 3788.8312567679886
-4509
1164
-2471
4205
-1134
314
Returns: 1267.8134762034315
-2892
2911
-498
-1045
2178
-2919
Returns: 8918.48633492623
-3817
-1548
172
3130
-786
3
Returns: 5754.743356938623
1859
363
-1533
770
-874
724
Returns: 5511.453658441391
3744
-4662
4447
2429
-4502
-3160
Returns: 6850.278125447774
2330
3402
2302
-3323
-1613
-2789
Returns: 6777.516588098733
-2826
-4103
-3684
-4955
4442
794
Returns: 17489.756373460194
-1793
-4628
547
1081
3820
-693
Returns: 6264.151511193035
-3995
-2312
-4935
-3509
-1496
-3596
Returns: 3836.2498561371503
3037
-4721
3948
-3876
4068
3102
Returns: 13296.178983087277
-3095
3865
-1484
-1572
-3149
2545
Returns: 8699.095108655383
-1668
872
-4928
2220
4997
2545
Returns: 12805.229059833353
505
3947
882
-2788
-788
-4094
Returns: 12048.52449312916
755
-4753
-4892
4139
1576
-2913
Returns: 17037.44655043484
4706
3924
-162
2807
-3933
125
Returns: 9619.862864683768
-3018
1318
2402
-1561
-17
-4661
Returns: 5515.513867610214
1954
-1529
-2581
-3687
4429
3127
Returns: 9507.514575830923
3894
2790
4756
2439
-306
4189
Returns: 8850.48113606521
-4950
-238
681
4698
1350
-3262
Returns: 1999.7792946137197
3833
2187
-4476
1133
-2763
1404
Returns: 13282.558975455431
-2732
-4573
-4077
-3282
-4932
-2264
Returns: 3719.718294424114
-221
4981
-2786
-477
-1228
1831
Returns: 6492.058486587863
-2481
3145
3207
-1582
2755
2886
Returns: 5809.992421564202
-1090
-3237
-4184
-2606
2757
1131
Returns: 9450.744800718348
-3649
2704
115
-4421
-1233
340
Returns: 9355.902042593589
-4839
-3460
-1255
2709
-2246
-1123
Returns: 7287.607509565571
-2667
2375
-2358
-2726
3503
-3879
Returns: 7349.889929197234
3061
-2645
3208
-3165
-175
-1620
Returns: 6357.445329020128
4091
29
4167
859
-3089
-4706
Returns: 16621.714379968587
63
2628
1935
-4336
1775
1633
Returns: 10462.150710745791
-4587
64
2989
649
-1519
2478
Returns: 7389.411477537142
-4179
1773
-2435
4715
-4470
-2599
Returns: 8343.50566913093
-2579
-1480
-447
-4484
-940
-558
Returns: 4152.599057854966
90
-4823
1322
-1562
3110
1269
Returns: 6902.233441579703
-1387
4456
-2097
-239
-4990
789
Returns: 4141.296796067416
468
2942
-4207
-4963
-1504
-4761
Returns: 12946.793883018552
4667
3366
3133
-3454
722
-3909
Returns: 11644.458293536238
-3442
-382
-3165
622
-4940
580
Returns: 1477.5668719867363
-3535
714
4269
-670
-3438
-1958
Returns: 10504.025114507553
554
867
398
1007
944
517
Returns: -1.0
495
-110
495
-392
495
-16
Returns: -1.0
-996
66
-750
-228
-873
-81
Returns: -1.0
67
193
337
187
427
185
Returns: -1.0
132
613
282
393
102
657
Returns: -1.0
-501
355
-1005
505
-669
405
Returns: -1.0
84
59
-90
163
-438
371
Returns: -1.0
-687
926
-567
872
-627
899
Returns: -1.0
779
-740
899
-917
499
-327
Returns: -1.0
17
3
17
1562
17
-4212
Returns: -1.0
125
-1254
4256
-1254
-3123
-1254
Returns: -1.0
2
-1
-7
2
-1
0
Returns: -1.0
One more example of three points on the same line.
1
1
2
2
3
3
Returns: -1.0
0
2
0
0
0
1
Returns: -1.0
0
0
-1
-1
1
1
Returns: -1.0
2
5
2
9
2
1
Returns: -1.0
0
0
1
0
-1
1
Returns: 2.4721359549995796
0
5
0
6
0
4
Returns: -1.0
1
0
2
0
0
0
Returns: -1.0