Custom Search

12 Balls game release for caanoo.

I ported my javascript game ‘The 12 Balls Game’ to caanoo and made a new web page for it, The 12 Balls Game.

Also I have made a new download section and add it the latex source of my CV and the 12 Balls game page as a template.

I Should start to clean a little my dev blog…

A few basic Tests…

The next code, is a file that I use to test librfa features, there is tests for cleaning useless states, converting simple non-deterministic automata and call/recursive automata to deterministic representation (when possible).

A automatic report is generated from tested words, a log is presented and a few representation of the resulting automata.

/*
	Test battery for librfa.
	run: ../tools/nrfa/nrfa -p tests_result -rhtml basic.nrfa
*/ 

start q0;
final q1;
q0 q2 -> q1;
q2 'a' -> q1;

#test test_q0 q0
	a
;

#test test_q2 q2
	a
;

start clean_1_q0;
final clean_1_q1;
clean_1_q0 'a' -> clean_1_q1;
clean_1_q1 'b' -> clean_1_q2; 

#test test_clean_1_t1 clean_1_q0
	a
; 

#test test_clean_2_t2 clean_1_q0 fail
	ab
; 

start clean_2_q0;
final clean_2_q1;
clean_2_q0 clean_2_call -> clean_2_q1; 

#test test_clean_2_t1 clean_2_q0 fail
	a
; 

/*
	Test basic sequence.
*/
start abc;
final abc_final;
abc   'a' -> abc_b;
abc_b 'b' -> abc_c;
abc_c 'c' -> abc_final; 

#test test_abc_1 abc
	abc
; 

#test test_abc_2 abc fail
	a
; 

#test test_abc_3 abc fail
	ab
; 

#test test_abc_4 abc fail
	abd
; 

/*
	Island
*/

island 'a' -> my_island;

/*
	Test island.
*/

#test test_island island fail
	a
;

/*
	Det
*/

start det;
final det1;
final det2;
det 'a' -> det1;
det 'a' -> det2;

#test test_det det
	a
;

start det_ab;
final det_ab_3;
final det_ab_4;
det_ab 'a' -> det_ab_1;
det_ab 'a' -> det_ab_2;
det_ab_1 'b' -> det_ab_3;
det_ab_2 'b' -> det_ab_4;

#test test_det_ab det_ab
	ab
;

/*
	Call
*/
start call_q0;
final call_q1;
call_q0 call_1_q0 -> call_q1; 

start call_1_q0;
final call_1_q1;
call_1_q0 'a' -> call_1_q1;

#test test_call call_q0
	a
;

/*
	Equal Call
*/

start call_2_q0;
final call_2_q1;
final call_2_q2; 

call_2_q0 call_1_q0 -> call_2_q1;
call_2_q0 call_1_q0 -> call_2_q2; 

#test test_2_call call_2_q0
	a
;

/*
	Diferent call same symbols
*/

start call_3_q0;
final call_3_q1;

call_3_q0 call_abc -> call_3_q1;
call_3_q0 call_abcd -> call_3_q1;

start call_abc;
final call_abc_q3;
call_abc 'a' -> call_abc_q1;
call_abc_q1 'b' -> call_abc_q2;
call_abc_q2 'c' -> call_abc_q3;

start call_abcd;
final call_abcd_q4;
call_abcd 'a' -> call_abcd_q1;
call_abcd_q1 'b' -> call_abcd_q2;
call_abcd_q2 'c' -> call_abcd_q3;
call_abcd_q3 'd' -> call_abcd_q4;

#test test_call_3_1 call_3_q0
	abc
;

#test test_call_3_2 call_3_q0
	abcd
;

/*
	call at diferent level.
*/
start statename;
final statename_q1;
statename 'a' -> statename_q1 $saveChar;
statename_q1 digit -> statename_q1 $saveChar;

start digit;
final digit_q1;
digit '0' -> digit_q1 $saveChar; 

#test test_digit digit
	0
;

#test test_statename statename
	a
;

#test test_statename_2 statename
	a0
