Skip to content

Instantly share code, notes, and snippets.

View mg901's full-sized avatar
🎯
Focusing

mg901

🎯
Focusing
View GitHub Profile
@mg901
mg901 / intersectionWith.js
Created July 11, 2026 11:42
intersectionWith
// - Time: O(n^2 + ∑ |tail[i]|)
// - Space: O(n)
export default function intersectionWith(comparator, ...arrays) {
if (arrays == null || arrays.length === 0) {
return [];
}
const [head, ...tail] = arrays;
let intersections = [];
function useWindowSize() {
const width = useSyncExternalStore(
subscribe,
() => window.innerWidth,
() => 0,
);
const height = useSyncExternalStore(
subscribe,
() => window.innerHeight,
import { useState } from "react";
const COLS = 7;
const ROWS = 6;
const STRIDE = ROWS + 1;
const BITBOARD_SIZE = STRIDE * COLS;
const VISUAL_BOARD_SIZE = ROWS * COLS;
const VERTICAL_SHIFT = 1n;
const DIAGONAL_RIGHT_SHIFT = BigInt(STRIDE + 1);
class Semaphore {
#queue = [];
#slots;
constructor(limit) {
this.#slots = Math.max(1, limit);
}
acquire() {
import { useRef, useState, useEffect } from "react";
/**
* @template T
* @param {() => Promise<T>} fn
* @param {import("react").DependencyList} deps
*/
export default function useQuery(fn, deps = []) {
const latestFn = useRef(fn);
const [state, setState] = useState({ status: "loading" });
import { useId, useRef, useState, useCallback } from "react";
export default function Accordion({ sections }) {
const baseId = useId();
const buttonsRef = useRef([]);
const [openSections, setOpenSections] = useState(new Set());
const n = sections.length;
const handleKeyDown = useCallback((e, index) => {
@mg901
mg901 / Tabs.js
Last active June 9, 2026 13:02
Tabs III
import { useId, useRef, useState } from "react";
export default function Tabs({ defaultValue, items = [] }) {
const id = useId();
const tabsRef = useRef([]);
const [activeValue, setActiveValue] = useState(
defaultValue ?? items[0]?.value,
);
@mg901
mg901 / App.js
Last active June 9, 2026 12:59
"Grid Lights" Solution
import { useState, useEffect, useMemo } from "react";
export default function App() {
return <Table data={table} />;
}
const DELAY = 300;
const table = [
[[1], [1], [1]],