Решение на задачата: "eat me = alive" Имаме следните цифри: "e" (Повтаря се 3 пъти) "a"



Дата24.07.2016
Размер168.87 Kb.
#3789
ТипРешение

Курсова работа
по

Компютърна евристика
преподаватели:

1. гл. ас. Таня Тонова

2. доц. И. Тонов

изготвила:

Даниела Василева Рангелова фн. 13252

гр. София

2008 г.


Решение на задачата: “eat * me = alive”

Имаме следните цифри:

1. “e” (Повтаря се 3 пъти)

2. “a” (Повтаря се 2 пъти)

3. “t”, “m”, “l”, “i”, “v” (повтарят се само по един път).
Знаем още, че всички цифри са различни e ≠ a ≠ t ≠ m ≠ l ≠ i ≠ v.
Вземаме най-голямото възможно число и проверяваме:

999 . 99 = 98 901 не, отпадат възможности ‘е’ може да е 19


Вземаме най-малкото възможно число и проверяваме:

100. 10 = 1000 → получава се 4 цифрено число, а трябва да е 5 цифрено.


Забелязваме още, че:

1. е ≠ 0 → защото eat ще стане двуцифрено число. Аналогично и m, a ≠ 0

2. е ≠ 1, защотo t*е = t, a произведението t.e завършва на e
Възможни двойки за е и t:


e =

2

3

4

5

6

7

8

9

t =

6

1

1

6

1

3

7

9

1

1

1

6

1

Започваме изчерпване по а:



  1. а = 1 е = 2, t = 6 (1)

е = 3, t = 1 → отпада, защото а = 1 и t = 1 а = t, което е противоречие

е = 4, t = 1 → не

е = 4, t = 6 (2)

е = 5, t = 1 → не

е = 5, t = 3 (3)

е = 5, t = 7 (4)

е = 5, t = 9 (5)

е = 6, t = 1 → не

е = 7, t = 1 → не

е = 8, t = 1 → не

е = 8, t = 6 (6)

е = 9, t = 1 → не




  1. 216 . m2 = 1liv2

m = 3 → 216 . 32 = 6912 → не

m = 4 → не, малко число е

m = 5 → 216 . 52 = 11232 → не

m = 6 → не, (t = 6)

m = 7 → 216 . 72 = 15552 → не

m = 8 → 216 . 82 = 17712 → не

m = 9 → 216 . 92 = 19872 → не


  1. 416 . m4 = 1liv4

m = 1 → не ≠ a

m = 2 → не, малко число

m = 3 → 416 . 34 = 14144 → не

m = 4 → не ≠ e

m = 5 → 416 . 54 = 22464 → голямо число m ≥ 5 не е решение


  1. 513 . m5 = 1liv5

m = 1 → не ≠ a

m = 2 → 513 . 25 = 12825 не

m = 3 → не ≠ t

m = 4 → 513 . 45 = 23085 → голямо число m ≥ 4 не е решение




  1. 517 . m5 = 1liv5

m = 1 → не

m = 2 → 517 . 25 = 12925 не



m = 3 → 517 . 35 = 18095 → да 1 реш.
m = 4 → 517 . 45 = 23265 не, голямо число m ≥ 4 не е решение


  1. 519 . m5 = 1liv5

m = 2 → 519 . 25 = 12975

m = 3 → 519 . 35 = 18165

m = 4 → 519 . 45 = 23355 не, голямо число m ≥ 4 не е решение


  1. 816 . m8 = 1liv8

m = 2 → 816 . 28 = 22848 не, голямо число m ≥ 2 не е решение


  1. a = 2 е = 3, t = 1 (1)

e = 4, t = 1 (2)

e = 4, t = 6 (3)

e = 5, t = 1 (4)

e = 5, t = 3 (5)

e = 5, t = 7 (6)

e = 5, t = 9 (7)

e = 6, t = 1 (8)

e = 7, t = 1 (9)

e = 8, t = 1 (10)

e = 8, t = 6 (11)

e = 9, t = 1 (12)


  1. e = 3, a = 2, t = 1

321 . m3 = 2liv3

m = 4 → 321 . 43 = 13803

m = 5 → 321 . 53 = 17013, не

