Set right-adjacent bits: Difference between revisions

Content added Content deleted
(J)
Line 330:
Result : 011110000000111100000011110000011110000111100011110011110111111111
</pre>
 
=={{header|J}}==
 
Implementation:
 
<lang J>smearright=: {{ +./ (-i.1+x) |.!.0"0 1/ y }}</lang>
 
Here, we use J's bit array structure, so <tt>e</tt> is implicit in the length of the list.
 
Task examples:
 
<lang J>b=: '1'&= :.(' '-.~":)
task=: {{y,:x&smearright&.:b y}}
 
0 task '010000000000100000000010000000010000000100000010000010000100010010'
010000000000100000000010000000010000000100000010000010000100010010
010000000000100000000010000000010000000100000010000010000100010010
1 task '010000000000100000000010000000010000000100000010000010000100010010'
010000000000100000000010000000010000000100000010000010000100010010
011000000000110000000011000000011000000110000011000011000110011011
2 task '010000000000100000000010000000010000000100000010000010000100010010'
010000000000100000000010000000010000000100000010000010000100010010
011100000000111000000011100000011100000111000011100011100111011111
3 task '010000000000100000000010000000010000000100000010000010000100010010'
010000000000100000000010000000010000000100000010000010000100010010
011110000000111100000011110000011110000111100011110011110111111111</lang>
 
<code>b</code> converts from character list to bit list (and its obverse converts back to character list, for easy viewing).
<code>task</code> uses b on the right argument to <code>smearright</code> and its obverse on the result, which it provides with the original value (again, for easy viewing).
 
=={{header|Julia}}==