|
|
A074890
|
|
Decimal form of binary integers produced by a modified version of Wolfram's Rule 30 one-dimensional cellular automaton.
|
|
4
|
|
|
1, 3, 6, 13, 25, 55, 100, 222, 401, 891, 1602, 3559, 6428, 14258, 25647, 56936, 102860, 228154, 410339, 910998, 1645813, 3650437, 6565453, 14576121, 26332935, 58407052, 105047514, 233217299, 421327294, 934513441, 1680759539
(list;
graph;
refs;
listen;
history;
text;
internal format)
|
|
|
OFFSET
|
0,2
|
|
COMMENTS
|
According to the common nomenclature (see A110240), this is actually a Rule 86 for all but the least-significant bit, and a Rule 252 for the least-significant bit, because the (fractional) bits right from the binary dot are never set. As a side effect, the first 11 terms--not the 12th--can be reproduced by a(n)=floor(A110240(n)/2^n). [From R. J. Mathar, Apr 29 2009]
|
|
REFERENCES
|
S. Wolfram, A New Kind of Science, Wolfram Media Inc., (2002), p. 27.
|
|
LINKS
|
|
|
FORMULA
|
If b(n) is current binary digit, perform for each digit to get next integer in sequence: b(n) = (b(n)==0 && b(n+1)==0) ? b(n-1) : 1-b(n-1);//Wolfram's Rule 30*
|
|
EXAMPLE
|
a(4)=13 because a(3)=6=0110(binary) and applying Rule 30 to each digit [(b(n)==0 && b(n+1)==0) ? b(n-1) : 1-b(n-1)]
|
|
PROG
|
(Java)
/** Java class to generate sequence */
public class r30seqA { static String zero="0", one="1"; public static void main(String[] args) { int base10 = 1; System.out.println(base10); for(int i=0; i<30; i++) System.out.println(base10 = base10Convert(applyR30(Integer.toBinaryString(base10)))); }
static String applyR30(String base2) { int a0, a1, a2, newDigit; StringBuffer newBase2 = new StringBuffer(); for(int i=-1; i<base2.length(); i++){ if(i<1) a0=0; else a0=base2.substring(i-1, i).equals(zero)?0:1; if(i<0) a1=0; else a1=base2.substring(i, i+1).equals(zero)?0:1; if(i==base2.length()-1) a2=0; else a2=base2.substring(i+1, i+2).equals(zero)?0:1; newDigit = a1==0&&a2==0?a0:1-a0; //Wolfram's Rule 30 newBase2.append(newDigit==0?zero:one); } return newBase2.toString(); }
static int base10Convert(String R30) { int newBase10 = 0; for(int i=0; i<R30.length(); i++) if(!R30.substring(i, i+1).equals(zero)) newBase10 += powerOf2(R30.length()-i-1); return newBase10; }
static int powerOf2(int power) { int p = 1; for(int i=0; i<power; i++) p*=2; return p; } }
|
|
CROSSREFS
|
|
|
KEYWORD
|
base,nonn
|
|
AUTHOR
|
Jason E Sackett (jason(AT)heavyion.com), Sep 13 2002
|
|
EXTENSIONS
|
|
|
STATUS
|
approved
|
|
|
|