m = 6 → 321 . 63 = 20223, не

m = 7 → 321 . 73 = 23433, не

m = 8 → 321 . 83 = 26643, не

m = 9 → 321 . 93 = 29853, не


  1. 421 . m4 = 2liv4

m = 3 → 421 . 34 = 14314, не

m = 4 → не

m = 5 → 421 . 54 = 22734, не

m = 6 → 421 . 64 = 26944, не

m = 7 → 421 . 74 = 31154, не, голямо число m ≥ 7 не е решение


  1. 426 . m4 = 2liv4

m = 1 → 426 . 14 = 5964 – не

m = 3 → 426 . 34 = 14484 – не

m = 5 → 426 . 54 = 23004 – не

m = 7 → 426 . 74 = 31524, не, голямо число m ≥ 7 не е решение




  1. 521 . m5 = 2liv5

m = 3 → 521 . 35 = 18235, не

m = 4 → 521 . 45 = 23445, не

m = 6 → 521 . 64 = 33865, не, голямо число m ≥ 6 не е решение


  1. 523 . m5 = 2liv5

m = 1 → 523 . 15 = 7845, не

m = 4 → 523 . 45 = 23535, не

m = 6 → 523 . 65 = 33995, не, голямо число m ≥ 6 не е решение


  1. 527 . m5 = 2liv5

m = 1 → 527 . 15 = малко, не

m = 3 → 527 . 35 = малко, не

m = 4 → 527 . 45 = 23715, не

m = 6 → 527 . 65 = 34255, не, голямо число m ≥ 6 не е решение




  1. 529 . m5 = 2liv5

m = 1 → 529 . 15 = малко, не

m = 3 → 529 . 35 = 19515, не



m = 4 529 . 45 = 23805 да 2 реш.

м = 6 → 529 . 65 = 34385, не, голямо число m ≥ 6 не е решение




  1. 621 . m6 = 2liv6

m = 1 → 621 → не t =1 = m, противоречие

m = 3 → 621 . 36 = 22356

m = 4 → 621 . 46 = 28566

m = 5 → 621 . 56 = 14776, не, голямо число m ≥ 5 не е решение




  1. 721 . m7 = 2liv7

m = 1 → малко

m = 3 → 721 . 37 = 26677

m = 4 → 721 . 47 = 33887 не, голямо число m ≥ 4 не е решение


  1. 821 . m8 = 2lib8

m = 1 → малко

m = 3 → 821 . 38 = 31198 не, голямо число m ≥ 3 не е решение





  1. 826 . m8 = 2lib8

m = 1 → малко

m = 3 → 826 . 38 = 31388 не, голямо число m ≥ 3 не е решение




  1. 921 . m9 = 2lib9

m = 1 → не е ≠ t

m = 3 → 921 . 39 = 35919 не, голямо число m ≥ 3 не е решение

III. a = 3 e = 2, t = 6 (1)

e = 4, t = 1 (2)

e = 4, t = 6 (3)

e = 5, t = 1 (4)

e = 5, t = 7 (5)

e = 5, t = 9 (6)

e = 6, t = 1 (7)

e = 7, t = 1 (8)

e = 8, t = 1 (9)

e = 8, t = 6 (10)

e = 9, t = 1 (11)


  1. 236 . m2 = 3liv2

m = 1 → 236 . 12 → малко

m = 4 → 236 . 42 = 39312, не

m = 5 → 236 . 52 = 12272, не

m = 9 → 239 . 93 = 21712, не




  1. 431 . m4 = 3liv4

m = 2 → 431 . 24 = 10344, не

m = 5 → 431 . 54 = 23774, не

m = 6 → 431 . 64 = 27584, не

m = 7 → 431 . 74 = 31894, не



m = 8 → 431 . 84 = 36204 3-то решение

m = 9 → 431 . 94 = 40514, не




  1. 436 . m4 = 3liv4

m = 1 → малко

m = 9 → 436 . 94 = 40984 , не

m = 8 → 436 . 84 = 36624 , не

m = 7 → 436 . 74 = 32264 , не

m = 5 → 436.54 = 23544 → малко → m ≤ 5 не е решение


  1. 531 . m5 = 3liv5

