npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

shu-var-negative

v1.0.3

Published

六爻排盤

Downloads

10

Readme

六爻裝卦

經研究發現:不宜以左起爲高位記錄爻象,宜以左起爲低位記錄爻象。應當以零(坤)爲起點作減法,得到負數,其補碼(加上「進制的位數的乘方」取同餘)卽其象。故將停止更新 shu-var 啟用 shu-var-negative 以左起爲低位記錄爻象。此法亦適用於其牠進制,如三進制的太玄經。

比較:

左起高位的數 左起高位的象 左起低位的數(顯然更有規律) 左起低位的數的補碼 左起低位的象

坤 0 000 -0 0 000
乾 7 111 -1 7 111
兌 3 011 -2 6 110
離 5 101 -3 5 101
震 1 001 -4 4 100
巽 6 110 -5 3 011
坎 2 010 -6 2 010
艮 4 100 -7 1 001

有象卽闕,問卜多憂。

npm install shu-var-negative
npm install chinese-calendar-indexer

code:

/**
 * 只提供兩種起卦法:按中國北京時間起卦,指定時間及卦象與變爻起卦。
 * 定應期以中國北京時間爲準。
 */
const Prediction = require('shu-var-negative');
const CalendarIndexer = require('chinese-calendar-indexer');

const moment = require('moment-timezone');
const timeZone = 'Asia/Shanghai';

/*
 * 打印或渲染函數
 * 默認是後臺打印
 */
function display(arg) {
	if(arg!=null) {
		console.log(arg);
	} else {
		console.log();
	}
}

class LogToStr {
	constructor() {
	}

	static target = '';

	static clear() {
		LogToStr.target = '';
	}

	static log(arg) {
		if(arg!=null) {
			LogToStr.target += arg + '\n';
		} else {
			LogToStr.target += '\n';
		}
	}
}



/**
 * 以時間取數起卦,取中國北京時間的年月日時的農曆日期,定應期也是以北京時間推算。
 * 根據經驗,以他國時間定卦,似頗不驗。
 */
async function doPredictionByTime(dateObj, memo='以時間取數起卦') {
	//const shu8Map = ['000','111','110','101','100','011','010','001'];
	//const yaoVarMap = ['000001','100000','010000','001000','000100','000010'];
	const dizhi = '子丑寅卯辰巳午未申酉戌亥';
	const shuHourMap = [1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,1];
	let calendarIndexer = new CalendarIndexer();
	let curDate = moment.tz(dateObj, timeZone)
	let lunarData = await calendarIndexer.indexChineseLunar(curDate);
	//console.log(lunarData);
	let shuYear = dizhi.indexOf(lunarData.chineseYear[1])+1;
	let shuMonth = lunarData.lunarMonthDigit;
	let shuDay = lunarData.lunarDayDigit;
	let shuHour = shuHourMap[parseInt(curDate.format('HH'))];
	//let yaoTu = shu8Map[(shuYear+shuMonth+shuDay+shuHour)%8] + shu8Map[(shuYear+shuMonth+shuDay)%8];
	//let yaoTu = ((8-(shuYear+shuMonth+shuDay+shuHour)%8)%8).toString(2).padStart(3,'0') + ((8-(shuYear+shuMonth+shuDay)%8)%8).toString(2).padStart(3,'0');  //由於易數是負數,其象是同餘的正數,因此無需查表。
	//let yaoTu = (8-(shuYear+shuMonth+shuDay+shuHour)%8)%8*Math.pow(2,3) + (8-(shuYear+shuMonth+shuDay)%8)%8;
	let yaoTu = Math.abs(-(shuYear+shuMonth+shuDay+shuHour)%8)*Math.pow(2,3) + Math.abs(-(shuYear+shuMonth+shuDay)%8);
	//let yaoVar = yaoVarMap[((shuYear+shuMonth+shuDay+shuHour)%6)];  //查表最簡單
	let yaoVar = 1 << (6-(shuYear+shuMonth+shuDay+shuHour)%6)%6;
	//console.log(yaoTu);
	return new Prediction(`北京時間:${curDate.format()}\n農曆:${lunarData.lunarMonth}${lunarData.lunarDay}\n${lunarData.chineseMonth}月${lunarData.chineseDay}日`,yaoTu,yaoVar,memo);
}

/**
 * 指定時間及卦象與變爻起卦
 */
async function doPredictionBySpecify(dateObj, original, mask, memo='備注') {
	let calendarIndexer = new CalendarIndexer();
	let curDate = moment.tz(dateObj, timeZone);
	let lunarData = await calendarIndexer.indexChineseLunar(curDate);
	return new Prediction(`北京時間 ${curDate.format()}\n${lunarData.chineseMonth}月${lunarData.chineseDay}日`,original,mask,memo);
}



(async () => {

	console.log('>>----------shu by negative');

	console.log('>>----------');
	let curDate = moment().clone().tz(timeZone);
	let result = await doPredictionByTime(curDate);
	result.getInfo().print(display);

	console.log('>>----------');
	result = await doPredictionBySpecify('2020-05-05','001011','010100');
	result.getInfo().print(display);

	console.log('>>----------');
	result = await doPredictionBySpecify(curDate,'010000','000010','考試');
	//result.getInfo().print(display);
	LogToStr.clear();
	result.getInfo().print(LogToStr.log);
	console.log(LogToStr.target);

})();  //end top async()

output:

>>----------shu by negative
>>----------
北京時間 2020-10-28T06:58:05+08:00
丙戌月甲辰日 戌亥空

[ '備注' ]

水澤節䷻ 之 水雷屯䷂

子水兄弟⚋  子水兄弟⚋
戌土官鬼⚊  戌土官鬼⚊
申金父母⚋應 申金父母⚋
丑土官鬼⚋  辰土官鬼⚋
卯木子孫○  寅木子孫⚋
巳火妻財⚊世 子水兄弟⚊
>>----------
北京時間 2020-05-05T00:00:00+08:00
辛巳月戊申日 戌亥空

[ '備注' ]

雷澤歸妹䷵ 之 澤天夬䷪

戌土父母⚋應 未土父母⚋
申金兄弟ㄨ  酉金兄弟⚊
午火官鬼⚊  亥水子孫⚊
丑土父母ㄨ世 辰土父母⚊
卯木妻財⚊  寅木妻財⚊
巳火官鬼⚊  子水子孫⚊
>>----------
北京時間 2020-10-28T06:58:05+08:00
丙戌月甲辰日 戌亥空

[ '考試' ]

水地比䷇ 之 坎爲水䷜

子水妻財⚋應 子水妻財⚋
戌土兄弟⚊  戌土兄弟⚊
申金子孫⚋  申金子孫⚋
卯木官鬼⚋世 午火父母⚋
巳火父母ㄨ  辰土兄弟⚊
未土兄弟⚋  寅木官鬼⚋

mobile app

https://github.com/creatxrgithub/shu-var-app