;

/*
	Call determinism
*/ 

/*
	zero_ab
*/
start zero_ab;
final zero_ab_q1;
zero_ab zero_a -> zero_ab_q1 $saveCall;
zero_ab zero_b -> zero_ab_q1 $saveMin;

#test test_zero_ab_1 zero_ab
	00
;

#test test_zero_ab_2 zero_ab
	000
;

/*
	a
*/
start zero_a;
final zero_a_q1;
zero_a '0' -> zero_a_q1 $saveChar;
zero_a_q1 '0' -> zero_a_q1 $saveChar;

#test test_zero_a_1 zero_a
	00
;

#test test_zero_a_2 zero_a
	000
;

/* ----
	zero_b
*/
start zero_b;
final zero_b_q1;
zero_b '0' -> zero_b_q1 $saveb;
zero_b_q1 '0' -> zero_b_q1 $saveb; 

#test test_zero_b_1 zero_b
	000
;

#test test_zero_b_2 zero_b
	00
;

/*
	aa rule
*/
start aa_rule;
final aa_rule_qf4;
final aa_rule_s5;
aa_rule 'a' -> aa_rule_qf1;
aa_rule_qf1 'a' -> aa_rule_qf2;
aa_rule_qf2 ' ' -> aa_rule_qf3;
aa_rule_qf3 a_kleene_star -> aa_rule_qf4; 

aa_rule a_kleene_star -> aa_rule_s1;
aa_rule_s1 ' ' -> aa_rule_s2;
aa_rule_s2 a_kleene_star -> aa_rule_s3;
aa_rule_s3 ' ' -> aa_rule_s4;
aa_rule_s4 a_kleene_star -> aa_rule_s5;

start a_kleene_star;
final a_kleene_star_q1;
a_kleene_star 'a' -> a_kleene_star_q1 $saveChar;
a_kleene_star_q1 'a' -> a_kleene_star_q1 $saveChar;

#test test_final aa_rule
	aa aaa
;

#test test_state aa_rule
	aa a aa
;

#test test_state2 aa_rule
	aaa aaa aaa
;

/*
	zero_one_ab.
*/
start zero_one_ab;
final zero_one_ab_q1;
final zero_one_ab_q2;
zero_one_ab zero_one_a -> zero_one_ab_q1 $saveCall;
zero_one_ab zero_one_b -> zero_one_ab_q2 $saveMin;

#test test_zero_one_ab_1 zero_one_ab
	00
;

#test test_zero_one_ab_2 zero_one_ab
	000001001000
;

/*
   zero_one (0/1)
*/
start zero_one_a;
final zero_one_a_q1;
zero_one_a '0' -> zero_one_a_q1 $saveChar;
zero_one_a_q1 '0' -> zero_one_a_q1 $saveChar;
zero_one_a_q1 '1' -> zero_one_a_q1 $saveChar;

#test test_zero_one_a_1 zero_one_a
	001010
;

#test test_zero_one_a_2 zero_one_a
	000
;

/* ----
	zero_one_b 0*
*/
start zero_one_b;
final zero_one_b_q1;
zero_one_b '0' -> zero_one_b_q1 $saveb;
zero_one_b_q1 '0' -> zero_one_b_q1 $saveb; 

#test test_zero_one_b_1 zero_one_b
	000
;

#test test_zero_one_b_2 zero_one_b
	00
;

Tests Total:34
Tests Fail:0

