array riddle in c

K

Keith Thompson

Default User said:
Why do people keep replying to this idiot (puzzlecracker)?

I've seen rare cases of apparent trolls actually learning how to post
properly. I'm not optimistic that puzzlecracker will be one of these
rare cases, but I did actually see him post a followup with a proper
quotation from the prevous article.
 
J

Joona I Palaste

puzzlecracker said:
Given an array of size n and populated with consecutive integers from 1
to n i.e. [1, 2...n-1, n] in random order. Two integers are removed,
meaning zero is placed in their places. Give O (n) efficient algorithm
to find them?

You need a separate array for which integers you've seen. Iterate
through your original array, marking non-zero elements as seen in your
separate array. Then iterate through your separate array, and point out
any values that have not been marked as seen.
The rest of your homework, i.e. writing this out in actual C code, is
left for you.

--
/-- Joona Palaste ([email protected]) ------------- Finland --------\
\-------------------------------------------------------- rules! --------/
"A bee could, in effect, gather its junk. Llamas (no poor quadripeds) tune
and vow excitedly zooming."
- JIPsoft
 
H

Harshan

U know sum from 1 to n ==> say it's S

Sum the array elements ===> say this is S1

Sum of two missing numbers (say a and b ) = (S-S1), i.e., a+b = S-S1 = K,
say.

Now assume value for a (with in n/2) and go on searching in the array, if
the assumed value is not found in the array, done, a = assumed value and b =
K - assumed value .

If not, ie., if the assumed value is found in the array both assumed value
and K - assumed values are aleady in the array, and the search order
reduces.

Go on storing this info ( about already existing numbers, so that u don't
search them again).

U'll find the solution very soon....

Harshan said:
Hello


You know n*(n+1)/2 gives the sum of n consetive numbers .

Subtract the sum from the actual sum of numbers

You will get the sum of two numbers a + b = sum

then proceed with your skills to find the a and b



puzzlecracker said:
Given an array of size n and populated with consecutive integers from 1
to n i.e. [1, 2...n-1, n] in random order. Two integers are removed,
meaning zero is placed in their places. Give O (n) efficient algorithm
to find them?
 
W

websnarf

Ok, you didn't explain the limits on your "integers", so I am going to
go ahead and do the cheaters algorithm. Compute each of the following
(which are each O(n)):

1. s = sum of numbers given.
2. p = product of numbers given.
3. t = n!

Then if the two numbers are a and b, we know that:

1. (a + b) = n*(n+1)/2 - s
2. (a*b) = t / p

Now we can see that:

(x - a) * (x - b) = x^2 - (a + b) * x + (a * b)

However this quadratic clearly has the roots a and b. So solving for
the two roots using the classical quadratic formula will yield the two
solutions a and b. QED.

Ok, but all this requires a bignum library and n! is actually a very
large and slow number to compute (that requires roughly O(n*log(n))
memory).

So lets say we are stuck using C, Pascal or some other fixed integer
sized language, and we don't want to cheat. Then what we can do is
find the smallest prime k, which is greater than n^2 and work out:

1. t = n! (mod k)
2. p = product of inverses numbers given (mod k)

Then work out (t * p) (mod k) and it will be exactly the product a and
b. This still requires a double-wide integer math library (which
includes the ability to take square roots for the quadratic solve), but
the time and space requirements for such a thing is still O(1).

On a typical 32 bit machine, assuming n < INT_MAX , we can use the
usually available 64 bit integer support to do this. The only
complication is that working out the inverses (mod k) can be a big pain
in the ass (but it is still O(1), so I am set).

If you are unsatisfied with this, there is likely a way to solve it
analytically by computing a + b and a^2 + b^2, (I am too lazy to try to
go through the details) but this technically requires *triple*-wide
integer support.
 
P

pete

Ok, you didn't explain the limits on your "integers", so I am going to
go ahead and do the cheaters algorithm. Compute each of the following
(which are each O(n)):

1. s = sum of numbers given.
2. p = product of numbers given.
3. t = n!

Then if the two numbers are a and b, we know that:

1. (a + b) = n*(n+1)/2 - s
2. (a*b) = t / p

Now we can see that:

