Doplňování znamének mezi čísla

Anonym Butymet26.02.2014 21:06 Nahlásit
Mám tam doplnit takové znaménka, tak aby vyšlo číslo 2006. Víto někdo?
1 2 3 4 5 6 7 8 9 = 2006

Odpovědi

Přidat odpověď ▾

Diskuze

Cenobita.26.02.2014 22:23 Nahlásit
zkoušel jsem znaménka: + a * (úloha nemá řešení)

záleží zda používat i znaménka: - a /

???
Vlaďka 9894026.02.2014 22:49 Nahlásit
Šla jsem na to od lesa. :D Rozložila jsem si číslo 2006 na prvočinitele: 17 * 59 * 2
Je jasné, že 9+8 = 17 a 2*1 = 2, teď už zbývalo jen podniknout něco s čísly 7, 6, 5, 4, 3 tak, aby dala 59, což už bylo jednoduché. A výsledek?
1 * 2 * (3 * 4 + 5 + 6*7) * (8 + 9) = 2006
Anonym Xewerob26.02.2014 23:50 Nahlásit
Velmi fikané! :-)

Zkoušel jsem to z hecu hrubou silou; a bez závorek, jen se znaménky +-*/, to opravdu nemá řešení. Ani když se "nic" mezi číslicemi chápe jako víceciferné číslo (pouhých 390625 možností).

Otázka je, zda je zadání dobře formulováno, závorce bych asi neříkal "znaménko" :-(
Cenobita.27.02.2014 10:13 (Upr. 27.02.2014 10:14) Nahlásit
OK ale o závorkách tam nebylo nic řešeno :-) jen o znaménkách.

PS: také testováno hrubou silou, akorát jsem nepoužíval: - a /
Vlaďka 9894027.02.2014 10:15 Nahlásit
Mám pocit, že jinak to nejde a tázající se podle mne neuměl přesně vyjádřit a nechtěl opisovat přesné zadání... :D Mě by zajímalo, zda by to šlo i nějak jinak s užitím těch čísel, např. použít i mocniny, odmocniny... atp.
Anonym Rewyfuc27.02.2014 10:40 Nahlásit
Můžu se pro zajímavost zeptat, jak jste to tou hrubou silou řešili? Napsali jste si program? V jakém jazyce?
Anonym Xewerob27.02.2014 15:28 Nahlásit
jj, prográmek v C#, poměrně stupidní (=bez jakékoli snahy o optimalizaci) - jen 8 vnořených cyklů (pro každou mezeru mezi ciframi jeden), každý od 0 do 4, kde následující switch nahradil nulu "ničím" (odpovídající dvě číslice "srostly") a hodnoty 1-4 postupně čtyřmi znaménky. Takže se vystřídaly všechny myslitelné kombinace těch číslic a znamének.

Na výsledný text se pak v každém cyklu poštval VBScript parser, který to vyhodnotil jako výraz a zkusilo se, jestli výsledek je "2006".

Na mém středně výkonném notebooku kolem 1 s času (na jednom jádře, nedělal jsem to na více vláken :-).

Jakmile by ale přibyly i závorky, velmi by se to zkomplikovalo syntakticky i časově, to už jsem nepokoušel :-)
Anonym Xewerob27.02.2014 19:17 Nahlásit
jj, letos to jde líp :-)

123+45*6*7-8+9 jediný výsledek bez závorek

1234+5*(67+89)
123+45*6*7-(8-9)
1+(234+56)*7-8-9
1+(2+345)*6-78+9
1-2+(34-5)*67+8*9
1-2+(3+45)*6*7+8-9
1-2+3+4*(5-6+7*8*9)
1-2*3+(4*5+6)*78-9
1-2*3-(4-5*6)*78-9
1-2*3*(4-5-6*7*8)-9
(1*2+3+45*6)*7+89

a jako bonus se našly i dva, ve kterých je i to dělení:

1+(2/3+4*56+7-8)*9
(1/2+34)*56-7+89
Anonym Xewerob27.02.2014 19:53 Nahlásit
K tomu není důvod, to všechno odřeli trpajzlíci vevnitř počítače :-)

Ovšem když si představím, co všechno tam museli seskládat a přeskládat, aby to dali dohromady, tak asi smekám taky... Jak tam tak hopsají, každý hopsne asi 2.5 miliardkrát za sekundu. A trvalo jim to asi 3 minuty.

A stejně tam asi není všechno, ty závorky fungují trochu "divně", ten program byl opravdu jen tak narychlo...
Přidat komentář do diskuze ▾