m = 2 → 531 . 25 = 13275, не

m = 4 → 531 . 45 = 23895 , не

m = 6 → 531 . 65 = 34515 , не

m = 7 531 . 75 = 39825, да 4-то решение

m = 8, 9 → големи числа





  1. 537 . m5 = 3liv5

m = 9 → 537 . 95 = 51015, не

m = 8 → 537 . 85 = 45645, не



m = 6 537 . 65 = 34905 – да 5-то решение

m = 4 → 537 . 45 = 24165 – малко число m ≤ 4 не е решение




  1. 539 . m5 = 3liv5

m = 1, 2, 3 – малки числа

m = 4 → 539 . 45 = 24255 , не

m = 6 → 539 . 65 = 35035 , не

m = 7 → 539 . 75 = 40425 , не, голямо число m ≥ 7 не е решение




  1. 631 . m6 = 3liv6

m = 2 →631 . 26 = 16406 , не

m = 4 →631 . 46 = 29026 , не

m = 5 →631 . 56 = 35336 , не

m = 7 → голямо число m ≥ 7 не е решение




  1. 731 . m7 = 3liv7

m = 2 →731 . 27 = 19737 , не

m = 4 →731 . 47 = 34357 , не

m = 5 →731 . 57 = 41667 , не, голямо число m ≥ 5 не е решение


  1. 831 . m8 = 3liv8

m = 2 → 831 . 28 = 23268 , не

m = 4 → 831 . 48 = 39888 , не

m = 5 → голямо число m ≥ 5 не е решение


  1. 836 . m8 = 3liv8

m = 2 → 836 . 28 = 23408 , не

m = 4 → 836 . 48 = 40128 , голямо число m ≥ 4 не е решение




  1. 931 . m9 = 3liv9

m = 3 → 931 . 29 = 26999 , не

m = 4 → 931 . 49 = 45619, голямо число m ≥ 4 не е решение

IV. a = 4 e = 2, t = 6 (1)

e = 3, t = 1 (2)

e = 5, t = 1,3,7,9 (3)

e = 6, t = 1 (4)

e = 7, t = 1 (5)

e = 8, t = 1,6 (6)

e = 9, t = 1 (7)


  1. 246 . m2 = 4liv2

m=9 → 246 . 92 = 22632, малко число m ≤ 9 не е решение
(2) 341 . m3 = 4liv3

m=9 → 341 . 93 = 31713, малко число m ≤ 9 не е решение

(3.1) 541 . m5 = 4liv5

m = 7 → 541 . 75 = 40575 , не

m = 8 → 541 . 85 = 45985 , не

m = 9 → 541 . 95 = 51395 , много голямо число m ≥ 9 не е решение




    1. 543 . m5 = 4liv5

m = 7 → 543 . 75 = 40725 , не

m = 8 → 543 . 85 = 46155 , не

m = 9 → 543 . 95 = 51585 , много голямо число m ≥ 9 не е решение


    1. 547 . m5 = 4liv5

m = 8 → 547 . 85 = 46495 , не

m = 9 → 547 . 95 = 51965 , много голямо число m ≥ 9 не е решение





    1. 549 . m5 = 4liv5

m = 7 → 549 . 75 = 41175 , не

m = 8 → 549 . 85 = 46665 , не





  1. 641 . m6 = 4liv6

m = 7 → 641 . 76 = 48716 , не

m = 8 → 641 . 86 = 45126 , не

m = 9 → 641 . 96 = 61536 , много голямо число m ≥ 9 не е решение



  1. 741 . m7 = 4liv7

m = 6 741 . 67 = 49647 – да 6-то решение

m = 8 → 741 . 87 = 64467, много голямо число m ≥ 8 не е решение





    1. 841 . m8 = 4liv8

m = 3 → 841 . 38 = 31958 , малко число m ≤ 3 не е решение

m = 5 → 841 . 58 = 48778 , не

m = 6 → 841 . 68 = 57188 , много голямо число m ≥ 6 не е решение



    1. 846 . m8 = 4liv8

m = 5 → 846 . 58 = 49068 , не

m = 7 → 846 . 78 = 65988 , много голямо число m ≥ 7 не е решение

