Thue-Morse: Difference between revisions
Content added Content deleted
Line 14: | Line 14: | ||
t.push_back( 0 ); |
t.push_back( 0 ); |
||
size_t len = 1; |
size_t len = 1; |
||
⚫ | |||
do { |
do { |
||
⚫ | |||
⚫ | |||
for( size_t x = 0; x < len; x++ ) |
for( size_t x = 0; x < len; x++ ) |
||
t.push_back( t[x] ? 0 : 1 ); |
t.push_back( t[x] ? 0 : 1 ); |
||
⚫ | |||
std::cout << "\n"; |
|||
len = t.size(); |
len = t.size(); |
||
} while( len < |
} while( len < 60 ); |
||
return 0; |
return 0; |
||
} |
} |
Revision as of 09:56, 21 September 2015
Thue-Morse is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
Make Thue-Morse sequence.
AWK
<lang AWK>BEGIN{print x="0"} {gsub(/./," &",x);gsub(/ 0/,"01",x);gsub(/ 1/,"10",x);print x}</lang>
C++
<lang cpp>
- include <iostream>
- include <iterator>
- include <vector>
int main( int argc, char* argv[] ) {
std::vector<bool> t; t.push_back( 0 ); size_t len = 1; std::cout << t[0] << "\n"; do { for( size_t x = 0; x < len; x++ ) t.push_back( t[x] ? 0 : 1 ); std::copy( t.begin(), t.end(), std::ostream_iterator<bool>( std::cout ) ); std::cout << "\n"; len = t.size(); } while( len < 60 ); return 0;
} </lang>
- Output:
0 01 0110 01101001 0110100110010110 01101001100101101001011001101001 0110100110010110100101100110100110010110011010010110100110010110
Perl 6
<lang perl6>my @tm := 0, -> *@s { @s.map({ + not $_ }) } ... *;
say @tm[^64].join;</lang>
- Output:
0110100110010110100101100110100110010110011010010110100110010110
SQL
This example is using SQLite. <lang SQL>with recursive a(a) as (select '0' union all select replace(replace(hex(a),'30','01'),'31','10') from a) select * from a;</lang>
zkl
<lang zkl>fcn next(str){ str.pump(str,fcn(c){ (0x61 - c.toAsc()).toChar() }) }</lang> <lang zkl>str:="0"; do(7){ str.println(); str=next(str) }</lang>
- Output:
0 01 0110 01101001 0110100110010110 01101001100101101001011001101001 0110100110010110100101100110100110010110011010010110100110010110