Re: Задача междинна (Бикове И Крави)
Нещо май не съм разбрал условието. Според мен няма такова число.
Най-голямото е 9876 което има произведение 3024. Т.е. онова с 4 крави задължително има цифра 0,1 или 2 (защото от произведението се вади нещо си). 0 не може да има - произведението е 0 - става отрицателно. Остава 1 и 2. Но 2х7х8х9=1008.
Извод такова животно няма :shocked:
//едит
Леле какво съм чел....като дявола евангелието... :huh:
За каки съм си мислел, а не за крави............. ;)
Re: Задача междинна (Бикове И Крави)
Не е това условието.
Пример: ако числото е 1073.
То се получава от 37.29
(37 + 29 = 66)
Та, условието е:
1073 - 66 - (1.0.7.3.6.6)/2 = 1007.
Ако това 1007 и 1073 имаха 4 крави (а не 1 крава и 2 бика), щеше да е решение.
//
Аз мога да добавя само, че ако M = 2, тогава K се дели на 4.
От това получавам, че L е нечетно, значи P има поне една нечетна цифра, значи N има поне една цифра >=5...
А ако и M и N са нечетни прости, тогава нашето число завършва на 1, 3, 7 или 9.
Re: Задача междинна (Бикове И Крави)
Стигам до простия извод, че не може да има 0 нито в произведението M.N, нито в сбора M+N (обезсмисля се полупроизведението) и M.N не може да започва с 1, защото кравите ще трябва да започват с 0, а 0 не може да участва.
Но са прекалено много възможностите и защо е единствено решението - нямам идея. :huh:
//Едното просто число не може да е 2, защото полупроизведението става много голямо.
Остава да търсим нечетно число, без нули, незапочващо с 1, с различни цифри. :081:
Re: Задача междинна (Бикове И Крави)
17 * 127 = 2159 - отговорът
числото с кравите е 1295
Ето как го реших това:
код:
Код:
List = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73,
79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163,
167, 173, 179, 181, 191, 193, 197, 199] &
take_result (List, Result)
take_result ([], "error") :-
!
;
take_result ([Numb | Tail], Result) :-
Result = compute list ([Product, Numb, Elmt]) where
(
m:lst.member (Tail, Elmt) &
Product == Numb * Elmt &
Product >= 1000 &
Product <= 9999 &
Sum == Numb + Elmt &
get_mult_digits (Product, Dig_Prod) &
get_mult_digits (Sum, Dig_Sum) &
CowsBulls == Product - Sum - ?(Dig_Prod * Dig_Sum) / 2 &
CowsBulls >= 1000 &
CowsBulls <= 9999 &
compare_cows (Product, CowsBulls, Cows) &
Cows = 4
) &
Result <> [] &
!
;
take_result ([Numb | Tail], Result) :-
take_result (Tail, Result)
;
get_mult_digits (Number, Res) :-
Num_str = to_str (Number) &
Res = compute product (Digit) where
(
m:type.enum_nbr (1, ?:str.length (Num_str), Pos) &
Digit_str = :str.sub (Num_str, Pos, 1) &
Digit = to_integer (Digit_str)
)
;
compare_cows (Product, CowsBulls, Cows) :-
get_number_as_list (Product, Prod_ls) &
get_number_as_list (CowsBulls, Cows_ls) &
Cows = compute number where
(
m:lst.member (Cows_ls, [Digit, Pos1]) &
t:lst.member (Prod_ls, [Digit, Pos2]) &
Pos1 <> Pos2
)
;
get_number_as_list (Number, Numb_ls) :-
Numb_str = to_str (Number) &
Numb_ls = compute list ([Digit, Pos]) where
(
m:type.enum_nbr (1, ?:str.length (Numb_str), Pos) &
Digit_str = :str.sub (Numb_str, Pos, 1) &
Digit = to_integer (Digit_str)
)
;
И задачка в задачката - на какъв език е писано това :yahoo:
За Result се получава [2159, 17, 127] на изхода.
Re: Задача междинна (Бикове И Крави)
Това решение е твърде силово, но пък можем да го използваме за жокер.
Сумата е 144. Което се дели на 9. И има цифра, кратна на 4.
Нещо такова би трябвало да можем да получим, но не ми е ясно как.
Сигурна съм, че задачата е решима и в общия случай.
Re: Задача междинна (Бикове И Крави)
Да, браво Edin_Lud - но не знаeм как се решава задачата т.е. защо е единствено решението.
Дали не може да ограничим цифрите. Така малко е на налучкване.
Интересно е дали има други 2 числа ( а очевидно и повече) които да отговарят на условията, но да не са прости.
Казвам "браво", защото ми спести търсенето на числата. Не е негативно! Това , че вече ги знаем е напредък, но не пречи да помислим още.
Re: Задача междинна (Бикове И Крави)
Че е единствено за четирицифрено търсено число, съм го доказал емпирично. Нямам и най-малка представа как да се реши теоретично задачата. Затова и си позволих да тръгна да пиша код - нещо, което и аз не смятам за коректно. Не съм го направил за браво, а за удоволствие...пък и да размърдам малко раздела
Re: Задача междинна (Бикове И Крави)
Yesh, @Edin_Lud прав си като прав маяк.* :033:
А оновато? Пролог? Лисп?
По въпроса на Wise - наистина е интересно намирането на отговор.
Re: Задача междинна (Бикове И Крави)
Да, но дали не е по възможностите на "осемцифрените" само................... :shocked:
Не съм от тях , как Сийке и не ги обичам тея работи, ама едни хора като Bibi, Edin_Lud, InfiniteChaos..............
и други..............................
ма праят да са имам кат говедо сред себеподобни......... :)