Fair game

и задачки для интервью.
User avatar
KP580BE51
Уже с Приветом
Posts: 15007
Joined: 14 Jun 2005 11:50
Location: Ukraine

Post by KP580BE51 »

rGlory wrote:Я тут програмку накидал для проверки, на слово я все равно не поверил :wink:

Аналогично. Или я что-то не понимаю.

Code: Select all

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

void main()
{
    unsigned long i;
   
    char vasa[3]="100";
    char peta[3]="000";
    char buf[3];
    float vasacnt=0,petacnt=0;
   
    for (i=0;i<100000;i++)
    {
   buf[0] = buf[1];
   buf[1] = buf[2];
        buf[2] = (random()&1) ? '1':'0';
   vasacnt += memcmp(vasa,buf,3)? 1.0:0.0;
   petacnt += memcmp(peta,buf,3)? 1.0:0.0;
    }
     printf("vas/pet %5f  vasa=%f peta=%f \n", vasacnt/petacnt,vasacnt,petacnt);

}


./a.out
vas/pet 0.999074 vasa=87351.000000 peta=87432.000000
User avatar
venco
Уже с Приветом
Posts: 2001
Joined: 10 Nov 2004 00:34
Location: MD

Post by venco »

1. Инициализировать buf кто будет?
2. Игра останавливается при первом совпадении.
User avatar
AndreyT
Уже с Приветом
Posts: 3009
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Post by AndreyT »

KP580BE51 wrote:Аналогично. Или я что-то не понимаю.
...
vas/pet 0.999074 vasa=87351.000000 peta=87432.000000


Вероятность встречания той или иной комбинации в бесконечной последовательности нулей и единиц одинакова. С этим никто не спорит. И именно это и пытается считать ваша программа.

В данной задаче же идет речь совсем о другой вероятности - вероятности того, что одна комбинация появится в потоке нулей и единиц раньше, чем другая.
Best regards,
Андрей
User avatar
KP580BE51
Уже с Приветом
Posts: 15007
Joined: 14 Jun 2005 11:50
Location: Ukraine

Post by KP580BE51 »

venco wrote:1. Инициализировать buf кто будет?

Никто. В нем будут случайные значения, что не противоречит условию.
2. Игра останавливается при первом совпадении.

Code: Select all

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

void main()
{
    unsigned long i;

    char vasa[3]="100";
    char peta[3]="000";
    char buf[3];
    float vasacnt=0,petacnt=0;

    for (i=0;i<100000;i++)
    {
        buf[0] = buf[1];
        buf[1] = buf[2];
        buf[2] = (random()&1) ? '1':'0';
        if(memcmp(vasa,buf,3)==0) { vasacnt = vasacnt+1.0; buf[2]='*'; };
        if(memcmp(peta,buf,3)==0) { petacnt = petacnt+1.0; buf[2]='*'; };
    }
     printf("vas/pet %5f  vasa=%f peta=%f \n", vasacnt/petacnt,vasacnt,petacnt);

}

vas/pet 6.950000 vasa=12649.000000 peta=1820.000000
8O

PS: До меня дошло. :)
User avatar
Иоп
Уже с Приветом
Posts: 8832
Joined: 18 Feb 2005 08:00
Location: Yekaterinburg --> Toronto

Post by Иоп »

Хочу поблагодарить участников темы за замечательную идею и решение! Уже двое коворкеров оплатят мой ланч. :fr:
rGlory
Уже с Приветом
Posts: 5102
Joined: 11 Aug 2004 02:49

Post by rGlory »

Иоп wrote:Хочу поблагодарить участников темы за замечательную идею и решение! Уже двое коворкеров оплатят мой ланч. :fr:

Еще есть идея предложить самому ставить 4 рубля, а приятелю 3. Чтобы заманить сильнее. Правда прибыль упадет...

Return to “Головоломки”