(x - a) * (x - b) = x^2 - (a + b) * x + (a * b)

However this quadratic clearly has the roots a and b. So solving for
the two roots using the classical quadratic formula will yield the two
solutions a and b. QED.

Ok, but all this requires a bignum library and n! is actually a very
large and slow number to compute (that requires roughly O(n*log(n))
memory).

It's OK if the array is small.

/* BEGIN no_extra_space.c */

#include <stdio.h>

#define NMEMB 10
#define FIRST_ZERO 3
#define SECOND_ZERO 8
#define LU_RAND(S) ((S) * 69069 + 362437)
#define LU_RAND_SEED 123456789LU

void all_different(long unsigned *array, long unsigned n,
long unsigned seed);
void place_zeros(long unsigned *array, long unsigned n,
long unsigned first, long unsigned second);
void find_numbers(long unsigned *array, long unsigned n,
long unsigned *number);
long unsigned irt(long unsigned n);

int main(void)
{
long unsigned array[NMEMB], number[2], n;

all_different(array, NMEMB, LU_RAND_SEED);
place_zeros(array, NMEMB, FIRST_ZERO, SECOND_ZERO);
find_numbers(array, NMEMB, number);
for (n = 0; n != NMEMB; ++n) {
printf("%lu\n", array[n]); }
printf("\n%lu %lu\n", number[0], number[1]);
return 0;
}

void find_numbers(long unsigned *array, long unsigned n,
long unsigned *number)
{
const size_t count = n;
long unsigned n_factorial, n_sum;
long unsigned array_factorial, array_sum;
long unsigned product, sum;

for (n_factorial = 1; n != 0; --n) {
n_factorial *= n;
}
n = count;
for (n_sum = 0; n != 0; --n) {
n_sum += n;
}
array_factorial = 1;
n = count;
while (n-- != 0) {
if (array[n] != 0) {
array_factorial *= array[n];
}
}
n = count;
array_sum = 0;
while (n-- != 0) {
array_sum += array[n];
}
product = n_factorial / array_factorial;
sum = n_sum - array_sum;
number[0] = (sum - irt(sum * sum - 4 * product)) / 2;
number[1] = sum - number[0];
}

void place_zeros(long unsigned *array, long unsigned n,
long unsigned first, long unsigned second)
{
while (n-- != 0) {
if (array[n] == first || array[n] == second) {
array[n] = 0;
}
}
}

void all_different(long unsigned *array,
long unsigned n, long unsigned seed)
{
long unsigned i, r;

array[0] = 1;
for (i = 1; n > i; ++i) {
seed = LU_RAND(seed);
r = seed % (i + 1);
array = 0;
array = array[r];
array[r] = i + 1;
}
}

long unsigned irt(long unsigned n)
{
long unsigned a, b;

a = n;
for (b = (1 == n) + n >> 1; n > b; b = a / n + n >> 1) {
n = b;
}
return n;
}

/* END no_extra_space.c */
 
L

Lawrence Kirby

Ben said:
puzzlecracker said:
Given an array of size n,
and its populated with consecutive integers
from 1
to n, i.e. [1, 2...n-1, n] in random order.
Two integers are removed,
meaning zero is placed in their places.
Give O (n) efficient algorithm
to find them WITHOUT using extra space?

I expect that any solution would require at least O(1) extra
space.
....

void find_numbers(long unsigned *array, long unsigned n,
long unsigned *number, long unsigned *scratch)
{
long unsigned count, index;

for (count = 0; count != n; ++count) {
scratch[count] = 0;
}
for (count = 0; count != n; ++count) {
if (array[count] != 0) {
scratch[array[count] - 1] = array[count];
}
}
for (index = count = 0; count != n; ++count) {
if (scratch[count] == 0) {
number[index++] = count + 1;
if (index == 2) {
break;
}
}
}
}

You can do this inplace in array, i.e. without needing the extra scratch
array:

void find_numbers_inplace(long unsigned *array, long unsigned n,
long unsigned *number)
{
long unsigned count, index;

for (count = 0; count != n; count++) {
long unsigned tmp;

while ((tmp = array[count]) != 0 && count != tmp-1) {
array[count] = array[tmp-1];
array[tmp-1] = tmp;
}
}

for (index = count = 0; count != n; ++count) {
if (array[count] == 0) {
number[index++] = count + 1;
if (index == 2) {
break;
}
}
}
}

