Skip to content

Instantly share code, notes, and snippets.

View matsuby's full-sized avatar

Kohei Matsubara matsuby

  • None
  • Japan Tokyo
View GitHub Profile
@matsuby
matsuby / cash-tag-factory.ts
Last active February 29, 2024 17:39
fetcher cash tag creator.
type KV = Record<string, any>;
type MyParameters<F> = F extends (...args: infer P) => unknown
? P extends [infer A]
? A extends KV
? KV
: [A]
: P
: never;
@matsuby
matsuby / denseRank.ts
Last active October 15, 2021 03:31
dens rank of array
/**
* denseRank({
* array: [
* {name: 'a', age: 20},
* {name: 'b', age: 5},
* {name: 'c', age: 20},
* {name: 'd', age: 75},
* {name: 'e', age: 21},
* ],
* column: 'age',
@matsuby
matsuby / rank.ts
Created October 14, 2021 09:12
rank of array
/**
* rank({
* array: [
* {name: 'a', age: 20},
* {name: 'b', age: 5},
* {name: 'c', age: 20},
* {name: 'd', age: 75},
* {name: 'e', age: 21},
* ],
* column: 'age',
@matsuby
matsuby / useStep.ts
Created April 20, 2021 11:40
useStep.ts
import { useState } from 'react'
export const useStep = <
T extends {
[step: string]: string
}
>({
steps,
initialStep,
}: {
@matsuby
matsuby / sumObjects.ts
Last active April 8, 2021 07:43
オブジェクトの和
/**
* sumObjects([
* {a: 1, b: 2},
* {b: 3, c: 4},
* ])
* => {a: 1, b: 5, c: 4}
*/
const sumObjects = (
objects: Record<string, number>[]
): Record<string, number> =>
@matsuby
matsuby / cumulativeSumObjects.ts
Last active April 8, 2021 07:42
時系列データの累積和
/**
* cumulativeSumObjects({
* 20200101: {a: 1, b: 2, c: 3},
* 20200102: {b: 1, c: 2, d: 3},
* 20200103: {c: 1, d: 2, e: 3},
* })
* => {
* 20200101: {a: 1, b: 2, c: 3, d: 0, e: 0},
* 20200102: {a: 1, b: 3, c: 5, d: 3, e: 0},
* 20200103: {a: 1, b: 3, c: 6, d: 5, e: 3},
@matsuby
matsuby / combinations.ts
Last active October 27, 2020 03:09
combinations.ts
/**
* Returns an array of all combinations of elements from all arrays.
*
* @examples
* combinations([1], [2, 3], [4, 5, 6])
* => "[[1,2,4],[1,2,5],[1,2,6],[1,3,4],[1,3,5],[1,3,6]]"
*/
export const combinations = <T extends unknown>(...arrays: T[][]): T[] => {
const result: T[] = []
const _combinations = (n: number, current: T[]) => {
@matsuby
matsuby / calcPieChartValues.js
Created November 29, 2018 09:47
JavaScript calculation pie chart values.
{
const calcPieChartValues = (values, numDegits = null) => {
const totalValue = values.reduce((a, c) => a + c);
const deg2rad = (deg) => deg * Math.PI / 180;
return values.map((value, i) => {
const data = {};
data.index = i;
data.value = value;
data.rate = value / totalValue;
@matsuby
matsuby / index.html
Last active October 24, 2018 03:03
d3を使って円から円を直線で結ぶサンプル
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>d3を使って円から円を直線で結ぶサンプル</title>
</head>
<body>
<div id="container"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<script>
@matsuby
matsuby / fibonacci.js
Last active October 21, 2018 04:15
JavaScript one-liner function: fibonacci (get single fibonacci number)
// =========================================================================
// https://en.wikipedia.org/wiki/Fibonacci_number#List_of_Fibonacci_numbers
// =========================================================================
// for ES2015
{
const fibonacci = Object.assign(function f(n){return +n!==parseInt(n)||!isFinite(n)?NaN:Math.abs(n)>1476?Math.sign(n)*Infinity:(n>=0?1:~n%2?-1:1)*(f[Math.abs(n)]||(f[Math.abs(n)-1]=f(Math.abs(n)-1))+f[Math.abs(n)-2])},{"-2":-1,"-1":1,0:0,1:1});
const positiveIntegers = [...[...Array(21).keys()], 100, 999, 1476, 1477, 1478, 1479];