Intersecting number wheels: Difference between revisions
Content added Content deleted
(→{{header|Ruby}}: Add Ruby) |
m (J) |
||
Line 1,013: | Line 1,013: | ||
[('A',"1DD"),('D',"678")] |
[('A',"1DD"),('D',"678")] |
||
[('A',"1BC"),('B',"34"),('C',"5B")]</pre> |
[('A',"1BC"),('B',"34"),('C',"5B")]</pre> |
||
=={{header|J}}== |
|||
Implementation: |
|||
<lang J> |
|||
wheelgroup=:{{ |
|||
yield_wheelgroup_=: {{ |
|||
i=. wheels i.<;y |
|||
j=. i{inds |
|||
k=. ".;y |
|||
l=. j{k |
|||
inds=: ((#k)|1+j) i} inds |
|||
if. l e. wheels |
|||
do.yield l |
|||
else.{.".;l |
|||
end. |
|||
}} |
|||
gen_wheelgroup_=: {{ |
|||
yield wheel |
|||
}} |
|||
grp=. cocreate '' |
|||
coinsert__grp 'wheelgroup z' |
|||
specs__grp=.cut each boxopen m |
|||
wheel__grp=:;{.wheels__grp=: {.every specs__grp |
|||
init__grp=:{{('inds';wheels)=:(0#~#specs);}.each specs}} |
|||
init__grp'' |
|||
('gen_',(;grp),'_')~ |
|||
}} |
|||
</lang> |
|||
Task examples: |
|||
<lang J> |
|||
task=: {{y wheelgroup^:(1+i.20)_}} |
|||
task 'A 1 2 3' |
|||
1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 |
|||
task 'A 1 B 2';'B 3 4' |
|||
1 3 2 1 4 2 1 3 2 1 4 2 1 3 2 1 4 2 1 3 |
|||
task 'A 1 D D';'D 6 7 8' |
|||
1 6 7 1 8 6 1 7 8 1 6 7 1 8 6 1 7 8 1 6 |
|||
task 'A 1 B C';'B 3 4';'C 5 B' |
|||
1 3 5 1 4 3 1 4 5 1 3 4 1 3 5 1 4 3 1 4 |
|||
</lang> |
|||
=={{header|Java}}== |
=={{header|Java}}== |