De Bruijn sequences: Difference between revisions
Content added Content deleted
(→{{header|Wren}}: Now uses Wren-str module.) |
|||
Line 597: | Line 597: | ||
</pre> |
</pre> |
||
=={{header|J}}== |
|||
<lang J>NB. implement inverse Burrows—Wheeler transform sequence method |
|||
repeat_alphabet=: [: , [: i.&> (^ <:) # [ |
|||
assert 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 -: 2 repeat_alphabet 4 |
|||
de_bruijn=: ({~ ([: ; [: C. /:^:2))@:repeat_alphabet NB. K de_bruijn N |
|||
pins=: #&10 #: [: i. 10&^ NB. pins y generates all y digit PINs |
|||
groups=: [ ]\ ] , ({.~ <:)~ NB. x infixes of sequence cyclically extended by x-1 |
|||
verify_PINs=: (/:~@:groups -: pins@:[) NB. LENGTH verify_PINs SEQUENCE |
|||
</lang><pre> NB. A is the sequence |
|||
A=: 10 de_bruijn 4 |
|||
NB. tally A |
|||
#A |
|||
10000 |
|||
NB. literally the first and final 130 digits |
|||
Num_j_ {~ 130 ({. ,: ({.~ -)~) A |
|||
0000101001101111000210020102110202001210120112111202121200221022012211220222122220003100320030103110321030203120322030300131013201 |
|||
9469956996699769986990799179927993799479957996799779987990899189928993899489958996899789988990999199929993999499959996999799989999 |
|||
NB. verifications. seriously? |
|||
4 verify_PINs A |
|||
1 |
|||
4 (verify_PINs |.) A |
|||
1 |
|||
4 verify_PINs (a.i.'.')(<: 4444)} A |
|||
0 |
|||
</pre> |
|||
=={{header|Java}}== |
=={{header|Java}}== |
||
{{trans|C++}} |
{{trans|C++}} |