Привет, Хабр!
В Сети можно найти тонны самого разного софта для астрологических и нумерологических расчетов. Решил и я написать свой вариант. Моя программка не строит натальные карты, но умеет рассчитывать числа рождения и имени, квадрат Пифагора, а также вычислять знаки по нескольким гороскопам. Ниже рассматриваются интерфейс и код программы.
Интерфейс приложения
Вот так программа выглядит:
Интерфейс программы состоит из двух страниц. На первой странице пользователь вводит свое имя и дату рождения:
А на второй уже получает результат:
Есть возможность сохранять результаты в виде текстового файла. Иерархия компонентов в редакторе Glade выглядит так:
Теперь о том, как это все работает.
Числа имени и рождения
Исходный код программы можно посмотреть здесь. Для расчета числа имени применялась вот такая таблица:
На ее основе был создан метод name_number
:
private int name_number(string str){
var n=0;
string[] array = new string[str.length];
for (int i=0;i<str.length;i++) {
array[i] = str.get_char(str.index_of_nth_char(i)).to_string();//превращаем строку в массив символов
switch (array[i]) {
case "a":
case "j":
case "s":
case "A":
case "J":
case "S":
n += 1;
break;
case "b":
case "k":
case "t":
case "B":
case "K":
case "T":
n += 2;
break;
case "c":
case "l":
case "u":
case "C":
case "L":
case "U":
n += 3;
break;
case "d":
case "m":
case "v":
case "D":
case "M":
case "V":
n += 4;
break;
case "e":
case "n":
case "w":
case "E":
case "N":
case "W":
n += 5;
break;
case "f":
case "o":
case "x":
case "F":
case "O":
case "X":
n += 6;
break;
case "g":
case "p":
case "y":
case "G":
case "P":
case "Y":
n += 7;
break;
case "h":
case "q":
case "z":
case "H":
case "Q":
case "Z":
n += 8;
break;
case "i":
case "r":
case "I":
case "R":
n += 9;
break;
case " ":
case "-":
n += 0;
break;
default:
return -1;
}
}
return trans_num(n);//возвращаем однозначное число
}
Число имени должно быть однозначным. Для его получения применяется метод trans_num
:
private int trans_num(int num){
while (num>=10){//если число не является однозначным
num=(num/10)+(num%10);//превращаем в однозначное
}
return num;
}
Для вычисления числа рождения нужно сложить все цифры даты рождения. Этим занимается следующий код:
private int births_number(int n,int l,int m){
int numbr=trans_num(n)+trans_num(l)+trans_num(m);//слаживаем все числа даты
return trans_num(numbr);
}
Квадрат Пифагора
Или по другому это еще называется психоматрицей. Чтобы ее получить нужно сначала вычислить несколько, так называемых рабочих чисел, с помощью несложных арифметических операций с цифрами даты рождения.
Пример:
Дата: 5 декабря 1979 года.
Складываем цифры дня, месяца и года рождения: 5+1+2+1+9+7+9=34 — это 1-ое рабочее число.
Складываем цифры первого рабочего числа: 3+4=7 — это 2-ое рабочее число.
Из первого рабочего числа вычитаем удвоенную первую цифру дня рождения: 34-2*5=24 — это 3-е рабочее число.
Складываем цифры третьего рабочего числа: 2+4=6 — это 4-ое рабочее число. Первый ряд чисел: 5121979 Второй ряд чисел: 347246. Подсчитав, сколько каких цифр в обоих рядах, составляем таблицу:
11...22...3
44...5....6
77...---...99
Для вычисления психоматрицы создан такой метод:
private string psychomatrix(int n,int l,int m){
int[] mas = new int[16];
mas[0] = (n / 10);
mas[1] = n % 10;
int c;
int z;
if (mas[0] == 0)
{
c= mas[1];
} else
{
c= mas[0];
}
mas[4]= m % 10;
z = m / 10;
mas[5] = z % 10;
z = z / 10;
mas[6] = z % 10;
z = z / 10;
mas[7]=z;
if(l<10){
mas[2]=0;
mas[3]=l;
}else{
mas[2]=1;
mas[3]=l-10;
}
int sum = mas[0] + mas[1] + mas[2] + mas[3] + mas[4] + mas[5] + mas[6] + mas[7];
mas[8] = sum/ 10;
mas[9] = sum % 10;
mas[10] = (mas[8]+mas[9])/ 10;
mas[11] = (mas[8]+mas[9])% 10;
mas[12] = (sum-(2*c)) / 10;
mas[13] = (sum-(2*c)) % 10;
mas[14] = (mas[12]+mas[13]) / 10;
mas[15] = (mas[12]+mas[13]) % 10;
string[] str = new string[9];
for (var i=0;i<9;i++){
str[i]="";
}
for (var i=0;i<16;i++){//группируем одинаковые числа
switch (mas[i]){
case 0:break;
case 1:str[0]=str[0]+"1";break;
case 2:str[1]=str[1]+"2";break;
case 3:str[2]=str[2]+"3";break;
case 4:str[3]=str[3]+"4";break;
case 5:str[4]=str[4]+"5";break;
case 6:str[5]=str[5]+"6";break;
case 7:str[6]=str[6]+"7";break;
case 8:str[7]=str[7]+"8";break;
case 9:str[8]=str[8]+"9";break;default:break;
}
}
string matrix = "";
for(int i=0;i<9;i++){//формируем таблицу 3X3
if(i==2||i==5){
matrix=matrix+str[i]+"\n";
}else{
matrix=matrix+str[i]+" ";
}
}
return matrix;
}
Восточный гороскоп
Определением знака по восточному гороскопу занят вот этот метод:
private string ost_horoscope(int n){
while (n>12){//возвращаемся в начало нашей эры
n-=12;
}
switch (n){
case 1:
return "cock";
case 2:
return "dog";
case 3:
return "pig";
case 4:
return "rat";
case 5:
return "bull";
case 6:
return "tiger";
case 7:
return "rabbit";
case 8:
return "the Dragon";
case 9:
return "snake";
case 10:
return "horse";
case 11:
return "goat";
case 12:
return "monkey";
default:
return "";
}
}
Знаки Зодиака
Кроме зодиакальных знаков программа рассчитывает еще знаки славянского и египетского гороскопов, но так как принцип расчета у всех этих знаков одинаковый, то приведу только метод для расчета зодиакальных знаков:
private string zodiac_horoscope(int n,int month){
string f;
if (month==3&&n>20||month==4&&n<21)f="Aries";
else if (month==4&&n>20||month==5&&n<22)f="Taurus";
else if (month==5&&n>21||month==6&&n<22)f="Gemini";
else if (month==6&&n>21||month==7&&n<23)f="Cancer";
else if (month==7&&n>22||month==8&&n<22)f="Leo";
else if (month==8&&n>21||month==9&&n<24)f="Virgo";
else if (month==9&&n>23||month==10&&n<24)f="Libra";
else if (month==10&&n>23||month==11&&n<23)f="Scorpio";
else if (month==11&&n>22||month==12&&n<23)f="Sagittarius";
else if (month==12&&n>22||month==1&&n<21)f="Capricorn";
else if (month==1&&n>20||month==2&&n<20)f="Aquarius";
else if (month==2&&n>19||month==3&&n<21)f="Pisces";
else return "";
return f;
}
Дата-центр ITSOFT — размещение и аренда серверов и стоек в двух дата-центрах в Москве. За последние годы UPTIME 100%. Размещение GPU-ферм и ASIC-майнеров, аренда GPU-серверов, лицензии связи, SSL-сертификаты, администрирование серверов и поддержка сайтов.
simplix
Вы явно перепутали ресурс.