Skip to content

Instantly share code, notes, and snippets.

View Paul-Browne's full-sized avatar
🏠
Working from home

Paul Browne Paul-Browne

🏠
Working from home
View GitHub Profile
@Paul-Browne
Paul-Browne / permutate.js
Created February 2, 2025 12:27
find all permutations of a string
// Heap's algorithm (iterative version, recursive version took waaaay longer)
// https://en.wikipedia.org/wiki/Heap%27s_algorithm
// Even though I kinda understand the algorithm,
// *after* reading about it and converting it to JS
// I can't pretend that I came up with this solution on my own.
const permutate = str => {
const lengthOfString = str.length;
//todo
var days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"];
var daysCopy = days;
days.push("Saturday", "Sunday");
daysCopy[0] = "Lundi";
console.log(days);
// ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
var days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"];
var daysCopy = days.slice();
days.push("Saturday", "Sunday");
daysCopy[0] = "Lundi";
console.log(days);
// ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
console.log(daysCopy);
var array = [1, 2, [3, 4], [5, 6, [7, 8], 9], 10];
var string = array.toString();
console.log(string);
// 1,2,3,4,5,6,7,8,9,10
var array = ["Monday", "Tuesday", "Wednesday"];
array.name = "Paul";
array.age = 35;
console.log(array);
// ["Monday", "Tuesday", "Wednesday", name: "Paul", age: 35]
console.log(array.length);
// 3
var days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
days.forEach( (element, index) => {
console.log(element, index);
})
var days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Saturday", "Sunday"];
if( days.indexOf("Wednesday") > -1 ){
console.log("contains Wednesday!");
}
// same as
var containsWednesday = days.some(function(element){
return element === "Wednesday";
});
var days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Saturday", "Sunday"];
var removed = days.splice(4, 2, "Friday");
console.log(days);
// ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
console.log(removed);
// [Saturday, Sunday]
var days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
var copy = days.slice();
var weekend = days.slice(5);
var alsoWeekend = days.slice(-2);
var weekdays = days.slice(0, 5);
var alsoWeekdays = days.slice(0, -2);
console.log(copy);
// ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]