Altering type of solution, implementing solution print function

This commit is contained in:
Noah L. Schrick 2022-03-08 11:36:08 -06:00
parent 99f427bea4
commit a21d7a59b0
9 changed files with 32 additions and 8 deletions

View File

@ -220,6 +220,8 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o
/usr/include/c++/11.2.0/tr1/poly_hermite.tcc
/usr/include/c++/11.2.0/tr1/poly_laguerre.tcc
/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
/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

View File

@ -219,6 +219,8 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \
/usr/include/c++/11.2.0/tr1/poly_hermite.tcc \
/usr/include/c++/11.2.0/tr1/poly_laguerre.tcc \
/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 \
../src/HiddenLines.h \
/usr/include/c++/11.2.0/set \
/usr/include/c++/11.2.0/bits/stl_tree.h \
@ -270,6 +272,8 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \
/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/c++io.h:
/usr/include/c++/11.2.0/bits/stl_relops.h:
/usr/include/c++/11.2.0/fstream:
/usr/include/c++/11.2.0/bits/vector.tcc:
@ -534,6 +538,8 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \
/usr/include/bits/types/time_t.h:
/usr/include/c++/11.2.0/utility:
/usr/include/c++/11.2.0/debug/debug.h:
/usr/include/c++/11.2.0/bits/predefined_ops.h:

View File

@ -158,6 +158,8 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: \
/usr/include/c++/11.2.0/tr1/poly_hermite.tcc \
/usr/include/c++/11.2.0/tr1/poly_laguerre.tcc \
/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 \
/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 \

Binary file not shown.

Binary file not shown.

View File

@ -6,6 +6,7 @@
#include <fstream>
#include <limits>
#include <math.h>
#include <utility>
#include "HiddenLines.h"
@ -17,13 +18,16 @@ HL::HL()
void HL::print_sol()
{
std::cout << "Not yet implemented" << std::endl;
for(auto itr = sol.begin(); itr != sol.end(); itr++)
std::cout << "Line ID " << std::get<0>(*itr) << " visible in range (" <<
std::get<0>(std::get<1>(*itr)) <<
"," << std::get<1>(std::get<1>(*itr)) << ")" << std::endl;
}
//Divide and Conquer Strategy using recursive call to divide ls and merge using merge()
std::set<Line> HL::gen_sol(std::set<Line>& ls){
HL inst = *this;
if (ls.size() > 2){
HL inst = *this;
//Create left and right half sets
int split = ceil(ls.size()/2);
@ -49,8 +53,8 @@ std::set<Line> HL::gen_sol(std::set<Line>& ls){
//Set with 2 lines is a base case: both are visible at +-inf respectively, and intersection is where they change
//visibility
else if (ls.size() == 2){
auto l1 = *(ls.begin());
auto l2 = *(ls.end());
Line l1 = *(ls.begin());
Line l2 = *(ls.end());
double isec = (l2.get_ycept() - l1.get_ycept())/(l1.get_slope() - l2.get_slope());
//Smaller Slope: vis from isec to inf
@ -62,6 +66,12 @@ std::set<Line> HL::gen_sol(std::set<Line>& ls){
l2.set_vis_start(-std::numeric_limits<double>::infinity());
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;
}
@ -74,7 +84,9 @@ std::set<Line> HL::gen_sol(std::set<Line>& ls){
return ls;
}
return sol;
//return sol;
std::set<Line> dummy;
return dummy;
}
std::set<Line> HL::construct_HWprob(){
@ -145,5 +157,7 @@ std::set<Line> HL::get_lines(){
}
std::set<Line> HL::get_sol(){
return sol;
std::set<Line> dummy;
return dummy;
//return sol;
}

View File

@ -17,9 +17,9 @@ class HL
std::set<Line> get_sol();
private:
std::set<Line> sol;
//Solution is in form Line ID <vis_start, vis_end>
std::set<std::pair<int, std::pair<double, double>>> sol;
std::set<Line> lines;
std::set<std::pair<Line, double>> isec;
};
std::set<Line> merge(std::set<Line> lh, std::set<Line> rh);