static u3_noun _og_list(u3_noun a, u3_noun b, u3_noun c) { u3_noun l = u3_nul; if ( !_(u3a_is_cat(b)) ) { return u3m_bail(c3__fail); } while ( 0 != b ) { u3_noun x = u3qc_mix(a, c); u3_noun y = u3qc_mix(b, x); u3_noun d = u3qe_shas(c3_s4('o','g','-','b'), y); u3_noun m; u3z(x); u3z(y); if ( b < 256 ) { u3_noun e = u3qc_end(0, b, d); u3z(d); m = u3nc(b, e); b = 0; } else { m = u3nc(256, d); c = d; b -= 256; } l = u3nc(m, l); } return u3kb_flop(l); }
// extract lcs // static u3_noun _lexs(u3_loss* loc_u) { if ( 0 == loc_u->kct_w ) { return u3_nul; } else return u3kb_flop(_lext(loc_u, loc_u->kad[loc_u->kct_w - 1])); }
/* functions */ u3_noun u3qb_scag( u3_atom a, u3_noun b) { if ( !_(u3a_is_cat(a)) ) { return u3m_bail(c3__fail); } else { u3_noun acc; c3_w i_w = a; if ( !i_w ) return u3_nul; while ( i_w ) { if ( c3n == u3du(b) ) { return u3_nul; } acc = u3i_cell( u3h(b), acc ); b = u3t(b); i_w--; } return u3kb_flop(acc); } }
// compute lcs // static void _loss(u3_loss* loc_u) { while ( u3_nul != loc_u->hel ) { u3_noun i_hel = u3h(loc_u->hel); u3_noun guy = u3kdb_get(u3k(loc_u->sev), u3k(i_hel)); if ( u3_none != guy ) { u3_noun gay = u3kb_flop(guy); _merg(loc_u, 0, gay); u3z(gay); } loc_u->hel = u3t(loc_u->hel); } }
static u3_noun _play_loc_term(u3_noun van, u3_noun loc) { u3_noun fop = u3kb_flop(u3k(u3h(loc))); u3_noun nam = ((0 == fop) ? c3__none : u3k(u3h(fop))); u3_noun lys = u3nt(u3k(u3h(u3t(loc))), u3k(u3t(u3t(loc))), u3_nul); u3_noun rup = u3nc(nam, lys); c3_c* pre_c = u3m_pretty(rup); u3_noun pro = u3i_string(pre_c); u3z(fop); u3z(rup); free(pre_c); return pro; }
/* _sist_suck(): past failure. */ static void _sist_suck(u3_noun ovo, u3_noun gon) { uL(fprintf(uH, "sing: ovum failed!\n")); { c3_c* hed_c = u3r_string(u3h(u3t(ovo))); uL(fprintf(uH, "fail %s\n", hed_c)); free(hed_c); } u3_lo_punt(2, u3kb_flop(u3k(u3t(gon)))); // u3_loom_exit(); #if 1 u3_lo_exit(); exit(1); #else u3z(ovo); u3z(gon); #endif }