Finishing recursion calls, adding line holder map
This commit is contained in:
parent
1ea74d9021
commit
6335e796fa
@ -222,13 +222,35 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o
|
||||
/usr/include/c++/11.2.0/tr1/riemann_zeta.tcc
|
||||
/usr/include/c++/11.2.0/utility
|
||||
/usr/include/c++/11.2.0/bits/stl_relops.h
|
||||
/usr/include/c++/11.2.0/algorithm
|
||||
/usr/include/c++/11.2.0/bits/stl_algo.h
|
||||
/usr/include/c++/11.2.0/bits/algorithmfwd.h
|
||||
/usr/include/c++/11.2.0/bits/stl_heap.h
|
||||
/usr/include/c++/11.2.0/bits/stl_tempbuf.h
|
||||
/usr/include/c++/11.2.0/bits/uniform_int_dist.h
|
||||
/usr/include/c++/11.2.0/pstl/glue_algorithm_defs.h
|
||||
/usr/include/c++/11.2.0/functional
|
||||
/usr/include/c++/11.2.0/tuple
|
||||
/usr/include/c++/11.2.0/array
|
||||
/usr/include/c++/11.2.0/bits/uses_allocator.h
|
||||
/usr/include/c++/11.2.0/bits/invoke.h
|
||||
/usr/include/c++/11.2.0/bits/refwrap.h
|
||||
/usr/include/c++/11.2.0/bits/std_function.h
|
||||
/usr/include/c++/11.2.0/unordered_map
|
||||
/usr/include/c++/11.2.0/ext/aligned_buffer.h
|
||||
/usr/include/c++/11.2.0/bits/hashtable.h
|
||||
/usr/include/c++/11.2.0/bits/hashtable_policy.h
|
||||
/usr/include/c++/11.2.0/bits/node_handle.h
|
||||
/usr/include/c++/11.2.0/bits/unordered_map.h
|
||||
/usr/include/c++/11.2.0/bits/erase_if.h
|
||||
/usr/include/c++/11.2.0/pstl/execution_defs.h
|
||||
/home/noah/Documents/School/CS-7353_Analysis-of-Algorithms/HW/HW4/src/HiddenLines.h
|
||||
/usr/include/c++/11.2.0/set
|
||||
/usr/include/c++/11.2.0/bits/stl_tree.h
|
||||
/usr/include/c++/11.2.0/ext/aligned_buffer.h
|
||||
/usr/include/c++/11.2.0/bits/node_handle.h
|
||||
/usr/include/c++/11.2.0/bits/stl_set.h
|
||||
/usr/include/c++/11.2.0/bits/stl_multiset.h
|
||||
/usr/include/c++/11.2.0/bits/erase_if.h
|
||||
/usr/include/c++/11.2.0/map
|
||||
/usr/include/c++/11.2.0/bits/stl_map.h
|
||||
/usr/include/c++/11.2.0/bits/stl_multimap.h
|
||||
/home/noah/Documents/School/CS-7353_Analysis-of-Algorithms/HW/HW4/src/Line.h
|
||||
|
||||
|
||||
@ -221,19 +221,57 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \
|
||||
/usr/include/c++/11.2.0/tr1/riemann_zeta.tcc \
|
||||
/usr/include/c++/11.2.0/utility \
|
||||
/usr/include/c++/11.2.0/bits/stl_relops.h \
|
||||
/usr/include/c++/11.2.0/algorithm \
|
||||
/usr/include/c++/11.2.0/bits/stl_algo.h \
|
||||
/usr/include/c++/11.2.0/bits/algorithmfwd.h \
|
||||
/usr/include/c++/11.2.0/bits/stl_heap.h \
|
||||
/usr/include/c++/11.2.0/bits/stl_tempbuf.h \
|
||||
/usr/include/c++/11.2.0/bits/uniform_int_dist.h \
|
||||
/usr/include/c++/11.2.0/pstl/glue_algorithm_defs.h \
|
||||
/usr/include/c++/11.2.0/functional \
|
||||
/usr/include/c++/11.2.0/tuple \
|
||||
/usr/include/c++/11.2.0/array \
|
||||
/usr/include/c++/11.2.0/bits/uses_allocator.h \
|
||||
/usr/include/c++/11.2.0/bits/invoke.h \
|
||||
/usr/include/c++/11.2.0/bits/refwrap.h \
|
||||
/usr/include/c++/11.2.0/bits/std_function.h \
|
||||
/usr/include/c++/11.2.0/unordered_map \
|
||||
/usr/include/c++/11.2.0/ext/aligned_buffer.h \
|
||||
/usr/include/c++/11.2.0/bits/hashtable.h \
|
||||
/usr/include/c++/11.2.0/bits/hashtable_policy.h \
|
||||
/usr/include/c++/11.2.0/bits/node_handle.h \
|
||||
/usr/include/c++/11.2.0/bits/unordered_map.h \
|
||||
/usr/include/c++/11.2.0/bits/erase_if.h \
|
||||
/usr/include/c++/11.2.0/pstl/execution_defs.h \
|
||||
../src/HiddenLines.h \
|
||||
/usr/include/c++/11.2.0/set \
|
||||
/usr/include/c++/11.2.0/bits/stl_tree.h \
|
||||
/usr/include/c++/11.2.0/ext/aligned_buffer.h \
|
||||
/usr/include/c++/11.2.0/bits/node_handle.h \
|
||||
/usr/include/c++/11.2.0/bits/stl_set.h \
|
||||
/usr/include/c++/11.2.0/bits/stl_multiset.h \
|
||||
/usr/include/c++/11.2.0/bits/erase_if.h \
|
||||
/usr/include/c++/11.2.0/map \
|
||||
/usr/include/c++/11.2.0/bits/stl_map.h \
|
||||
/usr/include/c++/11.2.0/bits/stl_multimap.h \
|
||||
../src/Line.h
|
||||
|
||||
|
||||
/usr/include/c++/11.2.0/map:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/hashtable_policy.h:
|
||||
|
||||
/usr/include/c++/11.2.0/ext/aligned_buffer.h:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/invoke.h:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/uses_allocator.h:
|
||||
|
||||
/usr/include/c++/11.2.0/tuple:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/uniform_int_dist.h:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/stl_tempbuf.h:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/stl_heap.h:
|
||||
|
||||
/usr/include/c++/11.2.0/tr1/poly_laguerre.tcc:
|
||||
|
||||
/usr/include/c++/11.2.0/tr1/legendre_function.tcc:
|
||||
@ -260,12 +298,16 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \
|
||||
|
||||
/usr/include/bits/fp-fast.h:
|
||||
|
||||
/usr/include/c++/11.2.0/array:
|
||||
|
||||
/usr/include/bits/libm-simd-decl-stubs.h:
|
||||
|
||||
/usr/include/bits/math-vector.h:
|
||||
|
||||
/usr/include/c++/11.2.0/cmath:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/unordered_map.h:
|
||||
|
||||
/usr/include/c++/11.2.0/math.h:
|
||||
|
||||
/usr/include/c++/11.2.0/limits:
|
||||
@ -306,6 +348,8 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \
|
||||
|
||||
/usr/include/c++/11.2.0/bits/basic_ios.h:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/std_function.h:
|
||||
|
||||
/usr/include/c++/11.2.0/streambuf:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/locale_classes.tcc:
|
||||
@ -324,12 +368,18 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \
|
||||
|
||||
/usr/include/errno.h:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/stl_multimap.h:
|
||||
|
||||
/usr/include/c++/11.2.0/cerrno:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/stl_map.h:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/codecvt.h:
|
||||
|
||||
/usr/include/bits/stdio.h:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/algorithmfwd.h:
|
||||
|
||||
/usr/include/bits/types/struct_FILE.h:
|
||||
|
||||
/usr/include/bits/types/__fpos64_t.h:
|
||||
@ -370,6 +420,8 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \
|
||||
|
||||
/usr/include/c++/11.2.0/bits/char_traits.h:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/hashtable.h:
|
||||
|
||||
/usr/include/bits/waitstatus.h:
|
||||
|
||||
/usr/include/bits/timesize.h:
|
||||
@ -476,6 +528,8 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \
|
||||
|
||||
/usr/include/c++/11.2.0/exception:
|
||||
|
||||
/usr/include/c++/11.2.0/pstl/glue_algorithm_defs.h:
|
||||
|
||||
/usr/include/bits/pthread_stack_min-dynamic.h:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/stl_set.h:
|
||||
@ -490,6 +544,8 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \
|
||||
|
||||
/usr/include/c++/11.2.0/bits/stl_multiset.h:
|
||||
|
||||
/usr/include/c++/11.2.0/functional:
|
||||
|
||||
/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/cpu_defines.h:
|
||||
|
||||
/usr/include/bits/byteswap.h:
|
||||
@ -498,6 +554,8 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \
|
||||
|
||||
/usr/include/c++/11.2.0/bits/ios_base.h:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/refwrap.h:
|
||||
|
||||
/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/gthr.h:
|
||||
|
||||
/usr/include/c++/11.2.0/debug/assertions.h:
|
||||
@ -512,6 +570,8 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \
|
||||
|
||||
/usr/include/c++/11.2.0/bits/memoryfwd.h:
|
||||
|
||||
/usr/include/c++/11.2.0/unordered_map:
|
||||
|
||||
/usr/include/bits/flt-eval-method.h:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/basic_ios.tcc:
|
||||
@ -522,6 +582,8 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \
|
||||
|
||||
/usr/include/bits/wchar.h:
|
||||
|
||||
/usr/include/c++/11.2.0/algorithm:
|
||||
|
||||
/usr/include/c++/11.2.0/cwchar:
|
||||
|
||||
/usr/include/bits/types/struct_tm.h:
|
||||
@ -544,6 +606,8 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \
|
||||
|
||||
/usr/include/c++/11.2.0/bits/predefined_ops.h:
|
||||
|
||||
/usr/include/c++/11.2.0/pstl/execution_defs.h:
|
||||
|
||||
/usr/include/c++/11.2.0/type_traits:
|
||||
|
||||
/usr/include/bits/stdint-intn.h:
|
||||
@ -642,6 +706,8 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \
|
||||
|
||||
/usr/include/bits/pthreadtypes.h:
|
||||
|
||||
/usr/include/c++/11.2.0/bits/stl_algo.h:
|
||||
|
||||
/usr/include/c++/11.2.0/clocale:
|
||||
|
||||
/usr/include/bits/thread-shared-types.h:
|
||||
|
||||
Binary file not shown.
@ -160,11 +160,31 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: \
|
||||
/usr/include/c++/11.2.0/tr1/riemann_zeta.tcc \
|
||||
/usr/include/c++/11.2.0/utility \
|
||||
/usr/include/c++/11.2.0/bits/stl_relops.h \
|
||||
/usr/include/c++/11.2.0/algorithm \
|
||||
/usr/include/c++/11.2.0/bits/stl_algo.h \
|
||||
/usr/include/c++/11.2.0/bits/algorithmfwd.h \
|
||||
/usr/include/c++/11.2.0/bits/stl_heap.h \
|
||||
/usr/include/c++/11.2.0/bits/stl_tempbuf.h \
|
||||
/usr/include/c++/11.2.0/bits/uniform_int_dist.h \
|
||||
/usr/include/c++/11.2.0/pstl/glue_algorithm_defs.h \
|
||||
/usr/include/c++/11.2.0/functional /usr/include/c++/11.2.0/tuple \
|
||||
/usr/include/c++/11.2.0/array \
|
||||
/usr/include/c++/11.2.0/bits/uses_allocator.h \
|
||||
/usr/include/c++/11.2.0/bits/invoke.h \
|
||||
/usr/include/c++/11.2.0/bits/refwrap.h \
|
||||
/usr/include/c++/11.2.0/bits/std_function.h \
|
||||
/usr/include/c++/11.2.0/unordered_map \
|
||||
/usr/include/c++/11.2.0/ext/aligned_buffer.h \
|
||||
/usr/include/c++/11.2.0/bits/hashtable.h \
|
||||
/usr/include/c++/11.2.0/bits/hashtable_policy.h \
|
||||
/usr/include/c++/11.2.0/bits/node_handle.h \
|
||||
/usr/include/c++/11.2.0/bits/unordered_map.h \
|
||||
/usr/include/c++/11.2.0/bits/erase_if.h \
|
||||
/usr/include/c++/11.2.0/pstl/execution_defs.h \
|
||||
/home/noah/Documents/School/CS-7353_Analysis-of-Algorithms/HW/HW4/src/HiddenLines.h \
|
||||
/usr/include/c++/11.2.0/set /usr/include/c++/11.2.0/bits/stl_tree.h \
|
||||
/usr/include/c++/11.2.0/ext/aligned_buffer.h \
|
||||
/usr/include/c++/11.2.0/bits/node_handle.h \
|
||||
/usr/include/c++/11.2.0/bits/stl_set.h \
|
||||
/usr/include/c++/11.2.0/bits/stl_multiset.h \
|
||||
/usr/include/c++/11.2.0/bits/erase_if.h \
|
||||
/usr/include/c++/11.2.0/bits/stl_multiset.h /usr/include/c++/11.2.0/map \
|
||||
/usr/include/c++/11.2.0/bits/stl_map.h \
|
||||
/usr/include/c++/11.2.0/bits/stl_multimap.h \
|
||||
/home/noah/Documents/School/CS-7353_Analysis-of-Algorithms/HW/HW4/src/Line.h
|
||||
|
||||
@ -5,4 +5,17 @@ CMakeFiles/linelib.dir/src/Line.cpp.o
|
||||
/home/noah/Documents/School/CS-7353_Analysis-of-Algorithms/HW/HW4/src/Line.cpp
|
||||
/usr/include/stdc-predef.h
|
||||
/home/noah/Documents/School/CS-7353_Analysis-of-Algorithms/HW/HW4/src/Line.h
|
||||
/usr/include/c++/11.2.0/limits
|
||||
/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/c++config.h
|
||||
/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/os_defines.h
|
||||
/usr/include/features.h
|
||||
/usr/include/features-time64.h
|
||||
/usr/include/bits/wordsize.h
|
||||
/usr/include/bits/timesize.h
|
||||
/usr/include/sys/cdefs.h
|
||||
/usr/include/bits/long-double.h
|
||||
/usr/include/gnu/stubs.h
|
||||
/usr/include/gnu/stubs-64.h
|
||||
/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/cpu_defines.h
|
||||
/usr/include/c++/11.2.0/pstl/pstl_config.h
|
||||
|
||||
|
||||
@ -3,11 +3,50 @@
|
||||
|
||||
CMakeFiles/linelib.dir/src/Line.cpp.o: ../src/Line.cpp \
|
||||
/usr/include/stdc-predef.h \
|
||||
../src/Line.h
|
||||
../src/Line.h \
|
||||
/usr/include/c++/11.2.0/limits \
|
||||
/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/c++config.h \
|
||||
/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/os_defines.h \
|
||||
/usr/include/features.h \
|
||||
/usr/include/features-time64.h \
|
||||
/usr/include/bits/wordsize.h \
|
||||
/usr/include/bits/timesize.h \
|
||||
/usr/include/sys/cdefs.h \
|
||||
/usr/include/bits/long-double.h \
|
||||
/usr/include/gnu/stubs.h \
|
||||
/usr/include/gnu/stubs-64.h \
|
||||
/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/cpu_defines.h \
|
||||
/usr/include/c++/11.2.0/pstl/pstl_config.h
|
||||
|
||||
|
||||
../src/Line.h:
|
||||
/usr/include/c++/11.2.0/pstl/pstl_config.h:
|
||||
|
||||
/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/cpu_defines.h:
|
||||
|
||||
/usr/include/c++/11.2.0/limits:
|
||||
|
||||
/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/os_defines.h:
|
||||
|
||||
/usr/include/stdc-predef.h:
|
||||
|
||||
/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/c++config.h:
|
||||
|
||||
/usr/include/gnu/stubs-64.h:
|
||||
|
||||
/usr/include/bits/timesize.h:
|
||||
|
||||
../src/Line.h:
|
||||
|
||||
/usr/include/features.h:
|
||||
|
||||
/usr/include/features-time64.h:
|
||||
|
||||
../src/Line.cpp:
|
||||
|
||||
/usr/include/bits/wordsize.h:
|
||||
|
||||
/usr/include/sys/cdefs.h:
|
||||
|
||||
/usr/include/bits/long-double.h:
|
||||
|
||||
/usr/include/gnu/stubs.h:
|
||||
|
||||
Binary file not shown.
@ -1,4 +1,13 @@
|
||||
CMakeFiles/linelib.dir/src/Line.cpp.o: \
|
||||
/home/noah/Documents/School/CS-7353_Analysis-of-Algorithms/HW/HW4/src/Line.cpp \
|
||||
/usr/include/stdc-predef.h \
|
||||
/home/noah/Documents/School/CS-7353_Analysis-of-Algorithms/HW/HW4/src/Line.h
|
||||
/home/noah/Documents/School/CS-7353_Analysis-of-Algorithms/HW/HW4/src/Line.h \
|
||||
/usr/include/c++/11.2.0/limits \
|
||||
/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/c++config.h \
|
||||
/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/os_defines.h \
|
||||
/usr/include/features.h /usr/include/features-time64.h \
|
||||
/usr/include/bits/wordsize.h /usr/include/bits/timesize.h \
|
||||
/usr/include/sys/cdefs.h /usr/include/bits/long-double.h \
|
||||
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
|
||||
/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/cpu_defines.h \
|
||||
/usr/include/c++/11.2.0/pstl/pstl_config.h
|
||||
|
||||
Binary file not shown.
@ -136,5 +136,11 @@ CMakeFiles/main.dir/src/main.cpp.o: \
|
||||
/usr/include/c++/11.2.0/bits/node_handle.h \
|
||||
/usr/include/c++/11.2.0/bits/stl_set.h \
|
||||
/usr/include/c++/11.2.0/bits/stl_multiset.h \
|
||||
/usr/include/c++/11.2.0/bits/erase_if.h \
|
||||
/usr/include/c++/11.2.0/bits/erase_if.h /usr/include/c++/11.2.0/map \
|
||||
/usr/include/c++/11.2.0/bits/stl_map.h /usr/include/c++/11.2.0/tuple \
|
||||
/usr/include/c++/11.2.0/utility \
|
||||
/usr/include/c++/11.2.0/bits/stl_relops.h /usr/include/c++/11.2.0/array \
|
||||
/usr/include/c++/11.2.0/bits/uses_allocator.h \
|
||||
/usr/include/c++/11.2.0/bits/invoke.h \
|
||||
/usr/include/c++/11.2.0/bits/stl_multimap.h \
|
||||
/home/noah/Documents/School/CS-7353_Analysis-of-Algorithms/HW/HW4/src/Line.h
|
||||
|
||||
BIN
build/libHLlib.a
BIN
build/libHLlib.a
Binary file not shown.
Binary file not shown.
BIN
build/main
BIN
build/main
Binary file not shown.
@ -7,6 +7,7 @@
|
||||
#include <limits>
|
||||
#include <math.h>
|
||||
#include <utility>
|
||||
#include <algorithm>
|
||||
|
||||
#include "HiddenLines.h"
|
||||
|
||||
@ -29,7 +30,6 @@ void HL::print_sol()
|
||||
std::set<Line> HL::gen_sol(const std::set<Line>& ls){
|
||||
HL inst = *this;
|
||||
if (ls.size() > 2){
|
||||
|
||||
//Create left and right half sets
|
||||
int split = ceil(ls.size()/2);
|
||||
std::set<Line> lh;
|
||||
@ -48,7 +48,35 @@ std::set<Line> HL::gen_sol(const std::set<Line>& ls){
|
||||
}
|
||||
|
||||
//Recursive call
|
||||
return merge(inst.gen_sol(lh), inst.gen_sol(rh));
|
||||
auto tmp_sol = merge(inst.gen_sol(lh), inst.gen_sol(rh));
|
||||
|
||||
for (auto itr = tmp_sol.begin(); itr != tmp_sol.end(); itr++){
|
||||
Line l1 = *itr;
|
||||
sol.insert(std::make_pair(l1.get_id(), std::make_pair(l1.get_vis_start(), l1.get_vis_end())));
|
||||
}
|
||||
|
||||
std::set<std::pair<double, double>> piecewise;
|
||||
//Cleanup Solution
|
||||
for(auto itr = sol.begin(); itr != sol.end();){
|
||||
auto start_range = std::get<0>(std::get<1>(*itr));
|
||||
auto stop_range = std::get<1>(std::get<1>(*itr));
|
||||
|
||||
auto it = std::find_if(piecewise.begin(), piecewise.end(),
|
||||
[start_range](const std::pair<double, double>& p ){ return p.first == start_range; });
|
||||
|
||||
if (it != piecewise.end()){
|
||||
//st.erase(it);
|
||||
}
|
||||
|
||||
if (start_range == stop_range){
|
||||
sol.erase(itr);
|
||||
}
|
||||
else{
|
||||
itr++;
|
||||
}
|
||||
}
|
||||
|
||||
return tmp_sol;
|
||||
}
|
||||
|
||||
//Set with 2 lines is a base case: both are visible at +-inf respectively, and intersection is where they change
|
||||
@ -60,34 +88,28 @@ std::set<Line> HL::gen_sol(const std::set<Line>& ls){
|
||||
|
||||
//Smaller Slope: vis from isec to inf
|
||||
l1.set_vis_start(isec);
|
||||
l1.set_vis_end(std::numeric_limits<double>::infinity());
|
||||
|
||||
l1.set_vis_end(std::numeric_limits<double>::max());
|
||||
|
||||
//Greater Slope: vis from -inf to isec
|
||||
l2.set_vis_start(-std::numeric_limits<double>::infinity());
|
||||
l2.set_vis_start(-std::numeric_limits<double>::max());
|
||||
l2.set_vis_end(isec);
|
||||
|
||||
//Insert partial solutions
|
||||
sol.insert(std::make_pair(l1.get_id(), std::make_pair(l1.get_vis_start(), l1.get_vis_end())));
|
||||
sol.insert(std::make_pair(l2.get_id(), std::make_pair(l2.get_vis_start(), l2.get_vis_end())));
|
||||
|
||||
inst.print_sol();
|
||||
|
||||
return ls;
|
||||
}
|
||||
|
||||
//Set with 1 line: vis at +-inf
|
||||
else{
|
||||
auto l1 = *(ls.begin());
|
||||
l1.set_vis_start(-std::numeric_limits<double>::infinity());
|
||||
l1.set_vis_end(std::numeric_limits<double>::infinity());
|
||||
|
||||
l1.set_vis_start(-std::numeric_limits<double>::max());
|
||||
l1.set_vis_end(std::numeric_limits<double>::max());
|
||||
|
||||
return ls;
|
||||
}
|
||||
|
||||
//return sol;
|
||||
//std::set<Line> dummy;
|
||||
//return dummy;
|
||||
}
|
||||
|
||||
std::set<Line> HL::construct_HWprob(){
|
||||
@ -127,15 +149,18 @@ std::set<Line> HL::construct_HWprob(){
|
||||
Line newline = Line(slope, ycept);
|
||||
newline.set_id();
|
||||
lines.insert(newline);
|
||||
line_holder.insert(std::make_pair(newline.get_id(),newline));
|
||||
}
|
||||
|
||||
|
||||
std::cout << "Sorted Lines by slope:" << std::endl;
|
||||
std::cout << "---------------Sorted Lines by slope:---------------" << std::endl;
|
||||
for(Line line : lines)
|
||||
{
|
||||
std::cout << "Line " << line.get_id() << " has slope " << line.get_slope()
|
||||
<< " and a y-intercept of " << line.get_ycept() << std::endl;
|
||||
}
|
||||
std::cout << "-----------------------------------------------------" << std::endl;
|
||||
|
||||
|
||||
return lines;
|
||||
}
|
||||
@ -150,15 +175,44 @@ std::set<Line> merge(std::set<Line> lh, std::set<Line> rh){
|
||||
Line l1 = *litr;
|
||||
Line l2 = *ritr;
|
||||
|
||||
//3 Cases: lh slope is less, slopes are equal, and lh slope is greater
|
||||
//Case 1:
|
||||
if (l1.get_slope() < l2.get_slope()){
|
||||
double isec = (l2.get_ycept() - l1.get_ycept())/(l1.get_slope() - l2.get_slope());
|
||||
l1.set_vis_end(isec);
|
||||
l2.set_vis_start(isec);
|
||||
merged.insert(l1);
|
||||
merged.insert(l2);
|
||||
litr++;
|
||||
continue;
|
||||
}
|
||||
|
||||
else if (l1.get_slope() == l2.get_slope()){
|
||||
if (l1.get_ycept() > l2.get_ycept()){
|
||||
l2.set_vis_start(0);
|
||||
l2.set_vis_end(0);
|
||||
merged.insert(l1);
|
||||
}
|
||||
else{
|
||||
|
||||
l1.set_vis_start(0);
|
||||
l2.set_vis_end(0);
|
||||
merged.insert(l2);
|
||||
}
|
||||
|
||||
litr++;
|
||||
ritr++;
|
||||
}
|
||||
|
||||
else{
|
||||
double isec = (l2.get_ycept() - l1.get_ycept())/(l1.get_slope() - l2.get_slope());
|
||||
l1.set_vis_start(isec);
|
||||
l2.set_vis_end(isec);
|
||||
merged.insert(l1);
|
||||
merged.insert(l2);
|
||||
ritr++;
|
||||
}
|
||||
}
|
||||
|
||||
return merged;
|
||||
}
|
||||
|
||||
std::set<Line> HL::get_lines() const{
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
//Hidden Lines work
|
||||
|
||||
#include <set>
|
||||
#include <map>
|
||||
|
||||
#include "Line.h"
|
||||
|
||||
@ -16,6 +17,8 @@ class HL
|
||||
std::set<Line> get_lines() const;
|
||||
std::set<std::pair<int, std::pair<double, double>>> get_sol() const;
|
||||
|
||||
std::map<int, Line> line_holder;
|
||||
|
||||
private:
|
||||
//Solution is in form (Line ID, (vis_start, vis_end))
|
||||
std::set<std::pair<int, std::pair<double, double>>> sol;
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
//Line Class
|
||||
|
||||
#include "Line.h"
|
||||
#include <limits>
|
||||
|
||||
|
||||
int Line::current_id = 0;
|
||||
|
||||
@ -9,6 +11,8 @@ Line::Line(double x, double y)
|
||||
set_slope(x);
|
||||
set_ycept(y);
|
||||
id = 0;
|
||||
set_vis_start(-std::numeric_limits<double>::max());
|
||||
set_vis_end(std::numeric_limits<double>::max());
|
||||
}
|
||||
|
||||
void Line::set_slope(double &x)
|
||||
|
||||
@ -9,10 +9,11 @@
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
std::cout << "Constructing Problem..." << std::endl;
|
||||
std::cout << "Constructing Problem...\n" << std::endl;
|
||||
HL inst = HL();
|
||||
std::cout << std::endl;
|
||||
|
||||
std::cout << "Generating Solution." << std::endl;
|
||||
std::cout << "Generating Solution.\n" << std::endl;
|
||||
inst.gen_sol(inst.get_lines());
|
||||
|
||||
std::cout << "Solution is: " << std::endl;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user