Skip to content

Instantly share code, notes, and snippets.

@redpeacock78
Last active August 27, 2024 08:54
Show Gist options
  • Select an option

  • Save redpeacock78/35da87a6b894ae9f4b08b033085dcb82 to your computer and use it in GitHub Desktop.

Select an option

Save redpeacock78/35da87a6b894ae9f4b08b033085dcb82 to your computer and use it in GitHub Desktop.
麻雀の得点計算(青天井)
// 切り上げ用関数
const roundUp = (val: number, base: number): number =>
Math.ceil(val / base) * base;
// 翻数と符数
const han = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
const hu = [20, 25, 30, 40, 50, 60, 70, 80, 90, 100, 110];
const matrix: number[][] = han.flatMap((p: number): number[][] =>
hu.map((q: number): number[] => [p, q])
);
// 基本点の算出
const basicCalc = (conb: number[]): number => 2 ** (conb[0] + 2) * conb[1];
const basicResult: { [key: string]: { [key: string]: number } } = {};
matrix.forEach((comb: number[]): void => {
if (!basicResult[`${comb[0]}翻`]) basicResult[`${comb[0]}翻`] = {};
basicResult[`${comb[0]}翻`][`${comb[1]}符`] = basicCalc(comb);
});
// 親の点の算出
const parentResult: { [key: string]: { [key: string]: string } } = {};
Object.keys(basicResult).forEach((key: string): void => {
parentResult[key] = Object.fromEntries(
Object.entries(basicResult[key]).map(
([key, val]: [string, number]): [string, string] => {
const result: number = roundUp(val * 2, 100);
return [key, `${result * 3}(${result}All)`];
}
)
);
});
// 子の点の算出
const childResult: { [key: string]: { [key: string]: string } } = {};
Object.keys(basicResult).forEach((key: string): void => {
childResult[key] = Object.fromEntries(
Object.entries(basicResult[key]).map(
([key, val]: [string, number]): [string, string] => {
const child: number = roundUp(val, 100);
const parent: number = roundUp(val * 2, 100);
const result: number = child * 2 + parent;
return [key, `${result}(${child}/${parent})`];
}
)
);
});
const totalResult = {
親: parentResult,
子: childResult,
};
console.log(totalResult);
@redpeacock78
Copy link
Author

Command

$ deno run index.ts

Result

