First, I want to make sure that we’re using Group the same way: in PCIbex, you can name a column either Group or List and the effect will be that, for any given participant, they will only see trials generated from the table that have a given value in that column. As you can see in the tutorial here for example, some participants will only see trials generated from the A rows, and the other participants will only see trials generated from the B rows. I think that, in your case, you are defining groups within participants, and you are not referring to that notion of group, is that correct?
If I understand you correctly, your trials are characterized by three factors: i. A vs B vs C, ii. ambiguous vs unambiguous, iii. congruent vs incongruent. However, you seem to only use the first factor to label your trials. I can’t make sense of the number before A/B/C, does it correspond to the trial’s index?
The way randomizeNoMoreThan works, you pass a set of trials as its first argument (eg. using anyOf, like in your code) and you pass a number N as a second argument. It will make sure that the output series of trials contains at most N consecutive trials that share the exact same label. So in your case, it makes sure that you don’t have more than 2 consecutive trials labeled 1A, that you don’t have more than 2 consecutive trials labeled 1B, etc. So if you want to use randomizeNoMoreThan as it is, my guess is you’ll need to revise how you label your trials.
I understand you don’t want two consecutive trials with the exact same crossing of the two last factors (ambiguity and congurency) but I’m not sure how exactly the group factor interacts with them, so I’m not sure how you want the trials resulting from further crossing the two factors with group to be presented to each participant. If you could clarify that to me, we could work on a better adapted version of the randomizeNoMoreThan function