Elementary cellular automaton/Random number generator: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (sntax highlighting fixup automation) |
|||
Line 318: | Line 318: | ||
byte__m"0 i.10 |
byte__m"0 i.10 |
||
220 197 147 174 117 97 149 171 100 151 |
220 197 147 174 117 97 149 171 100 151 |
||
</pre> |
|||
=={{header|jq}}== |
|||
'''Works with jq and gojq, the C and Go implementations of jq''' |
|||
The following also works with jaq, the Rust implementation of jq, provided |
|||
the "include" directive is replaced with the set of definitions from |
|||
the parent task, and that a suitable alternative to 100*"0" is |
|||
presented. |
|||
<syntaxhighlight lang=jq> |
|||
include "elementary-cellular-automaton" {search : "."}; |
|||
# If using jq, the def of _nwise can be omitted. |
|||
def _nwise($n): |
|||
def n: if length <= $n then . else .[0:$n] , (.[$n:] | n) end; |
|||
n; |
|||
# Input: an array of bits represented by 0s, 1s, "0"s, or "1"s |
|||
# Output: the corresponding decimal on the assumption that the leading bits are least significant, |
|||
# e.g. [0,1] => 2 |
|||
def binary2number: |
|||
reduce (.[]|tonumber) as $x ({p:1}; .n += .p * $x | .p *= 2) | .n; |
|||
("1" + 100 * "0" ) | [automaton(30; 80) | .[0:1]] | [_nwise(8) | reverse | binary2number] |
|||
</syntaxhighlight> |
|||
{{output}} |
|||
<pre> |
|||
[220,197,147,174,117,97,149,171,240,241] |
|||
</pre> |
</pre> |
||