Skip to content
Snippets Groups Projects
Commit d48edcd3 authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Notizen und Beispiele 7.12.2023

parent fd71d402
No related branches found
No related tags found
No related merge requests found
Showing with 1028 additions and 35 deletions
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
int is_sorted (char **name)
{
for (int i = 1; name[i]; i++)
if (compare (name, i - 1, i) > 0)
return 0;
return 1;
}
void mix (char **name)
{
int n = 0;
while (name[n])
n++;
for (int i = 0; i < n; i++)
{
int j = rand () % (n - i);
char *temp = name[i];
name[i] = name[j];
name[j] = temp;
}
}
void sort (char **name)
{
while (!is_sorted (name))
mix (name);
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
int is_sorted (char **name)
{
for (int i = 1; name[i]; i++)
if (compare (name, i - 1, i) > 0)
return 0;
return 1;
}
void mix (char **name)
{
int n = 0;
while (name[n])
n++;
for (int i = 0; i < n; i++)
{
int j = rand () % (n - i);
char *temp = name[i];
name[i] = name[j];
name[j] = temp;
}
}
void sort (char **name)
{
while (!is_sorted (name))
mix (name);
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
for (int i = 1; name[i]; i++)
if (compare (name, i - 1, i) > 0)
{
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0)
{
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted--;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int done = 0;
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0 && !done)
{
done = 1;
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
done = 0;
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted--;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int done = 0;
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0 && !done)
{
done = 1;
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
done = 0;
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted--;
}
}
int main (void)
{
char *name[] = { "Anna", "Berta", "Box", "Dieter", "Fritz", "Hans", "Heinrich", "Hugo",
"Lisa", "Maria", "Otto", "Peter", "Siegfried", "Thomas", "Ulrich",
"Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int done = 0;
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0 && !done)
{
done = 1;
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
done = 0;
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted--;
}
}
int main (void)
{
char *name[] = { "Zacharias", "Ulrich", "Thomas", "Siegfried", "Peter", "Otto", "Maria",
"Lisa", "Hugo", "Heinrich", "Hans", "Fritz", "Dieter", "Box", "Berta",
"Anna", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0)
{
int new_sorted = 0;
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
new_sorted = i;
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted = new_sorted;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <error.h>
#define DISKS 32
int n[3], tower[3][DISKS];
void display (void)
{
printf ("\n");
for (int i = 0; i < 3; i++)
{
printf ("tower %d:", i);
for (int j = 0; j < n[i]; j++)
printf (" %d", tower[i][j]);
printf ("\n");
}
}
void move (int from, int to, int disks)
{
if (disks == 1)
{
if (n[from] <= 0)
error (1, 0, "trying to move disk from empty tower");
if (n[to] > 0 && tower[to][n[to] - 1] < tower[from][n[from] - 1])
error (1, 0, "trying to move larger disk on smaller one");
tower[to][n[to]] = tower[from][n[from] - 1];
n[to]++;
n[from]--;
static int counter = 1;
if (counter++ >= 100000000)
{
display ();
counter = 1;
}
}
else
{
int help = 0 + 1 + 2 - from - to;
move (from, help, disks - 1);
move (from, to, 1);
move (help, to, disks - 1);
}
}
int main (void)
{
n[0] = DISKS;
for (int i = 0; i < DISKS; i++)
tower[0][i] = DISKS - i;
n[1] = 0;
n[2] = 0;
display ();
move (0, 2, DISKS);
display ();
return 0;
}
No preview for this file type
......@@ -248,41 +248,41 @@
}
\end{lstlisting}
\end{onlyenv}
% \begin{onlyenv}<6->
% \vspace{-5.0cm}
% \hspace*{7.4cm}\begin{minipage}[t]{5cm}
% 32 Scheiben:
% \begin{lstlisting}[gobble=10,style=terminal]
% $ ¡time ./hanoi-9b¿
% ...
% real 0m30,672s
% user 0m30,662s
% sys 0m0,008s
% \end{lstlisting}
% \pause[7]
% \begin{itemize}
% \arrowitem
% etwas über 1 Minute\\
% für 64 Scheiben
% \end{itemize}
% \pause
% \vspace*{-0.5cm}
% \begin{picture}(0,0)
% \color{red}
% \put(0,0){\makebox(0,0)[bl]{\tikz[line width=1pt]{\draw(0,0)--(4,0.8);}}}
% \put(0,0.8){\makebox(0,0)[tl]{\tikz[line width=1pt]{\draw(0,0)--(4,-0.8);}}}
% \end{picture}
%
% Für jede zusätzliche Scheibe\\verdoppelt sich die Rechenzeit!
% % 30.672 * 2^32 / 3600 / 24 / 365.25 = 4174.43775518138261464750
% \begin{itemize}
% \arrowitem
% $\frac{30,672\,\text{s}\,\cdot\,2^{32}}{3600\,\cdot\,24\,\cdot\,365,25} \approx 4174$
% Jahre\\[\smallskipamount]
% für 64 Scheiben
% \end{itemize}
% \end{minipage}
% \end{onlyenv}
\begin{onlyenv}<6->
\vspace{-5.0cm}
\hspace*{7.4cm}\begin{minipage}[t]{5cm}
32 Scheiben:
\begin{lstlisting}[gobble=10,style=terminal]
$ ¡time ./hanoi-9b¿
...
real 0m30,672s
user 0m30,662s
sys 0m0,008s
\end{lstlisting}
\pause[7]
\begin{itemize}
\arrowitem
etwas über 1 Minute\\
für 64 Scheiben
\end{itemize}
\pause
\vspace*{-0.5cm}
\begin{picture}(0,0)
\color{red}
\put(0,0){\makebox(0,0)[bl]{\tikz[line width=1pt]{\draw(0,0)--(4,0.8);}}}
\put(0,0.8){\makebox(0,0)[tl]{\tikz[line width=1pt]{\draw(0,0)--(4,-0.8);}}}
\end{picture}
Für jede zusätzliche Scheibe\\verdoppelt sich die Rechenzeit!
% 30.672 * 2^32 / 3600 / 24 / 365.25 = 4174.43775518138261464750
\begin{itemize}
\arrowitem
$\frac{30,672\,\text{s}\,\cdot\,2^{32}}{3600\,\cdot\,24\,\cdot\,365,25} \approx 4174$
Jahre\\[\smallskipamount]
für 64 Scheiben
\end{itemize}
\end{minipage}
\end{onlyenv}
\end{onlyenv}
\end{frame}
......
x ^ 9 = x * x * x * x * x * x * x * x * x # 8 Multiplikationen
= ((x^2)^2)^2 * x # 4 Multiplikationen
`----v----'
x^8
9 = 1001 binär
Bits von rechts nach links:
x x 1 --> damit multiplizieren
^2 x^2 0 --> damit nicht multiplizieren
^2 x^4 0 --> damit nicht multiplizieren
^2 x^8 1 --> damit multiplizieren
--> O(log n) statt O(n)
"Michael", "Laura",
"Elias", "Julia",
"Luca", "Anna",
"Liam", "Emma",
"Alexander", "Lena",
"Noah", "Vanessa",
"Jonas", "Lea",
"Marcel", "Mila",
"Daniel", "Lisa",
"David", "Lina",
"Milan", "Sarah",
"Julian", "Alina",
"Linus", "Emilia",
"Thomas", "Nina",
"Samuel", "Elena",
"Levin", "Lara",
"Levi", "Melanie",
"Jan", "Hannah",
"Lukas", "Sandra",
"Tim", "Leonie",
"Patrick", "Sophie",
"Marvin", "Mia",
"Andreas", "Amelie",
"Leon", "Selina",
"Tobias", "Luisa",
"Simon", "Maria",
"Valentin", "Jana",
"Robin", "Johanna",
"Paul", "Marie",
"Markus", "Milena",
"Benjamin", "Melina",
"Stefan", "Michelle",
"Felix", "Emily",
"Florian", "Renesmee",
"Fabian", "Aylin",
"Emil", "Jessica",
"Aaron", "Franziska",
"Manuel", "Jasmin",
"Christian", "Fiona",
"Dominik", "Sina",
"Joshua", "Jennifer",
"Moritz", "Claudia",
"Sebastian", "Nicole",
"Peter", "Annika",
"Philipp", "Sophia",
"Max", "Katharina",
"Johannes", "Isabella",
"Finn", "Nele",
"Adrian", "Elisabeth",
"Martin", "Pia",
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, char *pivot, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (name[i] == pivot)
printf (" <==");
else if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, char *pivot, int left, int right)
{
int result = strcmp (name[left], pivot);
comparisons++;
display (name, pivot, left, right);
usleep (200000);
return result;
}
void quicksort (char **name, int left, int right)
{
int p = (left + right) / 2;
char *pivot = name[p];
int l = left;
int r = right;
while (l < r)
{
while (l < r && compare (name, pivot, l, r - 1) < 0)
l++;
while (l < r && compare (name, pivot, r - 1, l) > 0)
r--;
if (l < r)
{
char *temp = name[r - 1];
name[r - 1] = name[l];
name[l] = temp;
l++;
r--;
}
}
}
void sort (char **name)
{
int r = 0;
while (name[r])
r++;
quicksort (name, 0, r);
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, NULL, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, char *pivot, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (name[i] == pivot)
printf (" <==");
else if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, char *pivot, int left, int right)
{
int result = strcmp (name[left], pivot);
comparisons++;
display (name, pivot, left, right);
usleep (200000);
return result;
}
void quicksort (char **name, int left, int right)
{
int p = (left + right) / 2;
char *pivot = name[p];
int l = left;
int r = right;
while (l < r)
{
while (l < r && compare (name, pivot, l, r - 1) < 0)
l++;
while (l < r && compare (name, pivot, r - 1, l) > 0)
r--;
if (l < r)
{
char *temp = name[r - 1];
name[r - 1] = name[l];
name[l] = temp;
l++;
r--;
}
}
if (l < right)
quicksort (name, l, right);
}
void sort (char **name)
{
int r = 0;
while (name[r])
r++;
quicksort (name, 0, r);
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, NULL, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, char *pivot, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (name[i] == pivot)
printf (" <==");
else if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, char *pivot, int left, int right)
{
int result = strcmp (name[left], pivot);
comparisons++;
display (name, pivot, left, right);
usleep (200000);
return result;
}
void quicksort (char **name, int left, int right)
{
int p = (left + right) / 2;
char *pivot = name[p];
int l = left;
int r = right;
while (l < r)
{
while (l < r && compare (name, pivot, l, r - 1) < 0)
l++;
while (l < r && compare (name, pivot, r - 1, l) > 0)
r--;
if (l < r)
{
char *temp = name[r - 1];
name[r - 1] = name[l];
name[l] = temp;
l++;
r--;
}
}
if (r > left)
quicksort (name, left, r);
if (l < right)
quicksort (name, l, right);
}
void sort (char **name)
{
int r = 0;
while (name[r])
r++;
quicksort (name, 0, r);
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, NULL, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, char *pivot, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (name[i] == pivot)
printf (" <==");
else if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, char *pivot, int left, int right)
{
int result = strcmp (name[left], pivot);
comparisons++;
display (name, pivot, left, right);
usleep (200000);
return result;
}
void quicksort (char **name, int left, int right)
{
int p = (left + right) / 2;
char *pivot = name[p];
int l = left;
int r = right;
while (l < r)
{
while (l < r && compare (name, pivot, l, r - 1) < 0)
l++;
while (l < r && compare (name, pivot, r - 1, l) > 0)
r--;
if (l < r)
{
char *temp = name[r - 1];
name[r - 1] = name[l];
name[l] = temp;
l++;
r--;
}
}
if (r > left)
quicksort (name, left, r);
if (l < right)
quicksort (name, l, right);
}
void sort (char **name)
{
int r = 0;
while (name[r])
r++;
quicksort (name, 0, r);
}
int main (void)
{
char *name[] = { "Anna", "Berta", "Box", "Dieter", "Fritz", "Hans", "Heinrich", "Hugo",
"Lisa", "Maria", "Otto", "Peter", "Siegfried", "Thomas", "Ulrich",
"Zacharias", NULL };
sort (name);
display (name, NULL, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, char *pivot, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (name[i] == pivot)
printf (" <==");
else if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, char *pivot, int left, int right)
{
int result = strcmp (name[left], pivot);
comparisons++;
display (name, pivot, left, right);
usleep (200000);
return result;
}
void quicksort (char **name, int left, int right)
{
int p = (left + right) / 2;
char *pivot = name[p];
int l = left;
int r = right;
while (l < r)
{
while (l < r && compare (name, pivot, l, r - 1) < 0)
l++;
while (l < r && compare (name, pivot, r - 1, l) > 0)
r--;
if (l < r)
{
char *temp = name[r - 1];
name[r - 1] = name[l];
name[l] = temp;
l++;
r--;
}
}
if (r > left)
quicksort (name, left, r);
if (l < right)
quicksort (name, l, right);
}
void sort (char **name)
{
int r = 0;
while (name[r])
r++;
quicksort (name, 0, r);
}
int main (void)
{
char *name[] = { "Zacharias", "Ulrich", "Thomas", "Siegfried", "Peter", "Otto", "Maria",
"Lisa", "Hugo", "Heinrich", "Hans", "Fritz", "Dieter", "Box", "Berta",
"Anna", NULL };
sort (name);
display (name, NULL, -1, -1);
return 0;
}
#include <stdio.h>
int find_first (char **name)
{
return 2;
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
int first = find_first (name);
printf ("%s\n", name[first]);
return 0;
}
#include <stdio.h>
#include <string.h>
int find_first (char **name)
{
int first = 0;
for (int i = 1; name[i]; i++)
if (strcmp (name[i], name[first]) < 0)
first = i;
return first;
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
int first = find_first (name);
printf ("%s\n", name[first]);
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment