FormulaUtils.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package com.mixsmart.utils;
  2. import java.util.*;
  3. import java.util.regex.Matcher;
  4. import java.util.regex.Pattern;
  5. /**
  6. * @author yangyj
  7. * @Date 2022/7/14 15:55
  8. * @description TODO
  9. */
  10. public class FormulaUtils {
  11. public static Map<String,Object> triangleSquare(Object ranges){
  12. Map<String,Object> map =new HashMap<>();
  13. if(StringUtils.isEmpty(ranges)){
  14. //z的默认取值范围
  15. ranges="(0,15)";
  16. }
  17. Matcher m = RegexUtils.matcher("[\\(||\\[](\\d*)(\\D)(\\d*)[\\)||\\]]",ranges.toString());
  18. m.find();
  19. Random rm = new Random();
  20. int min = StringUtils.handObj2Integer(m.group(1));
  21. int max = StringUtils.handObj2Integer(m.group(3));
  22. Integer[] r= pythagorean(min,max);
  23. map.put("X",String.valueOf(r[0]));
  24. map.put("Y",String.valueOf(r[1]));
  25. map.put("Z", String.valueOf(r[2]));
  26. return map;
  27. }
  28. /**
  29. * result[0]^2+result[1]^2=result[2]^2 result[] 元素均为正整数
  30. */
  31. public static Integer[] pythagorean(Integer min,Integer max){
  32. Integer[] result = null;
  33. List<Integer[]> list = new ArrayList<>();
  34. for(int i=1;i<=max;i++){
  35. for(int j=1;j<=max;j++){
  36. double tmp = Math.sqrt(Math.pow(i,2)+Math.pow(j,2));
  37. int z= (int) Math.round(tmp);
  38. if(min<z&&z<=max){
  39. Integer[] arr = new Integer[]{ i,j,z};
  40. list.add(arr);
  41. }
  42. }
  43. }
  44. if(ListUtils.isNotEmpty(list)){
  45. Random rm = new Random();
  46. result = list.get(rm.nextInt(list.size()));
  47. }
  48. return result;
  49. }
  50. }