(7) 941 . m9 = 4liv9

m = 3 → 941 . 39 = 36699 , малко число m ≤ 3 не е решение

m = 5 → 941 . 59 = 55519 , много голямо число m ≥ 5 не е решение

V. a = 5 e = 2, t = 6 (1)

e = 3, t = 1 (2)

e = 4, t = 1,6 (3)

e = 6, t = 1 (4)

e = 7, t = 1 (5)

e = 8, t = 1,6 (6)

e = 9, t = 1 (7)





  1. 256 . m2 = 5liv2

m = 9 → 256 . 92 = 23552 , не


  1. 351 . m3 = 5liv3 – няма решение

(3.1) 451 . m4 = 5liv4

m = 9 → 451 . 94 = 42394 , не


    1. 456 . m4 = 5liv4 – няма решение

m = 9 → 456 . 94 = 42864 , не

(4) 651 . m6 = 5liv6

m = 8 → 651 . 86 = 55986 , не

m = 9 → 651 . 96 = 62496 , много голямо число m ≥ 9 не е решение




  1. 751 . m7 = 5liv7

m = 6 → 751 . 67 = 50317 , не

m = 8 → 751 . 87 = 65337 , много голямо число m ≥ 8 не е решение

(6.1) 851 . m8 = 5liv8

m = 4 → 851 . 48 = 40848 , малко число m ≤ 4 не е решение

m = 6 → 851 . 68 = 57868 , не

m = 7 → 851 . 78 = 66378 , много голямо число m ≥ 7 не е решение

(6.2) 856. m8 = 5liv8

m = 7 → 856 . 78 = 66768 , много голямо число m ≥ 7 не е решение





  1. 951 . m9 = 5liv9

m = 4 → 951 . 49 = 46599 , малко число m ≤ 4 не е решение

m = 6 → 951 . 69 = 65619 , много голямо число m ≥ 6 не е решение

VI. a = 6 e = 3, t = 1 (1)

e = 4, t = 1 (2)

e = 5, t = 1,3,7,9 (3)

e = 7, t = 1 (4)

e = 8, t = 1 (5)

e = 9, t = 1,6 (6)


(1) 361 . m3 = 6liv3

m = 9 → 361 . 93 = 33573 , много малко число m ≤ 9 не е решение


(2) 461 . m4 = 6liv4

m = 9 → 461 . 94 = 43334 , много малко число m ≤ 9 не е решение


(3.1) 561 . m5 = 6liv5

m = 8 → 561 . 85 = 47658 , много малко число m ≤ 8 не е решение

m = 9 → 561 . 95 = 53295 , малко число m ≤ 9 не е решение

(3.2) 563 . m5 = 6liv5

m = 8 → 563 . 85 = 47855 , малко число m ≤ 8 не е решение

m = 9 → 563 . 95 = 53485 , малко число m ≤ 9 не е решение


(3.3) 567 . m5 = 6liv5

m = 9 → 567 . 95 = 53865 , малко число m ≤ 9 не е решение

(3.4) 569 . m5 = 6liv5

m = 9 → 569 . 95 = 54055 , малко число m ≤ 9 не е решение


(4) 761 . m7 = 6liv7

m = 8 → 761. 87 = 66207 , не

m = 9 → 761 .97 = 74817 , голямо число m ≥ 9 не е решение

(5) 861 . m8 = 6liv8

m = 7 → 861. 78 = 67158 , не

m = 9 → 861 .98 = 84378 , голямо число m ≥ 9 не е решение


(6) 961 . m9 = 6liv9

m = 5 → 961. 59 = 56699 , малко число m ≤ 5 не е решение

m = 7 → 961 .79 = 75919 , голямо число m ≥ 7 не е решение

VII. a = 7 e = 8, t = 1,6 (1)

e = 6, t = 1 (2)

e = 9, t = 1 (3)


(1.1) 871 . m8 = 7liv8

m = 9 → 871 .98 = 86158 , голямо число m ≥ 9 не е решение


(1.2) 876 . m8 = 7liv8

m = 9 → 876 .98 = 85848 , голямо число m ≥ 9 не е решение


(2) 671 . m6 = 7liv6

m = 9 → 671 .96 = 65016 , малко число m ≤ 9 не е решение


