/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ /* [ Created with wxMaxima version 0.8.1 ] */ /* [wxMaxima: title start ] Collecting complete sets [wxMaxima: title end ] */ /* [wxMaxima: comment start ] Finding the waiting time in order to collect a "complete set" by simulation. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Reference: J. Ziegenbalg: Algorithmen von Hammurapi bis Gödel, Verlag Harri Deutsch, Frankfurt a.M. 2007, section 4.5 [wxMaxima: comment end ] */ /* [wxMaxima: section start ] Some tests with list operations [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ L : makelist(j*j, j, 0, 6); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ L; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ L[4]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ apply("+", L); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rest(L); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Some tests with the random generator [wxMaxima: section end ] */ /* [wxMaxima: comment start ] The commands make_random_state and set_random_state serve the purpose of initializing the random number generator; cf. Maxima's help system. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ s1: make_random_state (654321) $ set_random_state (s1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ make_random_state(true) $ random(1000); L2 : []; for i:1 thru 12 do L2 : append(L2, [random(1000)]); L2; /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] The collectors problem [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ verbose : false /* global variable to control printing */ $ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ collector() := block([collector_array, r, i :0 ], make_random_state(true), collector_array : make_array(fixnum, 7), fillarray(collector_array, makelist(0, j, 0, 6)), /* fill collector_array with zeroes */ if verbose then print(rest(listarray(collector_array))), while is(apply("*", rest(listarray(collector_array))) = 0) do (i : i+1 , r : random(6)+1 , collector_array[r] : collector_array[r]+1 , if verbose then print(rest(listarray(collector_array))) ) , [i, rest(listarray(collector_array))] ) ; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ (verbose : true, collector() ); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ collector_array_series(n) := block(L : [], for i:1 thru n do L : append(L, [collector()[1]]), [L, float(apply("+",L)/length(L))] ); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ (verbose : false, collector_array_series(100) ); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ collector_list() := block([SL : [0,0,0,0,0,0], r, i :0 ], make_random_state(true), if verbose then print(SL), while is(apply("*", SL) = 0) do (i : i+1, r : random(6)+1 , SL[r] : SL[r]+1, if verbose then print(SL) ) , [i, SL] ); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ collector_list(); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Some tests with the list operation "apply" [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ apply("*", [1,2,3,4]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ apply("*", []); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ collector_list_series(n) := block(L : [], for i:1 thru n do L : append(L, [collector_list()[1]]), [L, float(apply("+",L)/length(L))] ); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ (verbose : false, collector_list_series(100) ); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ timer(all); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ timer; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ timer_info(); /* [wxMaxima: input end ] */ /* Maxima can't load/batch files which end with a comment! */ "Created with wxMaxima"$