Nonoblock: Difference between revisions
Content added Content deleted
m (Handle the case where there is a full line.) |
m (Use ternary) |
||
Line 933: | Line 933: | ||
}; |
}; |
||
const |
const gapPerms = (grpSize, numGaps, minVal = 0) => { |
||
const maxVal = numGaps - grpSize * minVal + minVal; |
const maxVal = numGaps - grpSize * minVal + minVal; |
||
const sumsToTrg = sumsTo(numGaps); |
const sumsToTrg = sumsTo(numGaps); |
||
const hasInnerZero = hasInner(0); |
const hasInnerZero = hasInner(0); |
||
const noInnerZero = compose(inv, hasInnerZero); |
const noInnerZero = compose(inv, hasInnerZero); |
||
return maxVal <= 0 |
return maxVal <= 0 |
||
? (grpSize === 2 ? [[0]] : []) |
|||
⚫ | |||
: (looper(mkArr(grpSize, minVal), maxVal)[1]) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
} |
} |
||
Line 947: | Line 949: | ||
const grpSize = blocks.length + 1; |
const grpSize = blocks.length + 1; |
||
const numGaps = cells - sumArr(blocks); |
const numGaps = cells - sumArr(blocks); |
||
const fullLine = (numGaps === 0 && grpSize === 2); |
|||
const combine = zipArr([...blocks]); |
const combine = zipArr([...blocks]); |
||
const choices = toBin(choose(0, 1)); |
const choices = toBin(choose(0, 1)); |
||
const output = compose(console.log, arrJoin('')); |
const output = compose(console.log, arrJoin('')); |
||
gapPerms(grpSize, numGaps).map(compose(output, choices, combine)); |
|||
: permutations(grpSize, numGaps).map(compose(choices, combine)); |
|||
res.map(output) |
|||
}; |
}; |
||