And, yes, this is an O(n) algorithm despite appearances (i.e. the nested
loops).

Lawrence
 
R

RoSsIaCrIiLoIA

Given an array of size n and populated with consecutive integers from 1
to n i.e. [1, 2...n-1, n] in random order. Two integers are removed,
meaning zero is placed in their places. Give O (n) efficient algorithm
to find them?

easy
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#define R return
#define W while
#define P printf
#define F for


void stampa_vals(unsigned* a, unsigned num)
{unsigned n, n2, i, s, s2, w, g, g2, r;
double rr;
n=(num*(num+1))/2; n2=(n*(2*num+1))/3;
// n=1+2+3+4+..+(num-1) n2=1^2+2^2+..+(num-1)^2
F(i=0, s=0, s2=0;i<num; ++i) // g=n -s = x1 +x2
{s+=a; s2+=a*a;} // w=n2-s2 = x1^2+x2^2
// x1=g-x2 => (g-x2)^2+x2^2=w
// g^2+x2^2-2gx2+x2^2-w=0 => 2x2^2-2gx2+g^2-w=0
// x2= (g+-sqrt(g^2 - 2 (g^2-w)))/2
// x2= (g+-sqrt(2w - g^2)/2
g=n-s; w=n2-s2; g2=g*g;
r= 2*w - g2; r=sqrt((double)r);
if(g==r) P("La soluzione e': %u\n", (g+r)/2);
else P("Le soluzioni sono: %u, %u\n", (g-r)/2, (g+r)/2);
}



void zera2(unsigned* a, unsigned num)
{unsigned i, j;
if(num<=1 || a==0) R;
i=rand()%num; j=rand()%num;
a=0; a[j]=0;
}



void rimescola(unsigned* a, unsigned num)
{unsigned i, j, k, temp;
if(num<=1 || a==0) R;
for(i=0; i<num+10; ++i)
{ j=(unsigned)rand()%num; k=(unsigned)rand()%num;
if(j>num || k>num) {P("\a\n"); exit(0); }
if(j==k) continue;
temp=a[k]; a[k]=a[j]; a[j]=temp;
}
}

void print_a(unsigned* a, unsigned num)
{unsigned i;
F(i=0;i<num; ++i)
P("%u ", a);
P(" ");
}



int main(void)
{unsigned char num;
unsigned *a, i;
srand(time(0));
label:
num=(unsigned char)rand();
num=num%30;
if(num<2) goto label;
a=malloc(num*(1 + sizeof *a));
F(i=0; i<num; ++i)
a=i+1;
print_a(a, num); P("\n");
rimescola(a, num);
print_a(a, num); P("\n");
zera2(a, num);
print_a(a, num); P("\n");
stampa_vals(a,num);
free(a);
P("\n");
R 0;
} /* main, endswith */
 
J

Joona I Palaste

RoSsIaCrIiLoIA said:
On 19 Jan 2005 17:43:29 -0800, "puzzlecracker" <[email protected]>
wrote:
Given an array of size n and populated with consecutive integers from 1
to n i.e. [1, 2...n-1, n] in random order. Two integers are removed,
meaning zero is placed in their places. Give O (n) efficient algorithm
to find them?
easy
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#define R return
#define W while
#define P printf
#define F for

You have been told over and over again to stop using these ridiculous
obfuscated macros. Why do you persist on using them? Are you hell-bent
on making your code unreadable? Do you fancy yourself as some weirdo
guru who gets things working but no one knows how? Did you fail to get
all the jokes about "job security", thinking it was all true? Or are you
simply a troll?
 
R

RoSsIaCrIiLoIA

Given an array of size n and populated with consecutive integers from 1
to n i.e. [1, 2...n-1, n] in random order. Two integers are removed,
meaning zero is placed in their places. Give O (n) efficient algorithm
to find them?

easy
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
 
R

RoSsIaCrIiLoIA

