ax-calculator
Version:
Complex Math Calculator
1 lines • 31.8 kB
JavaScript
;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from==="object"||typeof from==="function"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:true}),mod);var main_exports={};__export(main_exports,{Base:()=>Base,BasicOperations:()=>BasicOperations,ChemicalElements:()=>ChemicalElements,Clock:()=>Clock,Config:()=>Config,Equations:()=>Equations,Fractions:()=>Fractions,LinearCongruences:()=>LinearCongruences,Operations:()=>Operations,Percentage:()=>Percentage,RegexValidator:()=>RegexValidator,RuleOfThree:()=>RuleOfThree,SystemEquation:()=>SystemEquation,Triangles:()=>Triangles,Validator:()=>Validator});module.exports=__toCommonJS(main_exports);var SystemEquation={double:function(equation1,equation2){if(Validator.isArray(equation1)&&Validator.isArray(equation2)){var a,b,c,d,e,f,x,y;a=equation1[0];b=equation1[1];c=equation1[2];d=equation2[0];e=equation2[1];f=equation2[2];if(a!=void 0&&b!=void 0&&c!=void 0&&d!=void 0&&e!=void 0&&f!=void 0&&x!=void 0&&y!=void 0){x=(c*e-b*f)/(a*e-b*d);y=(a*f-c*d)/(a*e-b*d)}return{x:x,y:y}}else{let msg=Config().language=="en"?"Place the objects[] with the equation values":"Coloca el arreglo con los valores de la equación";return"[x] SystemEquation: "+msg}}};var Equations={secondDegree:function(a,b,c){if(typeof c=="undefined"){let x,internal=b*-1/a;if(!Number.isInteger(internal)){var top=b*-1;var bottom=a;if(Number.isInteger(Math.sqrt(b*-1))){top=Math.sqrt(b*-1)}if(Number.isInteger(Math.sqrt(a))){bottom=Math.sqrt(a)}internal=String(top)+"/"+bottom;x=`±√${internal}`}else{if(internal<0){if(Number.isInteger(Math.sqrt(internal*-1))){internal=Math.sqrt(internal*-1);x=`±${internal}𝓲`}else{x="𝓲√"+internal*-1}}else{x=Math.sqrt(internal)}}return x}else{let internal=b*b-4*a*c;let interna2=Math.sqrt(internal);let x1,x2;if(!Number.isInteger(interna2)){interna2="√"+internal}if(internal<0){interna2=`𝓲√${String(-1*internal)}`}if(typeof interna2=="string"){x1=String(-1*b)+"/"+String(2*a)+" + "+interna2+"/"+String(2*a);x2=String(-1*b)+"/"+String(2*a)+" - "+interna2+"/"+String(2*a);return{x1:x1,x2:x2}}else{x1=((-1*b+interna2)/(2*a)).toFixed(2);x2=((-1*b-interna2)/(2*a)).toFixed(2)}if(Number.parseInt(x1)<1){let top2=-1*b+Math.sqrt(b*b-4*a*c);let bottom2=2*a;for(let i=2;i<13;i++){while(top2/i>0&&bottom2/i>0){if(top2%i==0&&bottom2%i==0){top2=top2/i;bottom2=bottom2/i}else{if(Number.parseInt(x1)<0){x1="-"+String(top2+"/"+bottom2)}else{x1=String(top2+"/"+bottom2)}break}}}}if(Number.parseInt(x2)<1){var top=-1*b-Math.sqrt(b*b-4*a*c);var bottom=2*a;for(let i=2;i<13;i++){while(top/i>0&&bottom/i>0){if(top%i==0&&bottom%i==0){top=top/i;bottom=bottom/i}else{if(top<0){x2="-"+String(top+"/"+bottom)}else{x2=String(top+"/"+bottom)}break}}}}return{x1:x1,x2:x2}}}};var BasicOperations={sum:function(...parameters){for(let i=0;i<=parameters.length-1;i++){if(typeof parameters[i]!="number"){let msg=Config().language=="en"?"Place numbers":"Coloca números";return"[x] sum: "+msg}}let result=0;parameters.forEach(((number,index)=>{result+=number}));return{result:result,toNegative:function(){return result*-1}}},substract:function(...parameters){for(var i=0;i<=parameters.length-1;i++){if(typeof parameters[i]!="number"){let msg=Config().language=="en"?"Place numbers":"Coloca números";return"[x] substract: "+msg}}},product:function(...parameters){for(let i=0;i<=parameters.length-1;i++){if(typeof parameters[i]!="number"){let msg=Config().language=="en"?"Place numbers":"Coloca números";return"[x] product: "+msg}}let result=1;parameters.forEach(((number,index)=>{result*=number;console.log(number)}));return{result:result,toNegative(){return result*-1}}},division:function(number1,number2){if(!Validator.isNumber(number1,number2)){let msg=Config().language=="en"?"Place two numbers":"Coloca dos números";return"[x] division: "+msg}else return number1/number2},module:function(number1,number2){if(typeof number1!="number"||typeof number2!="number"){let msg=Config().language=="en"?"Place two numbers":"Coloca dos números";return"[x] module: "+msg}else{return number1%number2}},raiseTo:function(number,exponent){if(typeof number!="number"||typeof exponent!="number"){let msg=Config().language=="en"?"Place two numbers":"Coloca dos números";return"[x] raiseTo: "+msg}else{if(exponent==0){return 1}else if(exponent<0){return`1/${number**(exponent*-1)}`}else{return number**exponent}}},root:function(number,root=2){if(typeof number!="number"||typeof root!="number"){let msg=Config().language=="en"?"Place a number":"Coloca un número";return"[x] root: "+msg}else{return number**(1/root)}},probability:function(items){function randomItem(){const probability=Math.random();let cumulativeProbability=0;for(const item in items){cumulativeProbability+=items[item];if(probability<=cumulativeProbability){return item}}throw new Error("No item found")}return randomItem()},Chaining:class{constructor(){this.value=0}baseNumber(value){typeof value==="number"?this.value=value:"[x] Base Number: Place a number";return this}sum(value){this.value+value;return this}multiply(value){if(this.value==0){return"[x] You can't multiply with anything"}else if(typeof value!="number"){return"[x] Multiply: Place a number"}else{this.value=this.value*value;return this}}substract(value){if(this.value==0){return"[x] You can't substract with anything"}else if(typeof value!="number"){return"[x] Substract Error: Place a number"}else{this.value=this.value-value;return this}}divide(value){if(this.value==0){return"[x] You can't divide with anything"}else if(typeof value!="number"){return"[x] Divide Error: Place a number"}else{this.value=this.value/value;return this}}}};var RuleOfThree={simple:function(type,a,b,c,d){if(type=="direct"){if(a===void 0){let top=b*c,bottom=d;let bober2=top<0?true:false;let a2=top/bottom;if(!Number.isInteger(a2)){if(bober2==true)top=top*-1;for(let i=2;i<13;i++){while(top/i>0&&bottom/i>0){if(top%i==0&&bottom%i==0){top=top/i;bottom=bottom/i}else{if(bober2)a2=`-${top}/${bottom}`;else a2=`${top}/${bottom}`;break}}}}return a2}else if(b===void 0){let top=a*d,bottom=c;let bober2=top<0?true:false;let b2=top/bottom;if(!Number.isInteger(b2)){if(bober2==true){top=top*-1}for(let i=2;i<13;i++){while(top/i>0&&bottom/i>0){if(top%i==0&&bottom%i==0){top=top/i;bottom=bottom/i}else{if(bober2){b2=`-${top}/${bottom}`}else{b2=`${top}/${bottom}`}break}}}}return b2}else if(c===void 0){let top=d*a,bottom=b;var bober=top<0?true:false;let c2=top/bottom;if(!Number.isInteger(c2)){if(bober==true)top=top*-1;for(let i=2;i<13;i++){while(top/i>0&&bottom/i>0){if(top%i==0&&bottom%i==0){top=top/i;bottom=bottom/i}else{if(bober)c2=`-${top}/${bottom}`;else c2=`${top}/${bottom}`;break}}}}return c2}else{let top=b*c,bottom=a;let bober2=top<0?true:false;let d2=top/bottom;if(!Number.isInteger(d2)){if(bober2==true)top=top*-1;for(let i=2;i<13;i++){while(top/i>0&&bottom/i>0){if(top%i==0&&bottom%i==0){top=top/i;bottom=bottom/i}else{if(bober2)d2=`-${top}/${bottom}`;else d2=`${top}/${bottom}`;break}}}}return d2}}else if(type=="inverse"){if(a===void 0){let top=b*d,bottom=c;let bober2=top<0?true:false;let a2=top/bottom;if(!Number.isInteger(a2)){if(bober2==true)top=top*-1;for(let i=2;i<13;i++){while(top/i>0&&bottom/i>0){if(top%i==0&&bottom%i==0){top=top/i;bottom=bottom/i}else{if(bober2)a2=`-${top}/${bottom}`;else a2=`${top}/${bottom}`;break}}}return a2}}else if(b===void 0){let top=a*c,bottom=d;let bober2=top<0?true:false;let b2=top/bottom;if(!Number.isInteger(b2)){if(bober2==true)top=top*-1;for(let i=2;i<13;i++){while(top/i>0&&bottom/i>0){if(top%i==0&&bottom%i==0){top=top/i;bottom=bottom/i}else{if(bober2)b2=`-${top}/${bottom}`;else b2=`${top}/${bottom}`;break}}}}return b2}else if(c===void 0){let top=b*d,bottom=a;let bober2=top<0?true:false;let c2=top/bottom;if(!Number.isInteger(c2)){if(bober2==true)top=top*-1;for(let i=2;i<13;i++){while(top/i>0&&bottom/i>0){if(top%i==0&&bottom%i==0){top=top/i;bottom=bottom/i}else{if(bober2)c2=`-${top}/${bottom}`;else c2=`${top}/${bottom}`;break}}}}return c2}else{let top=a*c,bottom=b;let bober2=top<0?true:false;let d2=top/bottom;if(!Number.isInteger(d2)){if(bober2==true)top=top*-1;for(let i=2;i<13;i++){while(top/i>0&&bottom/i>0){if(top%i==0&&bottom%i==0){top=top/i;bottom=bottom/i}else{if(bober2)d2=`-${top}/${bottom}`;else d2=`${top}/${bottom}`;break}}}}return d2}}else{return"You must write 'direct' or 'inverse', there are no other ways."}}};var Percentage={whatPercentageIs:function(number,total){if(!Validator.isNumber(number,total)){let msg=Config().language=="en"?"Only numbers":"Coloca solo números";return"[x] whatPercentageIs: "+msg}else{let result=number*100/total;return String(result.toFixed(2))+"%"}},percentageOf:function(percentage,total){if(!Validator.isNumber(percentage,total)){let msg=Config().language=="en"?"Only numbers":"Coloca solo números";return"[x] percentageOf: "+msg}else{let result=percentage*total/100;return result}},percentFromPercent:function(percentage1,value1,percentage2){if(Validator.isNumber(percentage1,value1,percentage2)){let result=value1*percentage2/percentage1;if(Number.isInteger(result))return result;else return result.toFixed(2)}else{let msg=Config().language=="en"?"Only numbers":"Coloca solo números";return"[x] percentFromPercent :"+msg}},totalFromPercent:function(percentage,value){if(Validator.isNumber(percentage,value)){let result=value*100/percentage;if(Number.isInteger(result))return result;else return result.toFixed(2)}else{let msg=Config().language=="en"?"Place numbers":"Coloca solo números";return"[x] totalFromPercent: "+msg}}};var Fractions={sum:function(numerator1,denominator1,numerator2,denominator2){let result,bober=false;if(denominator1==denominator2){let top=numerator1+numerator2;let bottom=denominator1;if(top<0){bober=true;top=top*-1}if(top/bottom%1==0){result=String(top/bottom)}else{result=String(top)+"/"+String(bottom)}}else{let top=denominator2*numerator1+denominator1*numerator2;let bottom=denominator1*denominator2;result=simplify(top,bottom)}return result},substract:function(numerator1,denominator1,numerator2,denominator2){var result;if(denominator1==denominator2){var top=numerator1-numerator2;var bottom=denominator1;if(top/bottom%1==0){result=String(top/bottom)}else{result=String(top)+"/"+String(bottom)}}else{var top=denominator2*numerator1-denominator1*numerator2;var bottom=denominator1*denominator2;result=simplify(top,bottom)}return result},product:function(numerator1,denominator1,numerator2,denominator2){var top=numerator1*numerator2;var bottom=denominator1*denominator2;return simplify(top,bottom)},division:function(numerator1,denominator1,numerator2,denominator2){var top=numerator1*denominator2;var bottom=denominator1*numerator2;return simplify(top,bottom)},simplify:function(top,bottom){return simplify(top,bottom)},destructure:function(fraction){return destructure(fraction)}};function simplify(top,bottom){let result="";var bober=false;if(top<0){bober=true;top=top*-1}if(bottom<0){bober=true;bottom=bottom*-1}for(let i=2;i<20;i++){while(top/i>0&&bottom/i>0){if(top%i==0&&bottom%i==0){top=top/i;bottom=bottom/i}else{if(bober){result="-"+String(top)+"/"+String(bottom)}else{result=String(top)+"/"+String(bottom)}break}}}return result}function destructure(string){let array=string.split("/");var top=array[0],bottom=array[1];return{top:top,bottom:bottom}}var Base={toBase:function(number,base){if(!Validator.isNumber(number,base)){let msg=Config().language=="en"?"This function requires numbers":"Esta función requiere números";return"[x] Base.toBase: "+msg}else return number.toString(base)},binaryToBase10:function(number){if(Validator.isNumber(number)){let binary=number.toString().replace(/[^01]/gi,"");return Number.parseInt(binary,2).toString()}else{let msg=Config().language=="en"?"You must place a binary number":"Coloca un número binario";return"[x] Base.binaryToBase10: "+msg}}};var LinearCongruences={simple:function(a,b,module2,range=10){let values=[];if(range<=0){throw new Error("Error in LinearCongruences. You must have a range greater than 0")}for(let i=1;i<=range;i++){if((a*i-b)%module2==0){values.push(i);continue}}return values}};var elements=[addElement("H",1,1,"Hydrogen","I A","Non-metal",2.2),addElement("He",2,4,"Helium","VIII A","Noble gas",null),addElement("Li",3,7,"Lithium","I A","Alkali metal",1),addElement("Be",4,9,"Beryllium","II A","Alkaline earth metal",1.6),addElement("B",5,11,"Boron","III A","Metalloid",2),addElement("C",6,12,"Carbon","IV A","Non-metal",2.5),addElement("N",7,14,"Nitrogen","V A","Non-metal",3),addElement("O",8,16,"Oxygen","VI A","Non-metal",3.5),addElement("F",9,19,"Fluorine","VII A","Halogen",4),addElement("Ne",10,20,"Neon","VIII A","Noble gas",null),addElement("Na",11,23,"Sodium","I A","Alkali metal",.9),addElement("Mg",12,24,"Magnesium","II A","Alkaline earth metal",1.2),addElement("Al",13,27,"Aluminium","III A","Metal",1.5),addElement("Si",14,28,"Silicon","IV A","Metalloid",1.8),addElement("P",15,31,"Phosphorus","V A","Non-metal",2.1),addElement("S",16,32,"Sulful","VI A","Non-metal",2.5),addElement("Cl",17,35,"Chlorine","VII A","Halogen",3),addElement("Ar",18,40,"Argon","VIII A","Noble gas",null),addElement("K",19,39,"Potassium","I A","Alkali metal",.8),addElement("Ca",20,40,"Calcium","II A","Alkaline earth metal",1),addElement("Sc",21,45,"Scandium","III B","Transition metal",1.3),addElement("Ti",22,48,"Titanium","IV B","Transition metal",1.5),addElement("V",23,51,"Vanadium","V B","Transition metal",1.6),addElement("Cr",24,52,"Chromium","VI B","Transition metal",1.6),addElement("Mn",25,55,"Manganese","VII B","Transition metal",1.5),addElement("Fe",26,56,"Iron","VIII B","Transition metal",1.8),addElement("Co",27,59,"Cobalt","VIII B","Transition metal",1.9),addElement("Ni",28,59,"Nickel","VIII B","Transition metal",1.9),addElement("Cu",29,64,"Copper","I B","Transition metal",1.9),addElement("Zn",30,65,"Zinc","II B","Transition metal",1.6),addElement("Ga",31,70,"Gallium","III A","Metal",1.6),addElement("Ge",32,73,"Germanium","IV A","Metalloid",1.8),addElement("As",33,75,"Arsenic","V A","Metalloid",2),addElement("Se",34,79,"Selenium","VI A","Non-metal",2.4),addElement("Br",35,80,"Bromine","VII A","Halogen",2.8),addElement("Kr",36,84,"Krypton","VIII A","Noble gas",3),addElement("Rb",37,85,"Rubidium","I A","Alkali metal",.8),addElement("Sr",38,88,"Strontium","II A","Alkaline earth metal",1),addElement("Y",39,89,"Yttrium","III B","Transition metal",1.2),addElement("Zr",40,91,"Zicronium","IV B","Transition metal",1.3),addElement("Nb",41,93,"Niobium","V B","Transition metal",1.6),addElement("Mo",42,96,"Molybdenum","VI B","Transition metal",2.2),addElement("Tc",43,98,"Technetium","VII B","Transition metal",1.9),addElement("Ru",44,101,"Ruthenium","VIII B","Transition metal",2.2),addElement("Rh",45,102,"Rhodium","VIII B","Transition metal",2.3),addElement("Pd",46,106,"Palladium","VIII B","Transition metal",2.2),addElement("Ag",47,108,"Silver","I B","Transition metal",1.9),addElement("Cd",48,112,"Cadmium","II B","Transition metal",1.7),addElement("In",49,115,"Indium","III A","Metal",1.8),addElement("Sn",50,119,"Tin","IV A","Metal",1.8),addElement("Sb",51,122,"Antimony","V A","Metalloid",2.1),addElement("Te",52,128,"Tellurium","VI A","Metalloid",2.1),addElement("I",53,127,"Iodine","VII A","Halogen",2.7),addElement("Xe",54,131,"Xenon","VIII A","Noble gas",2.6),addElement("Cs",55,133,"Caesium","I A","Alkali metal",.8),addElement("Ba",56,137,"Barium","II A","Alkaline earth metal",.9),addElement("La",57,139,"Lanthanum","III B","Lanthanide",1.1),addElement("Ce",58,140,"Cerium","III B","Lanthanide",1.1),addElement("Pr",59,141,"Praseodymium","III B","Lanthanide",1.1),addElement("Nd",60,144,"Neodymium","III B","Lanthanide",1.1),addElement("Pm",61,145,"Promethium","III B","Lanthanide",1.1),addElement("Sm",62,150,"Samarium","III B","Lanthanide",1.2),addElement("Eu",63,152,"Europium","III B","Lanthanide",1.2),addElement("Gd",64,157,"Gadolinium","III B","Lanthanide",1.2),addElement("Tb",65,159,"Teribium","III B","Lanthanide",1.1),addElement("Dy",66,163,"Dysprosium","III B","Lanthanide",1.2),addElement("Ho",67,165,"Holmium","III B","Lanthanide",1.2),addElement("Er",68,167,"Erbium","III B","Lanthanide",1.2),addElement("Tm",69,169,"Thulium","III B","Lanthanide",1.3),addElement("Yb",70,173,"Ytterbium","III B","Lanthanide",1.1),addElement("Lu",71,175,"Lutetium","III B","Lanthanide",1.3),addElement("Hf",72,178,"Hafnium","IV B","Transition metal",1.3),addElement("Ta",73,181,"Tantalum","V B","Transition metal",1.5),addElement("W",74,184,"Tungsten","VI B","Transition metal",2.4),addElement("Re",75,186,"Rhenium","VII B","Transition metal",1.9),addElement("Os",76,190,"Osmium","VIII B","Transition metal",2.2),addElement("Ir",77,192,"Iridium","VIII B","Transition metal",2.2),addElement("Pt",78,195,"Platinum","VIII B","Transition metal",2.3),addElement("Au",79,197,"Gold","I B","Transition metal",2.5),addElement("Hg",80,200,"Mercury","II B","Transition metal",2),addElement("Tl",81,204,"Thalium","III A","Metal",1.6),addElement("Pb",82,207,"Lead","IV A","Metal",2.3),addElement("Bi",83,209,"Bismuth","V A","Metal",2),addElement("Po",84,209,"Polonium","VI A","Metalloid",2),addElement("At",85,210,"Astatine","VII A","Halogen",2.2),addElement("Rn",86,222,"Radon","VIII A","Noble gas",2.2),addElement("Fr",87,223,"Francium","I A","Alkali metal",.7),addElement("Ra",88,226,"Radium","II A","Alkaline earth metal",.9),addElement("Ac",89,227,"Actinium","III B","Actinide",1.1),addElement("Th",90,232,"Thorium","III B","Actinide",1.3),addElement("Pa",91,231,"Protactinium","III B","Actinide",1.5),addElement("U",92,238,"Uranium","III B","Actinide",1.4),addElement("Np",93,237,"Neptunium","III B","Actinide",1.4),addElement("Pu",94,244,"Plutonium","III B","Actinide",1.3),addElement("Am",95,243,"Americium","III B","Actinide",1.1),addElement("Cm",96,247,"Clurium","III B","Actinide",1.3),addElement("Bk",97,247,"Berkelium","III B","Actinide",1.3),addElement("Cf",98,251,"Californium","III B","Actinide",1.3),addElement("Es",99,252,"Einsteinium","III B","Actinide",1.3),addElement("Fm",100,257,"Fermium","III B","Actinide",1.3),addElement("Md",101,258,"Mendelevium","III B","Actinide",1.3),addElement("No",102,259,"Nobelium","III B","Actinide",1.3),addElement("Lr",103,262,"Lawrencium","III B","Actinide",1.3),addElement("Rf",104,267,"Rutherfordium","IV B","Transition metal",null),addElement("Db",105,268,"Dubnium","V B","Transition metal",null),addElement("Sg",106,271,"Seaborgium","VI B","Transition metal",null),addElement("Bh",107,272,"Bohrium","VII B","Transition metal",null),addElement("Hs",108,277,"Hassium","VIII B","Transition metal",null),addElement("Mt",109,276,"Meitnerium","VIII B","Transition metal",null),addElement("Ds",110,281,"Darmstadtium","VIII B","Transition metal",null),addElement("Rg",111,280,"Roentgenium","I B","Transition metal",null),addElement("Cn",112,285,"Copernicium","II B","Transition metal",null),addElement("Nh",113,284,"Nihonium","III A","Metal",null),addElement("Fl",114,289,"Flevorium","IV A","Metal",null),addElement("Mc",115,288,"Moscovio","V A","Metal",null),addElement("Lv",116,292,"Livermorium","VI A","Metal",null),addElement("Ts",117,294,"Teneso","VII A","Halogen",null),addElement("Og",118,294,"Oganesson","VIII A","Noble gas, null",null)];function addElement(simbol,atomic_number,atomic_mass,name,group,type,electronegativity){var element={simbol:simbol,atomic_number:atomic_number,atomic_mass:atomic_mass,name:name,group:group,type:type,electronegativity:electronegativity};return element}var ChemicalElements={show:function(param){var _a,_b,_c;for(let i=0;i<elements.length;i++){if(Validator.isString(param)){if(((_a=elements[i])==null?void 0:_a.simbol)==param)return elements[i];if(((_b=elements[i])==null?void 0:_b.name)==param)return elements[i]}else if(Validator.isNumber(param)){if(((_c=elements[i])==null?void 0:_c.atomic_number)==param)return elements[i]}else if(Validator.isUndefined(param))return elements;else{let msg=Config().language=="en"?"Place the atomic number, the element symbol or do not place parameters":"Coloca el número atómico, el simbolo del elemento o no parámetros";return"[x] ChemicalElements.show: "+msg}}},obtainByFamily:function(type){var _a;let result=[];if(Validator.isString(type)){for(var i=0;i<elements.length;i++){if(((_a=elements[i])==null?void 0:_a.type)==type)result.push(elements[i])}}else{let msg=Config().language=="en"?"You must place a string":"Debes colocar una cadena";return"[x] obtainByFamily: "+msg}return result},obtainByGroup:function(group){var _a;let result=[];if(Validator.isString(group)){for(var i=0;i<elements.length;i++){if(((_a=elements[i])==null?void 0:_a.group)==group)result.push(elements[i])}}else{let msg=Config().language=="en"?"You must place a string":"Debes colocar una cadena";return"[x] obtainByGroup: "+msg}return result}};var Operations={hypotenuse:function(param1,param2){if(!Validator.isNumber(param1,param2)){let msg=Config().language=="en"?"This function requires numbers":"Esta función requiere números";return"[x] Operations.hypotenuse: "+msg}else{let result=Math.sqrt(param1*param1+param2*param2);if(Number.isInteger(result))return result;else return"√"+String(result.toFixed(2))}},log:function(base,argument,logarithm){if(base==null)return argument**(1/logarithm);else if(argument==null)return base**logarithm;else{for(let i=2;i<13;i++){if(base**i==argument)return i}}},combinatorial:function(top,bottom){if(!Validator.isNumber(top,bottom)){return"You must enter a number"}else{return Number.parseInt(factorial(top,1).toString())/(Number.parseInt(factorial(top-bottom,1).toString())*Number.parseInt(factorial(bottom,1).toString()))}},fibonacci:function(maxlength){let n1=0,n2=1,nextTerm;var serie=[0,1];if(maxlength<2){return"The base number of digits is 2"}else if(typeof maxlength!="number"){return"You must enter a numerical value"}else{for(var i=1;i<=maxlength-2;i++){nextTerm=n1+n2;n1=n2;n2=nextTerm;serie.push(nextTerm)}}return serie},divisors:function(number){if(!Validator.isNumber(number)){return"[x] Operations.divisors: Place a number"}else{return _divisors(number)}},factorial:function(number){return factorial(number,1)},doubleFactorial:function(number){return factorial(number,2)}};function _divisors(number){let arr=[];for(let i=1;i<=number;i++){if(number%i==0){arr.push(i)}}return arr}function factorial(number,decrease){let result=1;if(!Validator.isNumber(number)){return"[x] Operations.factorial: You must enter a number"}else if(number<0){return"[!] Operations.factorial: For now, it only receives positive numbers"}else{if(number===0||number===1)result=1;else if(number===2&&decrease===2)result=2;else{for(let i=number-decrease;i>=1;i-=decrease){result=number*=i}}}return result}var Triangles={angle30_60:function(){return Config().disabledTriangleConstants?triangle("2","1","√3"):triangle("2k","k","k√3")},angle45:function(){return Config().disabledTriangleConstants?triangle("√2","1","1"):triangle("k√2","k","k")},angle37_53:function(){return Config().disabledTriangleConstants?triangle("5","3","4"):triangle("5k","3k","4k")},angle16_74:function(){return Config().disabledTriangleConstants?triangle("25","7","24"):triangle("25k","7k","24k")},angle14_76:function(){return Config().disabledTriangleConstants?triangle("√17","1","4"):triangle("k√17","k","4k")},angle15_75:function(){return Config().disabledTriangleConstants?triangle("4","(√6 - √2)","(√6 + √2)"):triangle("4k","(√6 - √2)k","(√6 + √2)k")},angle50_40:function(){return Config().disabledTriangleConstants?triangle("√61","6","5"):triangle("k√61","6k","5k")},angle8_82:function(){return Config().disabledTriangleConstants?triangle("5√2","1","7"):triangle("5k√2","k","7k")},angle70_20:function(){return Config().disabledTriangleConstants?triangle("√137","11","4"):triangle("k√137","11k","4k")},angle35_55:function(){return Config().disabledTriangleConstants?triangle("√149","7","10"):triangle("k√149","7k","10k")},angle36_54:function(){return Config().disabledTriangleConstants?triangle("4","√(10 - 2√5)","(√5 + 1)"):triangle("4k","k√(10 - 2√5)","k(√5 + 1)")}};function triangle(hypotenuse,opposite,adjacent){let sin=`${opposite}/${hypotenuse}`,cos=`${adjacent}/${hypotenuse}`,tan=`${opposite}/${adjacent}`;return{hypotenuse:hypotenuse,opposite:opposite,adjacent:adjacent,sin:sin,cos:cos,tan:tan}}var Validator={isNumber:function(...param){return simpleValidate(param,"number")},isEven:function(number){if(this.isNumber(number))return number%2==0;else{let msg=Config().language=="en"?"Place the number to be evalue":"Coloca el número a evaluar";return"[x] isEven: "+msg}},isOdd:function(number){if(this.isNumber(number))return number%2!=0;else{let msg=Config().language=="en"?"Place the number to be evalue":"Coloca el número a evaluar";return"[x] isOdd: "+msg}},isBoolean:function(...param){return simpleValidate(param,"boolean")},isString:function(...param){return simpleValidate(param,"string")},isObject:function(param){return typeof param==="object"&&!Array.isArray(param)},isArray:function(param){return Array.isArray(param)},isUndefined:function(param){return typeof param==="undefined"},containsString:function(object){let bool;if(this.isArray(object)){let total=object.length;for(let i=0;i<=total-1;i++){typeof object[i]==="string"?bool=true:bool=false}}else return"[x] containsString requires a object[]";return bool},containsNumber:function(object){let bool;if(this.isArray(object)){let total=object.length;for(let i=0;i<=total-1;i++){typeof object[i]==="number"?bool=true:bool=false}}else{return"[x] containsNumber requires a object[]"}return bool},containsObject:function(object){let bool=false;if(this.isArray(object)){let total=object.length;for(let i=0;i<=total-1;i++){typeof object[i]==="object"&&!this.isArray(object[i])?bool=true:bool=false}return bool}else throw new Error("[x] containsObject requires an Array")},containsArray:function(object){let bool=false;if(this.isArray(object)){let total=object.length;for(let i=0;i<=total-1;i++){this.isArray(object[i])?bool=true:bool=false}return bool}else throw new Error("[x] containsArray requires an Array")}};function simpleValidate(param,type){let bool=true;if(Validator.containsArray(param)||Validator.containsObject(param)){return false}else{for(let i=0;i<param.length;i++){typeof param[i]==type?bool=true:bool=false}}return bool}var cfg={language:"en",history:true,globalMessage:"",PI:3.1415926,disabledTriangleConstants:false};function Config(props){if(Validator.isObject(props)){cfg.language=(props==null?void 0:props.language)&&Validator.isString(props.language)?props.language:cfg.language;cfg.history=(props==null?void 0:props.history)&&Validator.isBoolean(props==null?void 0:props.history)?props.history:cfg.history;cfg.globalMessage=(props==null?void 0:props.globalMessage)&&Validator.isString(props==null?void 0:props.globalMessage)?props.globalMessage:cfg.globalMessage;cfg.PI=(props==null?void 0:props.PI)&&Validator.isNumber(props==null?void 0:props.PI)?props.PI:cfg.PI;cfg.disabledTriangleConstants=(props==null?void 0:props.disabledTriangleConstants)&&Validator.isBoolean(props==null?void 0:props.disabledTriangleConstants)?props.disabledTriangleConstants:cfg.disabledTriangleConstants}return Object.seal(cfg)}var Clock={time:function(seconds=false,spacing=false){if(Validator.isBoolean(seconds,spacing)){let date=new Date,time="";let hour=String(date.getHours()),minute=String(date.getMinutes()),second=String(date.getSeconds());hour.length==1?hour=`0${hour}`:hour=hour;minute.length==1?minute=`0${minute}`:minute=minute;second.length==1?second=`0${second}`:second=second;if(seconds==true&&spacing==true)time=`${hour} : ${minute} : ${second}`;else if(seconds==false&&spacing==true)time=`${hour} : ${minute}`;else if(seconds==true&&spacing==false)time=`${hour}:${minute}:${second}`;else time=`${hour}:${minute}`;return time}else{let msg="";Config().language=="en"?msg="This function requires boolean parameters":msg="Esta función requiere parámetros boleanos";return"[x] Clock.time: "+msg}},date:function(format="US",optionalYear=true){if(Validator.isString(format)&&Validator.isBoolean(optionalYear)){let date=new Date,fullDate="";let day=String(date.getDate()),month=String(date.getMonth()+1),year=String(date.getFullYear());day.length==1?day=`0${day}`:day=day;month.length==1?month=`0${month}`:month=month;if(optionalYear==true){if(format=="US")fullDate=`${month}/${day}/${year}`;else if(format=="EUR")fullDate=`${day}/${month}/${year}`;else if(format=="AS")fullDate=`${year}/${month}/${day}`;else{let msg=Config().language=="en"?"[x] Format not found":"[x] Formato no encontrado";return"[x] Clock.date: "+msg}}else{if(format=="US"||format=="AS")fullDate=`${month}/${day}`;else if(format=="EUR")fullDate=`${day}/${month}`;else{let msg=Config().language=="en"?"[x] Format not found":"[x] Formato no encontrado";return"[x] Clock.date(): "+msg}}return fullDate}else{let msg=Config().language=="en"?"Set the correct parameters":"Coloca los parámetros correctos";return"[x] Clock.date(): "+msg}},calculateDaysBetweenDates:function(begin,end){let msg="";const dayMiliseconds=864e5;let regex=/^\(?([0-9]{4})\)?[-. ]?([0-9]{2})[-. ]?([0-9]{2})$/g;if(Validator.isString(begin,end)){if(begin.match(regex)!=null&&end.match(regex)!=null){let firstDate=new Date(begin).getTime(),secondDate=new Date(end).getTime();return Math.round(Math.abs((firstDate-secondDate)/dayMiliseconds))}else{msg=Config().language=="en"?"Format incorrect (yyyy-mm-dd)":"Formato incorrecto (yyyy-mm-dd)";return"[x] Clock.calculateDaysBetweenDates: "+msg}}else{msg=Config().language=="en"?"Place strings":"Coloca cadenas";return"[x] Clock.calculateDaysBetweenDates: "+msg}}};var RegexValidator={onlyLetters:function(object){if((object==null?void 0:object.length)!==void 0){return(object==null?void 0:object.capitalize)?new RegExp(`^[a-zA-Z]{${object==null?void 0:object.length.minvalue},${object==null?void 0:object.length.maxvalue}}$`):new RegExp(`^[a-z]{${object==null?void 0:object.length.minvalue},${object==null?void 0:object.length.maxvalue}}$`)}else return(object==null?void 0:object.capitalize)?/^[a-zA-Z]+$/:/^[a-z]+$/},onlyNumbers:function(object){return/^\d+$/},onlyLettersAndNumbers:function(object){if((object==null?void 0:object.capitalize)==true){return(object==null?void 0:object.allowSpacing)?/[a-zA-Z0-9\s]+$/:/[a-zA-Z0-9]$/}else{return(object==null?void 0:object.allowSpacing)?/[a-z0-9\s]+$/:/[a-z0-9]$/}},length:function(object){return new RegExp(`^.{${object.minvalue},${object.maxvalue}}$`)},implicitLength:function(...lengths){if(lengths.length===1){return new RegExp(`^.{${lengths[0]}}$`)}else{let conditionals="";let ultimoElemento=`.{${lengths[lengths.length-1]}}`;lengths.pop();lengths.forEach((element=>{conditionals+=`.{${element}}|`}));conditionals+=ultimoElemento;return new RegExp(`^(${conditionals})$`)}},coindicence:function(...patterns){const sentence=patterns.map((p=>`(${p})`)).join("|");return new RegExp(sentence)}};0&&(module.exports={Base:Base,BasicOperations:BasicOperations,ChemicalElements:ChemicalElements,Clock:Clock,Config:Config,Equations:Equations,Fractions:Fractions,LinearCongruences:LinearCongruences,Operations:Operations,Percentage:Percentage,RegexValidator:RegexValidator,RuleOfThree:RuleOfThree,SystemEquation:SystemEquation,Triangles:Triangles,Validator:Validator});