(3) 971 . m9 = 7liv9

m = 6→ 971 .69 = 66999 , не

m = 8→ 971 .89 = 86419 , голямо число m ≥ 8 не е решение

VIII. a = 8e = 9, t = 1 (1)

e = 7, t = 1 (2)

(1) 981 . m9 = 8liv9

m = 7 → 981 .79 = 77499 , малко число m ≤ 7 не е решение
(2) 781 . m7 = 8liv7

m = 9→ 781 .97 = 75757 , малко число m ≤ 9 не е решени



Втори начин за решаване на задачата чрез компютърна програма – итеративно пробване на всички възможни стойности на числата e,a, t, m, l, i, v:

int main(int argc, char* argv[])

{

FILE *ResultFile; //създаване на структура за работа с файл



int e,a,t,m,l,i,v, eat, me, alive, NumberResult; // деклариране на променливи

ResultFile = NULL; //инициализация на структирата FILE. Указва невалидни данни

ResultFile = fopen("Result.txt","wt"); //създава и отваря текстов файл Result.txt за писане

if(ResultFile == NULL) // проверка дали е създаден този файл

{

printf("Cannot create Result.txt file"); // ако не – изписва грешка



}

else


{

eat = 0; // начално строиности на променливите

me = 0;

alive = 0;



NumberResult = 0;

printf("Find all the possible solutions of: eat*me = alive!\n"); // съобщение поясняващо целта на програмата

for(e = 1; e < 10; e++) //вграден цикъл на 7 нива, който пробва всички възможни комбинации на числата.

{

printf("->%d\r\n",e); // съобщение до къде е стигнала програмата.



for(a = 1; a < 10; a++)

for(t = 0; t < 10; t++)

for(m = 1; m < 10; m++)

for(l = 0; l < 10; l++)

for(i = 0; i < 10; i++)

for(v = 0; v < 10; v++)

{

eat = ((100*e) + (10*a) + t ); // изчисляване на стойността на eat



me = ((10*m) + e) ; // изчисляване на стойността на me

alive = ((10000*a)+(1000*l)+(100*i)+(10*v) + e ); // изчисляване на стойността на alive

// проверка дали всикчи условия на задата са изпълнени

if( (eat * me == alive) &&

(e!=a) && (e!=t)&& (e!=m)&& (e!=l)&& (e!=i)&& (e!=v) &&

(a!=t)&& (a!=m)&& (a!=l)&& (a!=i)&& (a!=v) &&

(t!=m)&& (t!=l)&& (t!=i)&& (t!=v) &&

(m!=l)&& (m!=i)&& (m!=v) &&

(l!=i)&& (l!=v) &&

(i!=v)


)

{

NumberResult++; // брояч - показва колко решения има задачата



printf("A possible result of (e,a,t,m,l,i,v) is: [%d , %d , %d , %d , %d , %d , %d]\r\n",e,a,t,m,l,i,v); // изписва резултата върху екрана

fprintf(ResultFile,"%d:A possible result of (e,a,t,m,l,i,v) is: [%d , %d , %d , %d , %d , %d , %d]\r\n",NumberResult,e,a,t,m,l,i,v); // записва резултата във файла Result.txt


}

}

}



}
fclose(ResultFile); // записва и затваря файла Result.txt

return 0;



}

Резултат от изпълнението на горната компютърна програма:
1:A possible result of (e,a,t,m,l,i,v) is: [4 , 3 , 1 , 8 , 6 , 2 , 0]
2:A possible result of (e,a,t,m,l,i,v) is: [5 , 1 , 7 , 3 , 8 , 0 , 9]
3:A possible result of (e,a,t,m,l,i,v) is: [5 , 2 , 9 , 4 , 3 , 8 , 0]
4:A possible result of (e,a,t,m,l,i,v) is: [5 , 3 , 1 , 7 , 9 , 8 , 2]
5:A possible result of (e,a,t,m,l,i,v) is: [5 , 3 , 7 , 6 , 4 , 9 , 0]

ИЗВОД:

Получаваме същите решения, както от първия начин чрез изчерпване, следователно получените отговори са верни. Вторият начин е по-бърз.

Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница