used:=used+[L];
for I:=
10
-L
to
8
do if not (I in used) then begin
used:=used+[I];
for A:=
0
to
8
do if not (A in used) then
if
longint
(V*
10
+O)*
1001
+L*
100
+((
longint
(F)*
10
+I)*
10
+A)*
10
+T=((
longi
nt
(M)*
100
+T)*
10
+
0
*
101
)*
10
+R
then
writeln(V,O,L,V,O,
'+'
,F,I,A,T,
'='
,M,O,T,O,R);
used:=used-[I]
end;
used:=used-[L]
end;
used:=used-[R]
end;
used:=used-[T]
end;
used:=used-[O]
end;
used:=used-[V]
end;
END.
Tanlovni kamaytirilishining amalga oshirish usullari tanlovni kamaytirishdan va amalga
oshirishga yo‘qotishlardan yutuq va nisbatan qoniqarlidir. Biroq dastur asosida reyting aniq
shartini hisobga olish yotadi. Boshqa rebusni yechishda amalga oshirilgan optimallashtirishlar
o‘z ma’nosini yo‘qotadi, shuning uchun analogik munosabatlarni izlashga va dasturni sezilarli
o‘zgartirishga olib keladi. Shuning bilan birga optimallashtirishga yanada umumiy yaqinlashuv
bo‘lishi mumkin. Masalan, R tanlangan emas, balki hisoblangan tasavvurni umumlashtiramiz.
Agarda eng tashqi sikllarda qo‘shiluvchilarning eng chekka o‘ng razryadlarining qiymatlari
keyingilarida-o‘ng tomondagi ikkinchi razryadlarning qiymatlari va shu kabi tanlansa, u holda
summaning mos keluvchi razryadlarining qiymatlari aniq bo‘lib qoladi va ularni tiklash shart
emas. Ushbu g‘oyaning asosiy afzalligi shundaki uni nafaqat bizning masalamizning shartiga,
balki xohlagan boshqasiga qo‘llash mumkin. Agarda masala yanada yuqoriroq darajadagi
universallikka ega bo‘lasada bu g‘oya yaroqli ma’limki, rebus qo‘shiluvchi+qo‘shuvchi=summa
ko‘rinishiga ega, aniq qo‘shiluvchilar va summa dastur bajarilish paytida beriladi.
Taqdim etilgan dasturlarda set of 0..9 tipidagi used o‘zhgaruvchisi ishlatilgan. Buning
o‘rniga used:array(0..9) of Boolean massivini e’lon qilish mumkin edi. U holda
(used:=[]) bo‘sh ko‘plikni initsiallash, massivning barcha elementlariga false qiymatini
taqdim etishini ko‘plikka va a elementni qo‘shish-used[a] elementiga true ni taqdim
qilishni, elementni yo‘qotish -falseni taqdim qilishni, a in used ga mansublikni
tekshirish-used[a] qiymatni qabul qilishini bildiradi.
Set tipi uchun operatsiyalar taxminan shunday bajariladi; uning afzalligi shundaki, u
Paskal tilida bajarilgan va bazaviy ko‘plikning bir elementiga bir baytni emas bitta bitni
ishlatadi. Biroq kamchilik ham mavjud; Paskal tilining barcha amalga oshiriluvchilarida
bazaviy ko‘plik 256 elementdan ko‘p bo‘la olmaydi.
Set tipi yoki massiv yordamida taqdim etilgan ko‘plik ushbu paytda elementlar miqdoriga
emas, bazaviy ko‘plik elementlari miqdoriga proporsional xotira hajmini ishlatadi.
Ko‘plab hollarda (biroq ushbu masalada emas) bu sezilarli kamchilik bo‘lishi mumkin.
Do'stlaringiz bilan baham: