Uģis Lācis Aprīlis 21, 2012 Share Aprīlis 21, 2012 Draugi - flame off! [..] Jā, nu šeit konkrētas cīņas panesās... Šoreiz gan daļai varētu kremt tas, ka kāds cits ieraudzija vienkāršo algoritmu, uzrakstīja un ātri atkoda uzdevumu. Tāda neliela skaudība, ja varam tā izteikties. Gan jāatzīst, ka saprotama un dabiska, jo "loģikas" un "domājamā" uzdevumā pielietot datoru un pilno pārlasi šķiet tāds "daļēji tīrs" piegājiens. Es tik pēdējo komentāru ierakstīšu par šo: [..]Izdomāt labu modifikāciju - miskuzi, to manuprāt var jebkurš, kuram ir kaut cik prāta. Šoreiz nevarētu šim piekrist. Ja mazām problēmām pilnā pārlase strādā saprātīgā laikā, tad lielām nē.. Un Dead Beef jau pareizi atsaucās uz NP problēmām. Tā kā laba modifikācija - var nebūt nemaz tik vienkāršs uzdevums. Link to comment Share on other sites More sharing options...
wilz Aprīlis 21, 2012 Share Aprīlis 21, 2012 Kamēr gaidāt pirmdienu, varbūt kāds uz ātro grib atrisināt 3. klases matemātikas mājasdarbu? Anniņa ir sakrājusi 222 santīmus. 5-santīmnieki un 2-santīmnieki. Kopā ir 66 monētas. Cik ir 5-santīmnieku un cik 2-santīmnieku? Link to comment Share on other sites More sharing options...
Леший Aprīlis 21, 2012 Share Aprīlis 21, 2012 P.S. - ja mēs atgrieztos pie šī uzdevuma, tad jau pie n = 12 austeres algoritms (skripts) nebutu izmantojams. Teorētiski var saīsināt uzdevumu. Konkrēti, šajā piemērā 7 1 7 8 1 1 = 27 bija vairāk ka skaidrs, ka ir jāmeklē 7 1 7 8 1 = 28, nu vismaz šo varēja apgalvot ar diezgan lielu varbūtību. Link to comment Share on other sites More sharing options...
binary Aprīlis 21, 2012 Share Aprīlis 21, 2012 (labots) Anniņa ir sakrājusi 222 santīmus. 5-santīmnieki un 2-santīmnieki. Kopā ir 66 monētas. Cik ir 5-santīmnieku un cik 2-santīmnieku? 30*5 + 36*2 p.s. tx 5 (var droši samazināt līdz 3) šūnām iekš ms excel (blush) Labots Aprīlis 21, 2012 - binary Link to comment Share on other sites More sharing options...
Леший Aprīlis 21, 2012 Share Aprīlis 21, 2012 Kamēr gaidāt pirmdienu, varbūt kāds uz ātro grib atrisināt 3. klases matemātikas mājasdarbu? Anniņa ir sakrājusi 222 santīmus. 5-santīmnieki un 2-santīmnieki. Kopā ir 66 monētas. Cik ir 5-santīmnieku un cik 2-santīmnieku? x+y=66 5x+2y=222 x=66-y 330-5y+2y=222 -3y=-108 y=36 x=66-36=30 1 Link to comment Share on other sites More sharing options...
wilz Aprīlis 21, 2012 Share Aprīlis 21, 2012 Kā jūs domājiet, tas trešklasniekam ir pa spēkam? Link to comment Share on other sites More sharing options...
binary Aprīlis 21, 2012 Share Aprīlis 21, 2012 (labots) Trešās klases vielu neatceros, bet domāju, ka jā Spraužam mērķus augstāk! p.s. ja palīdzi viņam, tad galvenais - nevis iedod risinājumu, bet "izdomā kopā ar viņu" Labots Aprīlis 21, 2012 - binary Link to comment Share on other sites More sharing options...
Uģis Lācis Aprīlis 21, 2012 Share Aprīlis 21, 2012 (labots) Trešās klases vielu neatceros[..] Nu, manā laikā, manuprāt, divu vienādojumu sistēmas (kaut vai tik primitīvas) 3. klasē vēl nebija... Jautājums, kas bērnam ir mācīts un kas ir mācību vielā. Var jau mēģināt apiet šo te ar kaut kādiem šādiem spriedumiem (pieņemot, ka 3. kalsē ir operācijas ar daļskaitļiem!?): 222 izdalam ar 5+2 222/7 = 31.714285714 Redz, ka rezultāts ir tuvs 66/2 = 33, tad attiecība starp 5 un 2 santīmniekiem ir tuva ~ 1:1, tad var pārbaudīt kombinācijas: 29 37; 30 36; 31 35 utt. Bet - šis, visticamāk, ir sarežģītāk, nekā iemācīt vienkāršākās operācijas ar x un y. EDIT: Ok, šajā gadījumā var vienkārši sākt un pārbaudīt 33*5 + 33*2 = ? = 231 Redz, ka pa daudz, samazina 5santīmnieku skaitu, palielina 2santīmnieku skaitu. 32*5 + 34*2 = ? = 228 31*5 + 35*2 = ? = 225 30*5 + 36*2 = ? = 222 Voilā. Šis varētu strādāt, vienkārša pieeja, bet ja atbilde nav tuvu 33 33, tad aizņems ilgu laiku, tomēr līdz galam tiks. Labots Aprīlis 21, 2012 - Uģis Lācis Link to comment Share on other sites More sharing options...
binary Aprīlis 21, 2012 Share Aprīlis 21, 2012 Manā laikā daļskaitļi, šķiet, bija vēlākās klasēs. Kaut ko pa miglai atceros, ka "nejauši sapratu" kaut kādas parastās darbības ar daļskaitļiem pirms tas vēl bija mācību vielā, un tas laikam notika vismaz 5. klasē (sākot ar 5. klasi, bijām pārcelti uz citu skolu un pie citiem skolotājiem, jo vecajā skolā mācīja tikai pirmās 4 klases). Link to comment Share on other sites More sharing options...
wilz Aprīlis 21, 2012 Share Aprīlis 21, 2012 Man liekas, ka šis uzdevums ir kļūdas pēc ielikts 3. kasē. Pats 3. klasē gāju 1980. gadā, var jau būt, ka līmenis ir cēlies. Link to comment Share on other sites More sharing options...
Леший Aprīlis 21, 2012 Share Aprīlis 21, 2012 Pašlaik prastākus vienādojumus māca tikai 4. klasē. Šī ir vai nu kļūda, vai arī viņi gaida, ka bērns meklēs atbildi bruteforce veidā, vai arī šī klase ir speciāli tiem, kas labi rubī matemātiku. Link to comment Share on other sites More sharing options...
wilz Aprīlis 21, 2012 Share Aprīlis 21, 2012 Šis uzdevums bija manai meitai, mācās parastā vidusskolā, parastā 3. klasē, bez "novirzēm un novirzieniem" Link to comment Share on other sites More sharing options...
0xDEAD BEEF Aprīlis 22, 2012 Author Share Aprīlis 22, 2012 (labots) Tādēļ, ka jūs nepareizi risinat to uzdevumu! Es redzēju līdzīgu 3šajai klasei, bet ar 3 nezināmiem (btw). x+y=66 5x+2y=222 šeit jārīkojas savādāk. 1) 2x + 2y = 132 5x + 2y = 222 2) 5x + 2y - (2x + 2y) = 222 - 132 3x = 90; x = 30; 3) 60 + 2y = 132 2y = 72 y = 36 Beefs Labots Aprīlis 22, 2012 - 0xDEAD BEEF Link to comment Share on other sites More sharing options...
Uģis Lācis Aprīlis 22, 2012 Share Aprīlis 22, 2012 (labots) [..]šeit jārīkojas savādāk.[..] Ta labi. Un ar ko Tavs atrisinājums ir labāks/vienkāršāks/skaistāks? Tā metode, ko pielietoji tu, vispārīgā gadījumā saucas "mainīgo izslēgšanas metode" vai "Gausa metode". Man viņu mācīja >= 7. klasē. Pielietojot 3 līdz 5, moš vairāk mainīgajiem. Parasti gan izslēdzām pirmos mainīgos vispirms, bet tu izvēlējies izslēgt otro. Arī derīgs variants. Labots Aprīlis 22, 2012 - Uģis Lācis Link to comment Share on other sites More sharing options...
0xDEAD BEEF Aprīlis 22, 2012 Author Share Aprīlis 22, 2012 Vienkārši skolā tā māca risināt šitos uzdevumus! Beefs Link to comment Share on other sites More sharing options...
Uģis Lācis Aprīlis 22, 2012 Share Aprīlis 22, 2012 Nu māca ta māca, bet jautājums, vai mūsdienās to dara 3. klasē. Link to comment Share on other sites More sharing options...
0xDEAD BEEF Aprīlis 22, 2012 Author Share Aprīlis 22, 2012 Tur jau tas āķis! Tieši tā to dara 3šajā klasē! Viņiem nemāca izteikt x. Viņiem māca ka šitos vienādojumus risināt saskaitot/atņemot tā, lai pazūd mainīgajiem. Beefs Link to comment Share on other sites More sharing options...
Grossmeister Aprīlis 23, 2012 Share Aprīlis 23, 2012 Man vispār škiet sarežģiti saprotamā valodā izskaidrot šī uzdevuma risinājumu trešklasniekam , kaut gan uz doto brīdi nezinu , kas viņiem tur jau būtu samācīts . Man gan te lūdza palīdzību dažu trešklasnieku uzdevumi risināšanā , bet tie bija stipri vienkāršāki , jo nebija no vispārizglītojošās skolas kursa . Link to comment Share on other sites More sharing options...
nemirst Aprīlis 29, 2012 Share Aprīlis 29, 2012 Konkurss, protams, beidzies, bet izskatījās interesants un manām zemajām spējām atbilstošs uzdevums, tāpēc patrenējos pythonā. def get_comb_list(parts, count): if count == 1: return parts less_comb_list = get_comb_list(parts, count - 1) comb_list = [] for p in parts: for i in range(len(less_comb_list)): comb_list.append(p + less_comb_list[i]) return comb_list # http://www.hlevkin.com/Shell_progr/hellopython.htm def perm(l): # Compute the list of all permutations of l if len(l) <= 1: return [l] r = [] # here is new list with all permutations! for i in range(len(l)): s = l[:i] + l[i+1:] p = perm(s) for x in p: r.append(l[i:i+1] + x) return r def evaluate(priorities, operators, nums): priorities = list(priorities) operators = list(operators) nums = list(nums) res = None i = 0 while priorities: idx_p = priorities.index(i) op = operators[idx_p] num1 = nums[idx_p] num2 = nums[idx_p + 1] nums.pop(idx_p) priorities.pop(idx_p) operators.pop(idx_p) i += 1 try: res = nums[idx_p] = eval(str(float(num1)) + str(op) + str(float(num2))) except: break return res def solve(ops, nums, total): op_list = get_comb_list(ops, len(nums) - 1) op_prior_list = perm(range(len(nums) - 1)) for operators in op_list: for priorities in op_prior_list: res = evaluate(priorities, operators, nums) if res and abs(res - total) < 0.00001: print nums, priorities, operators ops = [['+'], ['-'], ['*'], ['/']] nums = [7, 1, 7, 8, 1, 1] total = 27 #nums = [2, 9, 4, 6, 4] #total = 29 solve(ops, nums, total) Skripts izvada secīgi darbības, kuras jāievieto starp skaitļiem kā ar to izpildes prioritāti (0 - darbību skaits). Permutāciju funkcija nav mana, jo bija grūti izdomāt uz ātro. Link to comment Share on other sites More sharing options...
bubu Aprīlis 29, 2012 Share Aprīlis 29, 2012 (labots) Permutācijām pitonā ir iebūvēta standartbibliotēkas funkcija. Ar šādu kodu var aizstāt visu tavu perm funkciju: import itertools perm = itertools.permutations Tik to nevar piešķirt kā listu, tas atgriež ģeneratoru. Tāpēc to labāk lietot for izteiksmē: for priorities in itertools.permutations(range(len(nums)-1): un get_comb_list fjas vietā arī var izmantot iebūvētas fjas: def get_comb_list(parts): for n in xrange(len(parts)+1): for c in itertools.combinations(parts, n): yield c Būs īsāks un saprotamāks kods Labots Aprīlis 29, 2012 - bubu Link to comment Share on other sites More sharing options...
nemirst Aprīlis 29, 2012 Share Aprīlis 29, 2012 Wow, labs - notestēšu. Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!