Астрология и нумерология на Vala

от автора

Привет, Хабр!

В Сети можно найти тонны самого разного софта для астрологических и нумерологических расчетов. Решил и я написать свой вариант. Моя программка не строит натальные карты, но умеет рассчитывать числа рождения и имени, квадрат Пифагора, а также вычислять знаки по нескольким гороскопам. Ниже рассматриваются интерфейс и код программы.

Интерфейс приложения

Вот так программа выглядит:

Интерфейс программы состоит из двух страниц. На первой странице пользователь вводит свое имя и дату рождения:

А на второй уже получает результат:

Есть возможность сохранять результаты в виде текстового файла. Иерархия компонентов в редакторе 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 года.

  1. Складываем цифры дня, месяца и года рождения: 5+1+2+1+9+7+9=34 — это 1-ое рабочее число.

  2. Складываем цифры первого рабочего числа: 3+4=7 — это 2-ое рабочее число.

  3. Из первого рабочего числа вычитаем удвоенную первую цифру дня рождения: 34-2*5=24 — это 3-е рабочее число.

  4. Складываем цифры третьего рабочего числа: 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-сертификаты, администрирование серверов и поддержка сайтов.

ссылка на оригинал статьи https://habr.com/ru/company/itsoft/blog/555792/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *