
Security News
New React Server Components Vulnerabilities: DoS and Source Code Exposure
New DoS and source code exposure bugs in React Server Components and Next.js: what’s affected and how to update safely.
ordered-char-combinations
Advanced tools
iterable over ordered character combinations from a list of alphabets
iterable over ordered character combinations from a list of alphabets.
in view of enhancing this module's features, starting with API 2.0, the original imperative O-O implementation is replaced with a more trivial and more powerful functional equivalent, a slightly simplified version of which follows for illustration purposes:
import { Stream, from as stream } from 'most'
export function combination$ (alphabet$: Iterable<string>|Stream<string>): Stream<string> {
const char$ = stream<string>(alphabet$)
const char$$ = char$.map(alphabet => stream<string>(alphabet))
const length = char$.constant(1).reduce(sum, 0)
return unwrap(length.then(length =>
char$$.skip(1)
.scan(combine, char$$.take(1).join())
.slice(length - 1)
.join()))
}
function combine (combination$: Stream<string>, char$: Stream<string>): Stream<string> {
return combination$
.flatMap(combination => char$.map(char => combination + char))
}
function sum (a: number, b: number): number {
return a + b
}
function unwrap <T> (promise: Promise<Stream<T>>): Stream<T> {
return fromPromise(promise).join()
}
the above functional implementation is more powerful than the original imperative O-O implementation:
most, not only skip.a live version of this example can be viewed here in the browser console, or by cloning this repository and running the following commands from a terminal:
npm install
npm run example
the files of this example are available here.
import combination$ from 'ordered-char-combinations'
import debug = require('debug')
const log = debug('example')
const string$ = combination$([ 'abc', 'ABC', '012' ])
const subset$ = string$.skip(15).take(5)
subset$.forEach(log) // 'bC0', 'bC1', 'bC2', 'cA0', 'cA1'
ES5 and Typescript compatible.
coded in Typescript 2, transpiled to ES5.
for a detailed specification of the API, run the unit tests in your browser.
see the contribution guidelines
Copyright 2016 Stéphane M. Catala
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and Limitations under the License.
FAQs
iterable over ordered character combinations from a list of alphabets
The npm package ordered-char-combinations receives a total of 2 weekly downloads. As such, ordered-char-combinations popularity was classified as not popular.
We found that ordered-char-combinations demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
New DoS and source code exposure bugs in React Server Components and Next.js: what’s affected and how to update safely.

Security News
Socket CEO Feross Aboukhadijeh joins Software Engineering Daily to discuss modern software supply chain attacks and rising AI-driven security risks.

Security News
GitHub has revoked npm classic tokens for publishing; maintainers must migrate, but OpenJS warns OIDC trusted publishing still has risky gaps for critical projects.