add(a,b) = local (s=0); \ local (p=1); \ while (a || b, \ s += p * ( (a+b)%10 ); \ p *= 10; \ a \= 10; \ b \= 10; \ ); \ return (s) { sv = 0; \\ mask of values seen so far ss = 0; \\ mask of carryless sums seen so far s = 0; \\ carryless sum of previous terms lv = 1; \\ least value not yet seen for (n=1, 10 000, v = lv; while (bittest(sv, v)>0 || bittest(ss, add(s,v))>0, v++); s = add(s, v); print (n " " v); sv += 2^v; ss += 2^s; while (bittest(sv, lv)>0, lv++); ) } quit