RFA Test Name Should Fail Text Acepted Pass Text Log GraphViz
q0 test_q0 no yes yes a tests_result_q0_test_q0_log_test.html q0_det.svg
q2 test_q2 no yes yes a tests_result_q2_test_q2_log_test.html q2_det.svg
clean_1_q0 test_clean_1_t1 no yes yes a tests_result_clean_1_q0_test_clean_1_t1_log_test.html clean_1_q0_det.svg
clean_1_q0 test_clean_2_t2 yes no yes ab tests_result_clean_1_q0_test_clean_2_t2_log_test.html clean_1_q0_det.svg
clean_2_q0 test_clean_2_t1 yes no yes a tests_result_clean_2_q0_test_clean_2_t1_log_test.html clean_2_q0_det.svg
abc test_abc_1 no yes yes abc tests_result_abc_test_abc_1_log_test.html abc_det.svg
abc test_abc_2 yes no yes a tests_result_abc_test_abc_2_log_test.html abc_det.svg
abc test_abc_3 yes no yes ab tests_result_abc_test_abc_3_log_test.html abc_det.svg
abc test_abc_4 yes no yes abd tests_result_abc_test_abc_4_log_test.html abc_det.svg
island test_island yes no yes a tests_result_island_test_island_log_test.html island_det.svg
det test_det no yes yes a tests_result_det_test_det_log_test.html det_det.svg
det_ab test_det_ab no yes yes ab tests_result_det_ab_test_det_ab_log_test.html det_ab_det.svg
call_q0 test_call no yes yes a tests_result_call_q0_test_call_log_test.html call_q0_det.svg
call_2_q0 test_2_call no yes yes a tests_result_call_2_q0_test_2_call_log_test.html call_2_q0_det.svg
call_3_q0 test_call_3_1 no yes yes abc tests_result_call_3_q0_test_call_3_1_log_test.html call_3_q0_det.svg
call_3_q0 test_call_3_2 no yes yes abcd tests_result_call_3_q0_test_call_3_2_log_test.html call_3_q0_det.svg
statename test_statename no yes yes a tests_result_statename_test_statename_log_test.html statename_det.svg
statename test_statename_2 no yes yes a0 tests_result_statename_test_statename_2_log_test.html statename_det.svg
digit test_digit no yes yes 0 tests_result_digit_test_digit_log_test.html digit_det.svg
zero_ab test_zero_ab_1 no yes yes 00 tests_result_zero_ab_test_zero_ab_1_log_test.html zero_ab_det.svg
zero_ab test_zero_ab_2 no yes yes 000 tests_result_zero_ab_test_zero_ab_2_log_test.html zero_ab_det.svg
zero_a test_zero_a_1 no yes yes 00 tests_result_zero_a_test_zero_a_1_log_test.html zero_a_det.svg
zero_a test_zero_a_2 no yes yes 000 tests_result_zero_a_test_zero_a_2_log_test.html zero_a_det.svg
zero_b test_zero_b_1 no yes yes 000 tests_result_zero_b_test_zero_b_1_log_test.html zero_b_det.svg
zero_b test_zero_b_2 no yes yes 00 tests_result_zero_b_test_zero_b_2_log_test.html zero_b_det.svg
aa_rule test_final no yes yes aa aaa tests_result_aa_rule_test_final_log_test.html aa_rule_det.svg
aa_rule test_state no yes yes aa a aa tests_result_aa_rule_test_state_log_test.html aa_rule_det.svg
aa_rule test_state2 no yes yes aaa aaa aaa tests_result_aa_rule_test_state2_log_test.html aa_rule_det.svg
zero_one_ab test_zero_one_ab_1 no yes yes 00 tests_result_zero_one_ab_test_zero_one_ab_1_log_test.html zero_one_ab_det.svg
zero_one_ab test_zero_one_ab_2 no yes yes 000001001000 tests_result_zero_one_ab_test_zero_one_ab_2_log_test.html zero_one_ab_det.svg
zero_one_a test_zero_one_a_1 no yes yes 001010 tests_result_zero_one_a_test_zero_one_a_1_log_test.html zero_one_a_det.svg
zero_one_a test_zero_one_a_2 no yes yes 000 tests_result_zero_one_a_test_zero_one_a_2_log_test.html zero_one_a_det.svg
zero_one_b test_zero_one_b_1 no yes yes 000 tests_result_zero_one_b_test_zero_one_b_1_log_test.html zero_one_b_det.svg
zero_one_b test_zero_one_b_2 no yes yes 00 tests_result_zero_one_b_test_zero_one_b_2_log_test.html zero_one_b_det.svg