RoSsIaCrIiLoIA said:
Given an array of size n and populated with consecutive integers from 1
to n i.e. [1, 2...n-1, n] in random order. Two integers are removed,
meaning zero is placed in their places. Give O (n) efficient algorithm
to find them?
easy
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#define R return
#define W while
#define P printf
#define F for

You have been told over and over again to stop using these ridiculous
obfuscated macros. Why do you persist on using them? Are you hell-bent
on making your code unreadable? Do you fancy yourself as some weirdo
guru who gets things working but no one knows how? Did you fail to get
all the jokes about "job security", thinking it was all true? Or are you
simply a troll?

I've missed a macro: #define G goto
I think that people think that goto is wrong are poor incompetents lot
more than me. Am I a Troll? :)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#include <time.h>

#define R return
#define W while
#define P printf
#define F for
#define G goto

void stampa_vals(unsigned* a, unsigned num)
{unsigned n, n2, s, s2, w, g, r;
/*-----------------------------------------*/
assert( a!=0 && num!=0 );
n=(num*(num+1))/2; n2=(n*(2*num+1))/3;
// n=1+2+3+4+..+(num-1) n2=1^2+2^2+..+(num-1)^2
w=0; s=0; s2=0;
la: s+=a[w]; s2+=a[w]*a[w]; if(++w<num) G la;

// w=n2-s2 = x1^2+x2^2
// g=n -s = x1 +x2
// x1=g-x2 => (g-x2)^2+x2^2=w
// g^2+x2^2-2gx2+x2^2-w=0 => 2x2^2-2gx2+g^2-w=0
// x2= (g+-sqrt(g^2 - 2(g^2-w)))/2
// x2= (g+-sqrt(2w - g^2)/2
g= n-s; w=n2-s2;
if(g==0){P("Tutti i numeri sono presenti\n"); R;}
r= 2*w - g*g; r=sqrt((double)r);
if(g==r) P("La soluzione e': %u\n", (g+r)/2);
else P("Le soluzioni sono: %u, %u\n", (g-r)/2, (g+r)/2);
}



void zera2(unsigned* a, unsigned num)
{unsigned i, j;
assert(a!=0 && num!=0);
if(num<=1) R;
i=rand()%num; j=rand()%num;
a=0; a[j]=0;
}



void rimescola(unsigned* a, unsigned num)
{unsigned i, j, k, temp;
assert(a!=0 && num!=0);
if(num<=1) R;
i=0;
la:
j=rand()%num; k=rand()%num;
if(j==k) G la;
temp=a[k]; a[k]=a[j]; a[j]=temp;
if(++i<num+10) G la;
}

void print_a(unsigned* a, unsigned num)
{unsigned i;
/*---------------------*/
assert(a!=0 && num!=0);
i=0;
la: P("%u ", a);if(++i<num) G la;
P(" ");
}



int main(void)
{unsigned char num;
unsigned *a, i;
/*-----------------------------*/
srand(time(0));
l0: num=rand(); num=num%30; if(num<2) G l0;

a=malloc((num+1)*(sizeof *a));
if(a==0) R 0;

i=0;
la: a=i+1; if(++i<num) G la;

print_a(a, num); P("\n");
rimescola(a, num);
print_a(a, num); P("\n");
zera2(a, num);
print_a(a, num); P("\n");
stampa_vals(a,num);
free(a);
P("\n");
R 0;
} /* main, endswith */
 
M

Michael Mair

RoSsIaCrIiLoIA said:
RoSsIaCrIiLoIA said:
On 19 Jan 2005 17:43:29 -0800, "puzzlecracker" <[email protected]>
wrote:

Given an array of size n and populated with consecutive integers from 1
to n i.e. [1, 2...n-1, n] in random order. Two integers are removed,
meaning zero is placed in their places. Give O (n) efficient algorithm
to find them?

easy
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#define R return
#define W while
#define P printf
#define F for

You have been told over and over again to stop using these ridiculous
obfuscated macros. Why do you persist on using them? Are you hell-bent
on making your code unreadable? Do you fancy yourself as some weirdo
guru who gets things working but no one knows how? Did you fail to get
all the jokes about "job security", thinking it was all true? Or are you
simply a troll?


I've missed a macro: #define G goto
I think that people think that goto is wrong are poor incompetents lot
more than me. Am I a Troll? :)

