#include <iostream>
#include <list>
#include <sstream>
#include <string>
using std::stringstream;
#include <cmath>
using namespace std;
template<unsigned short n>
class Point {
public:
list <float> coords = {0.0};
Point <n>() = default;
Point <n>(list<float> coords){
this-> coords=coords;
}
string toString(){
string sone;
ostringstream ss;
sone.append("(");
auto it3= coords.begin();
while ((it3) != coords.end()){
ss << (*it3);
sone.append(ss.str());
ss.str("");
++it3;
}
sone.append(")");
return sone;
}
float distanceFrom (Point <n> v){
float s=0;
list<float> coords;
auto it1= coords.begin();
auto it2= v.coords.begin();
while ((it1) != coords.end()){
s+=(*it1 -*it2)*(*it1-*it2);
it1++;
it2++;
}
return sqrt(s);
}
friend std::ostream& operator <<(std::ostream& out, const Point<n>& v)
{
out << "("<<"Test"<<")";
return out;
}
};
int main() {
// your code goes here
Point<2> v3 { list<float>{2.0,3.0} };
cout << v3.toString () << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+CnVzaW5nIHN0ZDo6c3RyaW5nc3RyZWFtOwojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKdGVtcGxhdGU8dW5zaWduZWQgc2hvcnQgbj4KY2xhc3MgUG9pbnQgewoKcHVibGljOgogICAgbGlzdCA8ZmxvYXQ+IGNvb3JkcyA9IHswLjB9OwogICAgUG9pbnQgPG4+KCkgPSBkZWZhdWx0OyAKICAgIFBvaW50IDxuPihsaXN0PGZsb2F0PiBjb29yZHMpewoKICAgICAgICB0aGlzLT4gY29vcmRzPWNvb3JkczsKICAgICAgICB9CgogICAgICAgIHN0cmluZyB0b1N0cmluZygpewogICAgICAgICAgICBzdHJpbmcgc29uZTsKICAgICAgICAgICAgb3N0cmluZ3N0cmVhbSBzczsKICAgICAgICAgICAgc29uZS5hcHBlbmQoIigiKTsKICAgICAgICAgICAgYXV0byBpdDM9IGNvb3Jkcy5iZWdpbigpOwogICAgICAgICAgICB3aGlsZSAoKGl0MykgIT0gY29vcmRzLmVuZCgpKXsgIAogICAgICAgICAgICAgICAgc3MgPDwgICgqaXQzKTsKICAgICAgICAgICAgICAgIHNvbmUuYXBwZW5kKHNzLnN0cigpKTsKICAgICAgICAgICAgICAgIHNzLnN0cigiIik7CiAgICAgICAgICAgICAgICArK2l0MzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgc29uZS5hcHBlbmQoIikiKTsKICAgICAgICAgICAgcmV0dXJuIHNvbmU7CiAgICAgICAgfQoKICAgICAgICBmbG9hdCBkaXN0YW5jZUZyb20gKFBvaW50IDxuPiB2KXsKICAgICAgICAgICAgZmxvYXQgcz0wOwogICAgICAgICAgICBsaXN0PGZsb2F0PiBjb29yZHM7CiAgICAgICAgICAgIGF1dG8gaXQxPSBjb29yZHMuYmVnaW4oKTsKICAgICAgICAgICAgYXV0byBpdDI9IHYuY29vcmRzLmJlZ2luKCk7CiAgICAgICAgICAgIHdoaWxlICgoaXQxKSAhPSBjb29yZHMuZW5kKCkpeyAgCiAgICAgICAgICAgICAgICBzKz0oKml0MSAtKml0MikqKCppdDEtKml0Mik7CiAgICAgICAgICAgICAgICBpdDErKzsKICAgICAgICAgICAgICAgIGl0MisrOwogICAgICAgICAgICB9CiAgICAgICAgcmV0dXJuIHNxcnQocyk7CiAgICAgICAgfQogICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3IgPDwoc3RkOjpvc3RyZWFtJiBvdXQsIGNvbnN0IFBvaW50PG4+JiB2KQogICAgewogICAgICAgIG91dCA8PCAiKCI8PCJUZXN0Ijw8IikiOwogICAgICAgIHJldHVybiBvdXQ7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCSBQb2ludDwyPiB2MyB7IGxpc3Q8ZmxvYXQ+ezIuMCwzLjB9IH07CgkgY291dCA8PCB2My50b1N0cmluZyAoKSA8PCBlbmRsOyAKCXJldHVybiAwOwp9