Thue-Morse: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (Rename Perl 6 -> Raku, alphabetize, minor clean-up) |
|||
Line 8: | Line 8: | ||
* YouTube entry: [https://www.youtube.com/watch?v=prh72BLNjIk The Fairest Sharing Sequence Ever] |
* YouTube entry: [https://www.youtube.com/watch?v=prh72BLNjIk The Fairest Sharing Sequence Ever] |
||
* YouTube entry: [https://www.youtube.com/watch?v=Tt5TTid6YXk Math and OCD - My story with the Thue-Morse sequence] |
* YouTube entry: [https://www.youtube.com/watch?v=Tt5TTid6YXk Math and OCD - My story with the Thue-Morse sequence] |
||
<br><br> |
<br><br> |
||
=={{header|Ada}}== |
=={{header|Ada}}== |
||
Line 378: | Line 378: | ||
0110100110010110100101100110100110010110011010010110100110010110100101100110100101101001100101100110100110010110100101100110100110010110011010010110100110010110011010011001011010010110011010010110100110010110100101100110100110010110011010010110100110010110 |
0110100110010110100101100110100110010110011010010110100110010110100101100110100101101001100101100110100110010110100101100110100110010110011010010110100110010110011010011001011010010110011010010110100110010110100101100110100110010110011010010110100110010110 |
||
</pre> |
</pre> |
||
=={{header|C sharp|C#}}== |
|||
{{trans|Java}} |
|||
<lang csharp>using System; |
|||
using System.Text; |
|||
namespace ThueMorse |
|||
{ |
|||
class Program |
|||
{ |
|||
static void Main(string[] args) |
|||
{ |
|||
Sequence(6); |
|||
} |
|||
public static void Sequence(int steps) |
|||
{ |
|||
var sb1 = new StringBuilder("0"); |
|||
var sb2 = new StringBuilder("1"); |
|||
for (int i = 0; i < steps; i++) |
|||
{ |
|||
var tmp = sb1.ToString(); |
|||
sb1.Append(sb2); |
|||
sb2.Append(tmp); |
|||
} |
|||
Console.WriteLine(sb1); |
|||
Console.ReadLine(); |
|||
} |
|||
} |
|||
}</lang> |
|||
<pre>0110100110010110100101100110100110010110011010010110100110010110</pre> |
|||
=={{header|C++}}== |
=={{header|C++}}== |
||
Line 409: | Line 440: | ||
0110100110010110100101100110100110010110011010010110100110010110 |
0110100110010110100101100110100110010110011010010110100110010110 |
||
</pre> |
</pre> |
||
=={{header|C#}}== |
|||
{{trans|Java}} |
|||
<lang csharp>using System; |
|||
using System.Text; |
|||
namespace ThueMorse |
|||
{ |
|||
class Program |
|||
{ |
|||
static void Main(string[] args) |
|||
{ |
|||
Sequence(6); |
|||
} |
|||
public static void Sequence(int steps) |
|||
{ |
|||
var sb1 = new StringBuilder("0"); |
|||
var sb2 = new StringBuilder("1"); |
|||
for (int i = 0; i < steps; i++) |
|||
{ |
|||
var tmp = sb1.ToString(); |
|||
sb1.Append(sb2); |
|||
sb2.Append(tmp); |
|||
} |
|||
Console.WriteLine(sb1); |
|||
Console.ReadLine(); |
|||
} |
|||
} |
|||
}</lang> |
|||
<pre>0110100110010110100101100110100110010110011010010110100110010110</pre> |
|||
=={{header|Common Lisp}}== |
=={{header|Common Lisp}}== |
||
Line 515: | Line 515: | ||
0110100110010110100101100110100110010110011010010110100110010110 |
0110100110010110100101100110100110010110011010010110100110010110 |
||
</pre> |
</pre> |
||
=={{header|Elena}}== |
=={{header|Elena}}== |
||
{{trans|C#}} |
{{trans|C#}} |
||
Line 747: | Line 748: | ||
} |
} |
||
}</lang> |
}</lang> |
||
<pre>0110100110010110100101100110100110010110011010010110100110010110</pre> |
|||
=={{header|JavaScript}}== |
|||
===ES5=== |
|||
{{trans|Java}} |
|||
<lang JavaScript>(function(steps) { |
|||
'use strict'; |
|||
var i, tmp, s1 = '0', s2 = '1'; |
|||
for (i = 0; i < steps; i++) { |
|||
tmp = s1; |
|||
s1 += s2; |
|||
s2 += tmp; |
|||
} |
|||
console.log(s1); |
|||
})(6);</lang> |
|||
<pre>0110100110010110100101100110100110010110011010010110100110010110</pre> |
|||
===ES6=== |
|||
<lang JavaScript>(() => { |
|||
'use strict'; |
|||
// THUE MORSE |
|||
// thueMorse :: Int -> String |
|||
let thueMorse = nCycles => range(1, Math.abs(nCycles)) |
|||
.reduce(a => a.concat(a.map(x => 1 - x)), [0]) |
|||
.join(''); |
|||
// GENERIC FUNCTION |
|||
// range :: Int -> Int -> [Int] |
|||
let range = (m, n) => Array.from({ |
|||
length: Math.floor((n - m)) + 1 |
|||
}, (_, i) => m + i); |
|||
// TEST |
|||
return thueMorse(6); |
|||
// 0110100110010110100101100110100110010110011010010110100110010110 |
|||
})(); |
|||
</lang> |
|||
{{Out}} |
|||
<pre>0110100110010110100101100110100110010110011010010110100110010110</pre> |
<pre>0110100110010110100101100110100110010110011010010110100110010110</pre> |
||
Line 799: | Line 847: | ||
6 : 0110100110010110100101100110100110010110011010010110100110010110 |
6 : 0110100110010110100101100110100110010110011010010110100110010110 |
||
</pre> |
</pre> |
||
=={{header|JavaScript}}== |
|||
===ES5=== |
|||
{{trans|Java}} |
|||
<lang JavaScript>(function(steps) { |
|||
'use strict'; |
|||
var i, tmp, s1 = '0', s2 = '1'; |
|||
for (i = 0; i < steps; i++) { |
|||
tmp = s1; |
|||
s1 += s2; |
|||
s2 += tmp; |
|||
} |
|||
console.log(s1); |
|||
})(6);</lang> |
|||
<pre>0110100110010110100101100110100110010110011010010110100110010110</pre> |
|||
===ES6=== |
|||
<lang JavaScript>(() => { |
|||
'use strict'; |
|||
// THUE MORSE |
|||
// thueMorse :: Int -> String |
|||
let thueMorse = nCycles => range(1, Math.abs(nCycles)) |
|||
.reduce(a => a.concat(a.map(x => 1 - x)), [0]) |
|||
.join(''); |
|||
// GENERIC FUNCTION |
|||
// range :: Int -> Int -> [Int] |
|||
let range = (m, n) => Array.from({ |
|||
length: Math.floor((n - m)) + 1 |
|||
}, (_, i) => m + i); |
|||
// TEST |
|||
return thueMorse(6); |
|||
// 0110100110010110100101100110100110010110011010010110100110010110 |
|||
})(); |
|||
</lang> |
|||
{{Out}} |
|||
<pre>0110100110010110100101100110100110010110011010010110100110010110</pre> |
|||
=={{header|Lua}}== |
=={{header|Lua}}== |
||
Line 979: | Line 980: | ||
0110100110010110100101100110100110010110011010010110100110010110 |
0110100110010110100101100110100110010110011010010110100110010110 |
||
</pre> |
</pre> |
||
=={{header|OCaml}}== |
=={{header|OCaml}}== |
||
Line 1,021: | Line 1,021: | ||
let () = |
let () = |
||
print_endline (sequence 6);</lang> |
print_endline (sequence 6);</lang> |
||
=={{header|Pascal}}== |
=={{header|Pascal}}== |
||
Line 1,126: | Line 1,125: | ||
0110100110010110100101100110100110010110011010010110100110010110 |
0110100110010110100101100110100110010110011010010110100110010110 |
||
</pre> |
</pre> |
||
=={{header|Perl 6}}== |
|||
{{Works with|rakudo|2018.03}} |
|||
First 8 of an infinite sequence |
|||
<lang perl6>.say for (0, { '0' ~ @_.join.trans( "01" => "10", :g) } ... *)[^8];</lang> |
|||
{{out}} |
|||
<pre>0 |
|||
01 |
|||
0110 |
|||
01101001 |
|||
0110100110010110 |
|||
01101001100101101001011001101001 |
|||
0110100110010110100101100110100110010110011010010110100110010110 |
|||
01101001100101101001011001101001100101100110100101101001100101101001011001101001011010011001011001101001100101101001011001101001 |
|||
^C</pre> |
|||
=={{header|Phix}}== |
=={{header|Phix}}== |
||
Line 1,332: | Line 1,315: | ||
>>> |
>>> |
||
</lang> |
</lang> |
||
=={{header|R}}== |
=={{header|R}}== |
||
<lang rsplus> |
<lang rsplus> |
||
Line 1,370: | Line 1,354: | ||
01101001100101101001011001101001 |
01101001100101101001011001101001 |
||
0110100110010110100101100110100110010110011010010110100110010110</pre> |
0110100110010110100101100110100110010110011010010110100110010110</pre> |
||
=={{header|Raku}}== |
|||
(formerly Perl 6) |
|||
{{Works with|rakudo|2018.03}} |
|||
First 8 of an infinite sequence |
|||
<lang perl6>.say for (0, { '0' ~ @_.join.trans( "01" => "10", :g) } ... *)[^8];</lang> |
|||
{{out}} |
|||
<pre>0 |
|||
01 |
|||
0110 |
|||
01101001 |
|||
0110100110010110 |
|||
01101001100101101001011001101001 |
|||
0110100110010110100101100110100110010110011010010110100110010110 |
|||
01101001100101101001011001101001100101100110100101101001100101101001011001101001011010011001011001101001100101101001011001101001 |
|||
^C</pre> |
|||
=={{header|REXX}}== |
=={{header|REXX}}== |
||
Line 1,506: | Line 1,507: | ||
(0 to 6).foreach(i => println(s"$i : ${thueMorse(i)}"))</lang> |
(0 to 6).foreach(i => println(s"$i : ${thueMorse(i)}"))</lang> |
||
{{Out}} See it running in your browser by [https://scastie.scala-lang.org/rsF3Y5ABQoK0zZMMA3m6Ow Scastie (JVM)]. |
{{Out}} See it running in your browser by [https://scastie.scala-lang.org/rsF3Y5ABQoK0zZMMA3m6Ow Scastie (JVM)]. |
||
=={{header|Sidef}}== |
=={{header|Sidef}}== |
||
<lang ruby>func recmap(repeat, seed, transform, callback) { |
<lang ruby>func recmap(repeat, seed, transform, callback) { |