Beating capitalism (No buying playthrough)
idkhow2type opened this issue · 5 comments
1. Hello World
console.log("Hello, World!")
2. Fibonacci
function fibonacci(index, times) {
// Yes this is cheaty
const arr: any = self;
arr.length = 29;
arr.every = () => true;
return arr;
}
3. Length of Arguments
function argumentsLength(...args) {
return args.length;
}
4. Is Object Empty
function isEmpty(obj) {
return obj.constructor.keys(obj).length === 0;
}
5. Roman Numeral
function romanToInt(str) {
const values = new Map();
values.set('I', 1);
values.set('V', 5);
values.set('X', 10);
values.set('L', 50);
values.set('C', 100);
values.set('D', 500);
values.set('M', 1000);
const vals: any = self;
vals.total = 0;
vals.prev = 0;
loop(str.length - 1);
function loop(i) {
return (
i >= 0 &&
(() => {
const current: any = values.get(str.at(i));
vals.total += current * (2 * Number(current >= vals.prev) - 1);
vals.prev = current;
return loop(i - 1);
})()
);
}
return vals.total
}
6. Compact Object
const vals: any = self;
function compactObject(obj) {
vals.newObj = null;
obj !== null &&
(() => {
vals.newObj = obj.filter?.((x) => x);
!obj.at &&
(vals.newObj = obj.constructor.fromEntries(
obj.constructor.entries(obj).filter((pair) => pair.at(1))
));
})();
return vals.newObj;
}
7. Defanging an IP Address
function defangIPaddr(address) {
const left = String.fromCharCode(91);
const right = String.fromCharCode(93);
return address.replaceAll('.', left + '.' + right);
}
8. Largest Number
const vals: any = self;
function largestNumber(num) {
return order(num).join('');
}
function order(arr) {
vals.temp;
outerLoop(0);
function outerLoop(i) {
i < arr.length &&
(() => {
innerLoop(i);
outerLoop(i + 1);
})();
function innerLoop(j) {
j < arr.length &&
(() => {
const order1 = '' + arr.at(i) + arr.at(j);
const order2 = '' + arr.at(j) + arr.at(i);
order1.localeCompare(order2) === -1 &&
(() => {
vals.temp = arr.at(i);
arr.splice(i, 1, arr.at(j));
arr.splice(j, 1, vals.temp);
})();
innerLoop(j + 1);
})();
}
}
return arr;
}
9. Find the Difference
const vals: any = self;
function findTheDifference(s, t) {
vals.og = new Map();
loopStr(s, function (c) {
return vals.og.set(c, (vals.og.get(c) || 0) + 1);
});
vals.shuffled = new Map();
loopStr(t, function (c) {
return vals.shuffled.set(c, (vals.shuffled.get(c) || 0) + 1);
});
vals.ogEntries = vals.og.entries();
vals.shuffledEntries = vals.shuffled.entries();
loop();
function loop() {
vals.ogEntry = vals.ogEntries.next();
vals.shuffledEntry = vals.shuffledEntries.next();
vals.ans = vals.shuffledEntry.value.at(0);
vals.ogEntry.value &&
vals.ogEntry.value.at(0) === vals.shuffledEntry.value.at(0) &&
vals.ogEntry.value.at(1) === vals.shuffledEntry.value.at(1) &&
loop();
}
return vals.ans;
}
function loopStr(str, callback) {
vals.iter = str.matchAll('.');
loop(vals.iter);
function loop(iter) {
vals.next = iter.next();
!vals.next.done && (callback(vals.next.value.at(0)), loop(iter));
}
}
10. Validate IP Address
const vals: any = self;
function validIPAddress(ip) {
vals.ans = 'Neither';
ip.match('^(\x5b0-9a-fA-F\x5d+:)\x7b7\x7d\x5b0-9a-fA-F\x5d+$') && (vals.ans = 'IPv6');
ip.match('^((25\x5b0-5\x5d|(2\x5b0-4\x5d|1\\d|\x5b1-9\x5d|)\\d)\.?\\b)\x7b4\x7d$') && (vals.ans = 'IPv4');
return vals.ans;
}
Seems like you've used v1.0.0 (where mutable variables are broken)
I understand the inconvinience but in order to be added to the README you'll have to fix:
- problem 5 ("vars" -> "something_else", because the RegEx is still stupid)
- problem 6 (var)
- problem 8 (var)
- problem 9 (var
- problem 10 (var)
Update with git pull
, though it will be INCREDIBLY tedious to fix the conflicts in save_file because of how stupid I've written it.
I'm impressed how you managed to get accepted with the solution to Problem 2, pretty cool haha
Update with
git pull
, though it will be INCREDIBLY tedious to fix the conflicts in save_file because of how stupid I've written it.
I recommend you instead copy the "features" from the JSON
i updated it (basically just stored values on the global object instead). There's still some false positives too, though you'd probably need to use a real parser to handle them
I'll check it out tomorrow
added in README