The latter does not make you a troll.
The obfuscated macros would get you warned once or twice and then fired
in a company where I had the say.
Your way of mixing your first and second name at least may be playful
but does you no credit.

The look of your code is a little crowded; I like more spacing and put
only seldom two assignments on the same line.


Cheers
Michael

[snip: not very readable code]
 
C

CBFalconer

.... snip unimportant ....... snip ...
The latter does not make you a troll.

He has been warned and warned. Many of us have him in the PLONK
bin, and wouldn't be bothered by his reappearance if you and Joona
didn't insist on quoting him. Don't feed the trolls.
 
J

Joona I Palaste

... snip unimportant ...
He has been warned and warned. Many of us have him in the PLONK
bin, and wouldn't be bothered by his reappearance if you and Joona
didn't insist on quoting him. Don't feed the trolls.

Sorry about that. Rossiacrilioa or whatever his name is escaped my
killfile when he changed e-mail addresses. I've now rekillfiled him,
this time by name rather than e-mail address.

--
/-- Joona Palaste ([email protected]) ------------- Finland --------\
\-------------------------------------------------------- rules! --------/
"I said 'play as you've never played before', not 'play as IF you've never
played before'!"
- Andy Capp
 
R

RoSsIaCrIiLoIA

RoSsIaCrIiLoIA said:
RoSsIaCrIiLoIA <[email protected]> scribbled the following:

On 19 Jan 2005 17:43:29 -0800, "puzzlecracker" <[email protected]>
wrote:

Given an array of size n and populated with consecutive integers from 1
to n i.e. [1, 2...n-1, n] in random order. Two integers are removed,
meaning zero is placed in their places. Give O (n) efficient algorithm
to find them?

easy
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#define R return
#define W while
#define P printf
#define F for

You have been told over and over again to stop using these ridiculous
obfuscated macros. Why do you persist on using them? Are you hell-bent
on making your code unreadable? Do you fancy yourself as some weirdo
guru who gets things working but no one knows how? Did you fail to get
all the jokes about "job security", thinking it was all true? Or are you
simply a troll?


I've missed a macro: #define G goto
I think that people think that goto is wrong are poor incompetents lot
more than me. Am I a Troll? :)

The latter does not make you a troll.
The obfuscated macros would get you warned once or twice and then fired
in a company where I had the say.

I'm a amateur programmer and so I have no one here (except my own
head) that says me what it is wrong and what is good (when I hear, I
decide what is right and what is wrong).

I think that if one programmer doesn't understand he must to use the
proper tool (a "indent" programme)(it would be easy and in a second he
is ok). If this doesn't help he have to study more. If some leader of
a company think otherwise he does errors and so all can happen in his
company.

Your way of mixing your first and second name at least may be playful
but does you no credit.

The look of your code is a little crowded; I like more spacing and put
only seldom two assignments on the same line.


Cheers
Michael

[snip: not very readable code]
 
K

Keith Thompson

RoSsIaCrIiLoIA said:
I'm a amateur programmer and so I have no one here (except my own
head) that says me what it is wrong and what is good (when I hear, I
decide what is right and what is wrong).

Fine, if you want to think that you're right and everyone else is
wrong, you're free to believe that. But your use of macros like

#define R return
#define W while
#define P printf
#define F for

makes your code more difficult to read, and it means that most of us
will not spend the extra time necessary to read it. Continue to use
them, and we'll continue to ignore you.
 
R

Richard Bos

RoSsIaCrIiLoIA said:
I'm a amateur programmer and so I have no one here (except my own
head) that says me what it is wrong and what is good (when I hear, I
decide what is right and what is wrong).

That's a load of bovine excrement. You have been told repeatedly _here_,
in this newsgroup, that those macros are losing in the extreme. And yet
you continue to use them. To, me this suggests one of three things:
either you are a troll, or you are an idiot, or you are a loser. Cut the
crap or take your pick of those three.

Richard
 
M

Mabden

Richard Bos said:
That's a load of bovine excrement. You have been told repeatedly _here_,
in this newsgroup, that those macros are losing in the extreme. And yet
you continue to use them. To, me this suggests one of three things:
either you are a troll, or you are an idiot, or you are a loser. Cut the
crap or take your pick of those three.