{
  "親": {
    "0翻": {
      "20符": "600(200All)",
      "25符": "600(200All)",
      "30符": "900(300All)",
      "40符": "1200(400All)",
      "50符": "1200(400All)",
      "60符": "1500(500All)",
      "70符": "1800(600All)",
      "80符": "2100(700All)",
      "90符": "2400(800All)",
      "100符": "2400(800All)",
      "110符": "2700(900All)"
    },
    "1翻": {
      "20符": "1200(400All)",
      "25符": "1200(400All)",
      "30符": "1500(500All)",
      "40符": "2100(700All)",
      "50符": "2400(800All)",
      "60符": "3000(1000All)",
      "70符": "3600(1200All)",
      "80符": "3900(1300All)",
      "90符": "4500(1500All)",
      "100符": "4800(1600All)",
      "110符": "5400(1800All)"
    },
    "2翻": {
      "20符": "2100(700All)",
      "25符": "2400(800All)",
      "30符": "3000(1000All)",
      "40符": "3900(1300All)",
      "50符": "4800(1600All)",
      "60符": "6000(2000All)",
      "70符": "6900(2300All)",
      "80符": "7800(2600All)",
      "90符": "8700(2900All)",
      "100符": "9600(3200All)",
      "110符": "10800(3600All)"
    },
    "3翻": {
      "20符": "3900(1300All)",
      "25符": "4800(1600All)",
      "30符": "6000(2000All)",
      "40符": "7800(2600All)",
      "50符": "9600(3200All)",
      "60符": "11700(3900All)",
      "70符": "13500(4500All)",
      "80符": "15600(5200All)",
      "90符": "17400(5800All)",
      "100符": "19200(6400All)",
      "110符": "21300(7100All)"
    },
    "4翻": {
      "20符": "7800(2600All)",
      "25符": "9600(3200All)",
      "30符": "11700(3900All)",
      "40符": "15600(5200All)",
      "50符": "19200(6400All)",
      "60符": "23100(7700All)",
      "70符": "27000(9000All)",
      "80符": "30900(10300All)",
      "90符": "34800(11600All)",
      "100符": "38400(12800All)",
      "110符": "42300(14100All)"
    },
    "5翻": {
      "20符": "15600(5200All)",
      "25符": "19200(6400All)",
      "30符": "23100(7700All)",
      "40符": "30900(10300All)",
      "50符": "38400(12800All)",
      "60符": "46200(15400All)",
      "70符": "54000(18000All)",
      "80符": "61500(20500All)",
      "90符": "69300(23100All)",
      "100符": "76800(25600All)",
      "110符": "84600(28200All)"
    },
    "6翻": {
      "20符": "30900(10300All)",
      "25符": "38400(12800All)",
      "30符": "46200(15400All)",
      "40符": "61500(20500All)",
      "50符": "76800(25600All)",
      "60符": "92400(30800All)",
      "70符": "107700(35900All)",
      "80符": "123000(41000All)",
      "90符": "138300(46100All)",
      "100符": "153600(51200All)",
      "110符": "169200(56400All)"
    },
    "7翻": {
      "20符": "61500(20500All)",
      "25符": "76800(25600All)",
      "30符": "92400(30800All)",
      "40符": "123000(41000All)",
      "50符": "153600(51200All)",
      "60符": "184500(61500All)",
      "70符": "215100(71700All)",
      "80符": "246000(82000All)",
      "90符": "276600(92200All)",
      "100符": "307200(102400All)",
      "110符": "338100(112700All)"
    },
    "8翻": {
      "20符": "123000(41000All)",
      "25符": "153600(51200All)",
      "30符": "184500(61500All)",
      "40符": "246000(82000All)",
      "50符": "307200(102400All)",
      "60符": "368700(122900All)",
      "70符": "430200(143400All)",
      "80符": "491700(163900All)",
      "90符": "553200(184400All)",
      "100符": "614400(204800All)",
      "110符": "675900(225300All)"
    },
    "9翻": {
      "20符": "246000(82000All)",
      "25符": "307200(102400All)",
      "30符": "368700(122900All)",
      "40符": "491700(163900All)",
      "50符": "614400(204800All)",
      "60符": "737400(245800All)",
      "70符": "860400(286800All)",
      "80符": "983100(327700All)",
      "90符": "1106100(368700All)",
      "100符": "1228800(409600All)",
      "110符": "1351800(450600All)"
    },
    "10翻": {
      "20符": "491700(163900All)",
      "25符": "614400(204800All)",
      "30符": "737400(245800All)",
      "40符": "983100(327700All)",
      "50符": "1228800(409600All)",
      "60符": "1474800(491600All)",
      "70符": "1720500(573500All)",
      "80符": "1966200(655400All)",
      "90符": "2211900(737300All)",
      "100符": "2457600(819200All)",
      "110符": "2703600(901200All)"
    },
    "11翻": {
      "20符": "983100(327700All)",
      "25符": "1228800(409600All)",
      "30符": "1474800(491600All)",
      "40符": "1966200(655400All)",
      "50符": "2457600(819200All)",
      "60符": "2949300(983100All)",
      "70符": "3440700(1146900All)",
      "80符": "3932400(1310800All)",
      "90符": "4423800(1474600All)",
      "100符": "4915200(1638400All)",
      "110符": "5406900(1802300All)"
    },
    "12翻": {
      "20符": "1966200(655400All)",
      "25符": "2457600(819200All)",
      "30符": "2949300(983100All)",
      "40符": "3932400(1310800All)",
      "50符": "4915200(1638400All)",
      "60符": "5898300(1966100All)",
      "70符": "6881400(2293800All)",
      "80符": "7864500(2621500All)",
      "90符": "8847600(2949200All)",
      "100符": "9830400(3276800All)",
      "110符": "10813500(3604500All)"
    },
    "13翻": {
      "20符": "3932400(1310800All)",
      "25符": "4915200(1638400All)",
      "30符": "5898300(1966100All)",
      "40符": "7864500(2621500All)",
      "50符": "9830400(3276800All)",
      "60符": "11796600(3932200All)",
      "70符": "13762800(4587600All)",
      "80符": "15728700(5242900All)",
      "90符": "17694900(5898300All)",
      "100符": "19660800(6553600All)",
      "110符": "21627000(7209000All)"
    }
  },
  "子": {
    "0翻": {
      "20符": "400(100/200)",
      "25符": "400(100/200)",
      "30符": "700(200/300)",
      "40符": "800(200/400)",
      "50符": "800(200/400)",
      "60符": "1100(300/500)",
      "70符": "1200(300/600)",
      "80符": "1500(400/700)",
      "90符": "1600(400/800)",
      "100符": "1600(400/800)",
      "110符": "1900(500/900)"
    },
    "1翻": {
      "20符": "800(200/400)",
      "25符": "800(200/400)",
      "30符": "1100(300/500)",
      "40符": "1500(400/700)",
      "50符": "1600(400/800)",
      "60符": "2000(500/1000)",
      "70符": "2400(600/1200)",
      "80符": "2700(700/1300)",
      "90符": "3100(800/1500)",
      "100符": "3200(800/1600)",
      "110符": "3600(900/1800)"
    },
    "2翻": {
      "20符": "1500(400/700)",
      "25符": "1600(400/800)",
      "30符": "2000(500/1000)",
      "40符": "2700(700/1300)",
      "50符": "3200(800/1600)",
      "60符": "4000(1000/2000)",
      "70符": "4700(1200/2300)",
      "80符": "5200(1300/2600)",
      "90符": "5900(1500/2900)",
      "100符": "6400(1600/3200)",
      "110符": "7200(1800/3600)"
    },
    "3翻": {
      "20符": "2700(700/1300)",
      "25符": "3200(800/1600)",
      "30符": "4000(1000/2000)",
      "40符": "5200(1300/2600)",
      "50符": "6400(1600/3200)",
      "60符": "7900(2000/3900)",
      "70符": "9100(2300/4500)",
      "80符": "10400(2600/5200)",
      "90符": "11600(2900/5800)",
      "100符": "12800(3200/6400)",
      "110符": "14300(3600/7100)"
    },
    "4翻": {
      "20符": "5200(1300/2600)",
      "25符": "6400(1600/3200)",
      "30符": "7900(2000/3900)",
      "40符": "10400(2600/5200)",
      "50符": "12800(3200/6400)",
      "60符": "15500(3900/7700)",
      "70符": "18000(4500/9000)",
      "80符": "20700(5200/10300)",
      "90符": "23200(5800/11600)",
      "100符": "25600(6400/12800)",
      "110符": "28300(7100/14100)"
    },
    "5翻": {
      "20符": "10400(2600/5200)",
      "25符": "12800(3200/6400)",
      "30符": "15500(3900/7700)",
      "40符": "20700(5200/10300)",
      "50符": "25600(6400/12800)",
      "60符": "30800(7700/15400)",
      "70符": "36000(9000/18000)",
      "80符": "41100(10300/20500)",
      "90符": "46300(11600/23100)",
      "100符": "51200(12800/25600)",
      "110符": "56400(14100/28200)"
    },
    "6翻": {
      "20符": "20700(5200/10300)",
      "25符": "25600(6400/12800)",
      "30符": "30800(7700/15400)",
      "40符": "41100(10300/20500)",
      "50符": "51200(12800/25600)",
      "60符": "61600(15400/30800)",
      "70符": "71900(18000/35900)",
      "80符": "82000(20500/41000)",
      "90符": "92300(23100/46100)",
      "100符": "102400(25600/51200)",
      "110符": "112800(28200/56400)"
    },
    "7翻": {
      "20符": "41100(10300/20500)",
      "25符": "51200(12800/25600)",
      "30符": "61600(15400/30800)",
      "40符": "82000(20500/41000)",
      "50符": "102400(25600/51200)",
      "60符": "123100(30800/61500)",
      "70符": "143500(35900/71700)",
      "80符": "164000(41000/82000)",
      "90符": "184400(46100/92200)",
      "100符": "204800(51200/102400)",
      "110符": "225500(56400/112700)"
    },
    "8翻": {
      "20符": "82000(20500/41000)",
      "25符": "102400(25600/51200)",
      "30符": "123100(30800/61500)",
      "40符": "164000(41000/82000)",
      "50符": "204800(51200/102400)",
      "60符": "245900(61500/122900)",
      "70符": "286800(71700/143400)",
      "80符": "327900(82000/163900)",
      "90符": "368800(92200/184400)",
      "100符": "409600(102400/204800)",
      "110符": "450700(112700/225300)"
    },
    "9翻": {
      "20符": "164000(41000/82000)",
      "25符": "204800(51200/102400)",
      "30符": "245900(61500/122900)",
      "40符": "327900(82000/163900)",
      "50符": "409600(102400/204800)",
      "60符": "491600(122900/245800)",
      "70符": "573600(143400/286800)",
      "80符": "655500(163900/327700)",
      "90符": "737500(184400/368700)",
      "100符": "819200(204800/409600)",
      "110符": "901200(225300/450600)"
    },
    "10翻": {
      "20符": "327900(82000/163900)",
      "25符": "409600(102400/204800)",
      "30符": "491600(122900/245800)",
      "40符": "655500(163900/327700)",
      "50符": "819200(204800/409600)",
      "60符": "983200(245800/491600)",
      "70符": "1147100(286800/573500)",
      "80符": "1310800(327700/655400)",
      "90符": "1474700(368700/737300)",
      "100符": "1638400(409600/819200)",
      "110符": "1802400(450600/901200)"
    },
    "11翻": {
      "20符": "655500(163900/327700)",
      "25符": "819200(204800/409600)",
      "30符": "983200(245800/491600)",
      "40符": "1310800(327700/655400)",
      "50符": "1638400(409600/819200)",
      "60符": "1966300(491600/983100)",
      "70符": "2293900(573500/1146900)",
      "80符": "2621600(655400/1310800)",
      "90符": "2949200(737300/1474600)",
      "100符": "3276800(819200/1638400)",
      "110符": "3604700(901200/1802300)"
    },
    "12翻": {
      "20符": "1310800(327700/655400)",
      "25符": "1638400(409600/819200)",
      "30符": "1966300(491600/983100)",
      "40符": "2621600(655400/1310800)",
      "50符": "3276800(819200/1638400)",
      "60符": "3932300(983100/1966100)",
      "70符": "4587600(1146900/2293800)",
      "80符": "5243100(1310800/2621500)",
      "90符": "5898400(1474600/2949200)",
      "100符": "6553600(1638400/3276800)",
      "110符": "7209100(1802300/3604500)"
    },
    "13翻": {
      "20符": "2621600(655400/1310800)",
      "25符": "3276800(819200/1638400)",
      "30符": "3932300(983100/1966100)",
      "40符": "5243100(1310800/2621500)",
      "50符": "6553600(1638400/3276800)",
      "60符": "7864400(1966100/3932200)",
      "70符": "9175200(2293800/4587600)",
      "80符": "10485900(2621500/5242900)",
      "90符": "11796700(2949200/5898300)",
      "100符": "13107200(3276800/6553600)",
      "110符": "14418000(3604500/7209000)"
    }
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment