using System;
using System.Collections.Generic;
namespace Zadanie6
{
public class Punkt
{
public int x, y;
public Punkt()
{
x = 0;
y = 0;
}
public Punkt(int xtmp,int ytmp)
{
x = xtmp;
y = ytmp;
}
public Punkt(Punkt punkt)
{
x = punkt.x;
y = punkt.y;
}
public void przesun(int dx, int dy)
{
x += dx;
y += dy;
}
public String ToString()
{
string napis = "\nX= " + this.x + "\nY= " + this.y;
return napis;
}
}
public class Linia
{
Punkt punkt1;
Punkt punkt2;
public Linia()
{
punkt1 = new Punkt();
punkt2 = new Punkt();
}
public Linia(Punkt point1, Punkt point2)
{
punkt1 = new Punkt(point1.x, point1.y);
punkt2 = new Punkt(point2.x,point2.y);
}
public Linia(Linia linia)
{
this.punkt1 = new Punkt(linia.punkt1.x, linia.punkt1.y);
this.punkt2 = new Punkt(linia.punkt2.x, linia.punkt2.y);
}
public void przesun(int dx, int dy)
{
punkt1.przesun(dx, dy);
punkt2.przesun(dx, dy);
}
public String ToString()
{
string napis = "\npunkt 1: " + punkt1.ToString() + "\npunkt 2: "+ punkt2.ToString();
return napis;
}
}
public class Trojkat
{
Linia linia1;
Linia linia2;
Linia linia3;
public Trojkat(Punkt p1, Punkt p2, Punkt p3)
{
linia1 = new Linia(p1, p2);
linia2 = new Linia(p1, p3);
linia3 = new Linia(p2, p3);
}
public void przesun(int dx, int dy)
{
linia1.przesun(dx, dy);
linia2.przesun(dx, dy);
linia3.przesun(dx, dy);
}
public String ToString()
{
return "\nlinia 1: "+linia1.ToString()+
"\nlinia2: "+linia2.ToString()+
"\nlinia3: "+linia3.ToString()+"\n";
}
}
public class Czworokat
{
Linia linia1;
Linia linia2;
Linia linia3;
Linia linia4;
public Czworokat(Punkt p1, Punkt p2, Punkt p3, Punkt p4)
{
linia1 = new Linia(p1, p2);
linia2 = new Linia(p1, p4);
linia3 = new Linia(p2, p3);
linia4 = new Linia(p3, p4);
}
public void przesun(int dx, int dy)
{
linia1.przesun(dx, dy);
linia2.przesun(dx, dy);
linia3.przesun(dx, dy);
linia4.przesun(dx, dy);
}
public String ToString()
{
return "\nlinia1: "+linia1.ToString()+
"\nlinia2: " + linia2.ToString()+
"\nlinia3: " + linia3.ToString()+
"\nlinia4: " + linia4.ToString()+"\n";
}
}
public class Obraz
{
List<Trojkat> lista_trojkatow;
List<Czworokat> lista_czworokatow;
public Obraz()
{
lista_trojkatow = new List<Trojkat>();
lista_czworokatow = new List<Czworokat>();
}
public void dodajTrojkat(Punkt p1, Punkt p2, Punkt p3)
{
lista_trojkatow.Add(new Trojkat(p1, p2, p3));
}
public void dodajCzworokat(Punkt p1, Punkt p2, Punkt p3, Punkt p4)
{
lista_czworokatow.Add(new Czworokat(p1, p2, p3, p4));
}
public String ToString()
{
string napis1 = "\nLista trojkatow:\n";
string napis2 = "\nLista czworokatow:\n";
int j = 0;
foreach(Trojkat i in lista_trojkatow)
{
j++;
napis1 += "\nTrojkat "+j+".:\n"+i.ToString();
}
j = 0;
foreach (Czworokat i in lista_czworokatow)
{
j++;
napis2 += "\nCzworokat "+j+".:\n" +i.ToString();
}
return string.Concat(napis1,napis2);
}
}
class Program
{
public static void Main(string[] args)
{
Punkt p1 = new Punkt(0, 0), p2 = new Punkt(1, 1);
Linia l1 = new Linia(p1, p2), l2 = new Linia(p1, p2);
l1.przesun(5, 5);
Console.WriteLine(l1.ToString());
Console.WriteLine(l2.ToString());
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKCm5hbWVzcGFjZSBaYWRhbmllNgp7CiAgICBwdWJsaWMgY2xhc3MgUHVua3QKICAgIHsKICAgICAgICBwdWJsaWMgaW50IHgsIHk7CiAgICAgICAgcHVibGljIFB1bmt0KCkKICAgICAgICB7CiAgICAgICAgICAgIHggPSAwOwogICAgICAgICAgICB5ID0gMDsKICAgICAgICB9CiAgICAgICAgcHVibGljIFB1bmt0KGludCB4dG1wLGludCB5dG1wKQogICAgICAgIHsKICAgICAgICAgICAgeCA9IHh0bXA7CiAgICAgICAgICAgIHkgPSB5dG1wOwogICAgICAgIH0KICAgICAgICBwdWJsaWMgUHVua3QoUHVua3QgcHVua3QpCiAgICAgICAgewogICAgICAgICAgICB4ID0gcHVua3QueDsKICAgICAgICAgICAgeSA9IHB1bmt0Lnk7CiAgICAgICAgfQogICAgICAgIHB1YmxpYyB2b2lkIHByemVzdW4oaW50IGR4LCBpbnQgZHkpCiAgICAgICAgewogICAgICAgICAgICB4ICs9IGR4OwogICAgICAgICAgICB5ICs9IGR5OwogICAgICAgIH0KICAgICAgICBwdWJsaWMgU3RyaW5nIFRvU3RyaW5nKCkKICAgICAgICB7CiAgICAgICAgICAgIHN0cmluZyBuYXBpcyA9ICJcblg9ICIgKyB0aGlzLnggKyAiXG5ZPSAiICsgdGhpcy55OwogICAgICAgICAgICByZXR1cm4gbmFwaXM7CiAgICAgICAgfQogICAgfQogICAgcHVibGljIGNsYXNzIExpbmlhCiAgICB7CiAgICAgICAgUHVua3QgcHVua3QxOwogICAgICAgIFB1bmt0IHB1bmt0MjsKICAgICAgICBwdWJsaWMgTGluaWEoKQogICAgICAgIHsKICAgICAgICAgICAgcHVua3QxID0gbmV3IFB1bmt0KCk7CiAgICAgICAgICAgIHB1bmt0MiA9IG5ldyBQdW5rdCgpOwogICAgICAgIH0KICAgICAgICBwdWJsaWMgTGluaWEoUHVua3QgcG9pbnQxLCBQdW5rdCBwb2ludDIpCiAgICAgICAgewogICAgICAgICAgICBwdW5rdDEgPSBuZXcgUHVua3QocG9pbnQxLngsIHBvaW50MS55KTsKICAgICAgICAgICAgcHVua3QyID0gbmV3IFB1bmt0KHBvaW50Mi54LHBvaW50Mi55KTsKICAgICAgICB9CiAgICAgICAgcHVibGljIExpbmlhKExpbmlhIGxpbmlhKQogICAgICAgIHsKICAgICAgICAgICAgdGhpcy5wdW5rdDEgPSBuZXcgUHVua3QobGluaWEucHVua3QxLngsIGxpbmlhLnB1bmt0MS55KTsKICAgICAgICAgICAgdGhpcy5wdW5rdDIgPSBuZXcgUHVua3QobGluaWEucHVua3QyLngsIGxpbmlhLnB1bmt0Mi55KTsKCiAgICAgICAgfQogICAgICAgIHB1YmxpYyB2b2lkIHByemVzdW4oaW50IGR4LCBpbnQgZHkpCiAgICAgICAgewogICAgICAgICAgICBwdW5rdDEucHJ6ZXN1bihkeCwgZHkpOwogICAgICAgICAgICBwdW5rdDIucHJ6ZXN1bihkeCwgZHkpOwogICAgICAgIH0KICAgICAgICBwdWJsaWMgU3RyaW5nIFRvU3RyaW5nKCkKICAgICAgICB7CiAgICAgICAgICAgIHN0cmluZyBuYXBpcyA9ICJcbnB1bmt0IDE6ICIgKyBwdW5rdDEuVG9TdHJpbmcoKSArICJcbnB1bmt0IDI6ICIrIHB1bmt0Mi5Ub1N0cmluZygpOwogICAgICAgICAgICByZXR1cm4gbmFwaXM7CgogICAgICAgIH0KCiAgICB9CiAgICBwdWJsaWMgY2xhc3MgVHJvamthdAogICAgewogICAgICAgIExpbmlhIGxpbmlhMTsKICAgICAgICBMaW5pYSBsaW5pYTI7CiAgICAgICAgTGluaWEgbGluaWEzOwoKICAgICAgICBwdWJsaWMgVHJvamthdChQdW5rdCBwMSwgUHVua3QgcDIsIFB1bmt0IHAzKQogICAgICAgIHsKICAgICAgICAgICAgbGluaWExID0gbmV3IExpbmlhKHAxLCBwMik7CiAgICAgICAgICAgIGxpbmlhMiA9IG5ldyBMaW5pYShwMSwgcDMpOwogICAgICAgICAgICBsaW5pYTMgPSBuZXcgTGluaWEocDIsIHAzKTsKICAgICAgICB9CiAgICAgICAgcHVibGljIHZvaWQgcHJ6ZXN1bihpbnQgZHgsIGludCBkeSkKICAgICAgICB7CiAgICAgICAgICAgIGxpbmlhMS5wcnplc3VuKGR4LCBkeSk7CiAgICAgICAgICAgIGxpbmlhMi5wcnplc3VuKGR4LCBkeSk7CiAgICAgICAgICAgIGxpbmlhMy5wcnplc3VuKGR4LCBkeSk7CiAgICAgICAgfQogICAgICAgIHB1YmxpYyBTdHJpbmcgVG9TdHJpbmcoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICJcbmxpbmlhIDE6ICIrbGluaWExLlRvU3RyaW5nKCkrCiAgICAgICAgICAgICJcbmxpbmlhMjogIitsaW5pYTIuVG9TdHJpbmcoKSsKICAgICAgICAgICAgIlxubGluaWEzOiAiK2xpbmlhMy5Ub1N0cmluZygpKyJcbiI7CiAgICAgICAgfQogICAgfQogICAgcHVibGljIGNsYXNzIEN6d29yb2thdAogICAgewogICAgICAgIExpbmlhIGxpbmlhMTsKICAgICAgICBMaW5pYSBsaW5pYTI7CiAgICAgICAgTGluaWEgbGluaWEzOwogICAgICAgIExpbmlhIGxpbmlhNDsKICAgICAgICBwdWJsaWMgQ3p3b3Jva2F0KFB1bmt0IHAxLCBQdW5rdCBwMiwgUHVua3QgcDMsIFB1bmt0IHA0KQogICAgICAgIHsKICAgICAgICAgICAgbGluaWExID0gbmV3IExpbmlhKHAxLCBwMik7CiAgICAgICAgICAgIGxpbmlhMiA9IG5ldyBMaW5pYShwMSwgcDQpOwogICAgICAgICAgICBsaW5pYTMgPSBuZXcgTGluaWEocDIsIHAzKTsKICAgICAgICAgICAgbGluaWE0ID0gbmV3IExpbmlhKHAzLCBwNCk7CiAgICAgICAgfQogICAgICAgIHB1YmxpYyB2b2lkIHByemVzdW4oaW50IGR4LCBpbnQgZHkpCiAgICAgICAgewogICAgICAgICAgICBsaW5pYTEucHJ6ZXN1bihkeCwgZHkpOwogICAgICAgICAgICBsaW5pYTIucHJ6ZXN1bihkeCwgZHkpOwogICAgICAgICAgICBsaW5pYTMucHJ6ZXN1bihkeCwgZHkpOwogICAgICAgICAgICBsaW5pYTQucHJ6ZXN1bihkeCwgZHkpOwogICAgICAgIH0KICAgICAgICBwdWJsaWMgU3RyaW5nIFRvU3RyaW5nKCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAiXG5saW5pYTE6ICIrbGluaWExLlRvU3RyaW5nKCkrCiAgICAgICAgICAgICJcbmxpbmlhMjogIiArIGxpbmlhMi5Ub1N0cmluZygpKwogICAgICAgICAgICAiXG5saW5pYTM6ICIgKyBsaW5pYTMuVG9TdHJpbmcoKSsKICAgICAgICAgICAgIlxubGluaWE0OiAiICsgbGluaWE0LlRvU3RyaW5nKCkrIlxuIjsKICAgICAgICB9CiAgICB9CiAgICBwdWJsaWMgY2xhc3MgT2JyYXoKICAgIHsKICAgICAgICBMaXN0PFRyb2prYXQ+IGxpc3RhX3Ryb2prYXRvdzsKICAgICAgICBMaXN0PEN6d29yb2thdD4gbGlzdGFfY3p3b3Jva2F0b3c7CiAgICAgICAgcHVibGljIE9icmF6KCkKICAgICAgICB7CiAgICAgICAgICAgIGxpc3RhX3Ryb2prYXRvdyA9IG5ldyBMaXN0PFRyb2prYXQ+KCk7CiAgICAgICAgICAgIGxpc3RhX2N6d29yb2thdG93ID0gbmV3IExpc3Q8Q3p3b3Jva2F0PigpOwogICAgICAgIH0KICAgICAgICBwdWJsaWMgdm9pZCBkb2RhalRyb2prYXQoUHVua3QgcDEsIFB1bmt0IHAyLCBQdW5rdCBwMykKICAgICAgICB7CiAgICAgICAgICAgIGxpc3RhX3Ryb2prYXRvdy5BZGQobmV3IFRyb2prYXQocDEsIHAyLCBwMykpOwogICAgICAgIH0KICAgICAgICBwdWJsaWMgdm9pZCBkb2RhakN6d29yb2thdChQdW5rdCBwMSwgUHVua3QgcDIsIFB1bmt0IHAzLCBQdW5rdCBwNCkKICAgICAgICB7CiAgICAgICAgICAgIGxpc3RhX2N6d29yb2thdG93LkFkZChuZXcgQ3p3b3Jva2F0KHAxLCBwMiwgcDMsIHA0KSk7CiAgICAgICAgfQogICAgICAgIHB1YmxpYyBTdHJpbmcgVG9TdHJpbmcoKQogICAgICAgIHsKICAgICAgICAgICAgc3RyaW5nIG5hcGlzMSA9ICJcbkxpc3RhIHRyb2prYXRvdzpcbiI7CiAgICAgICAgICAgIHN0cmluZyBuYXBpczIgPSAiXG5MaXN0YSBjendvcm9rYXRvdzpcbiI7CiAgICAgICAgICAgIGludCBqID0gMDsKICAgICAgICAgICAgZm9yZWFjaChUcm9qa2F0IGkgaW4gbGlzdGFfdHJvamthdG93KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBqKys7CiAgICAgICAgICAgICAgICBuYXBpczEgKz0gIlxuVHJvamthdCAiK2orIi46XG4iK2kuVG9TdHJpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBqID0gMDsKICAgICAgICAgICAgZm9yZWFjaCAoQ3p3b3Jva2F0IGkgaW4gbGlzdGFfY3p3b3Jva2F0b3cpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgICAgIG5hcGlzMiArPSAiXG5Dendvcm9rYXQgIitqKyIuOlxuIiAraS5Ub1N0cmluZygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzdHJpbmcuQ29uY2F0KG5hcGlzMSxuYXBpczIpOwogICAgICAgIH0KICAgIH0KICAgIGNsYXNzIFByb2dyYW0KICAgIHsKICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhcmdzKQogICAgICAgIHsKICAgICAgICAgICAgUHVua3QgcDEgPSBuZXcgUHVua3QoMCwgMCksIHAyID0gbmV3IFB1bmt0KDEsIDEpOwogICAgICAgICAgICBMaW5pYSBsMSA9IG5ldyBMaW5pYShwMSwgcDIpLCBsMiA9IG5ldyBMaW5pYShwMSwgcDIpOwogICAgICAgICAgICBsMS5wcnplc3VuKDUsIDUpOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShsMS5Ub1N0cmluZygpKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUobDIuVG9TdHJpbmcoKSk7CiAgICAgICAgfQogICAgfQp9Cg==