Many people come up with syntax that seems "natural" to them, and the
macro seems like the easiest / best way to "improve" the language. But
you always have to remember the you are writing C code for C programmers
and we all know C, not your little "conveniences". Once you have worked
with a few people who try to do that you understand that there is little
value in trying to "improve" C. Just write simple, straight-forward C
code and you'll be happier in the long run.

Or pick / write a new language and write code in that. There are always
editors that can be set up to put the word "return" when you type R and
a space. Learn them, if you are concerned with your typing speed or
proficiency.
 
P

pete

Lawrence said:
Ben said:
Given an array of size n,
and its populated with consecutive integers
from 1
to n, i.e. [1, 2...n-1, n] in random order.
Two integers are removed,
meaning zero is placed in their places.
Give O (n) efficient algorithm
to find them WITHOUT using extra space?

I expect that any solution would require at least O(1) extra
space.
...

void find_numbers(long unsigned *array, long unsigned n,
long unsigned *number, long unsigned *scratch)
{
long unsigned count, index;

for (count = 0; count != n; ++count) {
scratch[count] = 0;
}
for (count = 0; count != n; ++count) {
if (array[count] != 0) {
scratch[array[count] - 1] = array[count];
}
}
for (index = count = 0; count != n; ++count) {
if (scratch[count] == 0) {
number[index++] = count + 1;
if (index == 2) {
break;
}
}
}
}

You can do this inplace in array,
i.e. without needing the extra scratch array:

void find_numbers_inplace(long unsigned *array, long unsigned n,
long unsigned *number)
{
long unsigned count, index;

for (count = 0; count != n; count++) {
long unsigned tmp;

while ((tmp = array[count]) != 0 && count != tmp-1) {
array[count] = array[tmp-1];
array[tmp-1] = tmp;
}
}

for (index = count = 0; count != n; ++count) {
if (array[count] == 0) {
number[index++] = count + 1;
if (index == 2) {
break;
}
}
}
}

And, yes, this is an O(n) algorithm despite appearances
(i.e. the nested loops).

Nested loops ?!
One of the smart guys on comp.programming described
something which I consider to be the "right" solution.

void find_numbers(long unsigned *array, long unsigned n,
long unsigned *number)
{
const long unsigned count = n;
long unsigned array_sum, sum, half_sum;

for (array_sum = n = 0; n != count; ++n) {
array_sum += array[n];
}
sum = (count + 1) * count / 2 - array_sum;
half_sum = sum / 2;
for (array_sum = n = 0; n != count; ++n) {
if (half_sum >= array[n]) {
array_sum += array[n];
}
}
number[0] = (half_sum + 1) * half_sum / 2 - array_sum;
number[1] = sum - number[0];
}
 
R

RoSsIaCrIiLoIA

RoSsIaCrIiLoIA said:
RoSsIaCrIiLoIA <[email protected]> scribbled the following:

On 19 Jan 2005 17:43:29 -0800, "puzzlecracker" <[email protected]>
wrote:

Given an array of size n and populated with consecutive integers from 1
to n i.e. [1, 2...n-1, n] in random order. Two integers are removed,
meaning zero is placed in their places. Give O (n) efficient algorithm
to find them?

easy
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#define R return
#define W while
#define P printf
#define F for

You have been told over and over again to stop using these ridiculous
obfuscated macros. Why do you persist on using them? Are you hell-bent
on making your code unreadable? Do you fancy yourself as some weirdo
guru who gets things working but no one knows how? Did you fail to get
all the jokes about "job security", thinking it was all true? Or are you
simply a troll?


I've missed a macro: #define G goto
I think that people think that goto is wrong are poor incompetents lot
more than me. Am I a Troll? :)

The latter does not make you a troll.
The obfuscated macros would get you warned once or twice and then fired
in a company where I had the say.

I'm a amateur programmer and so I have no one here (except my own
head) that says me what it is wrong and what is good (when I hear, I
decide what is right and what is wrong).

In the way: if something goes well in the reality that is good and I
choice that
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,780
Messages
2,569,609
Members
45,254
Latest member
Top Crypto TwitterChannel

Latest Threads

Top