banana.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. console.log(bananaencode(5000));
  2. console.log(bananaencode(10000));
  3. console.log(bananaencode(1000, 8));
  4. console.log(bananarandom());
  5. console.log(bananarandom(10));
  6. console.log(bananadecode("babaduga"));
  7. console.log(bananacheck("babaduga"));
  8. console.log(bananacheck("antani"));
  9. function bananaencode(num, minlength = 1) {
  10. alphabets = Array("bcdfglmnprstvz".split(""), "aeiou".split(""));
  11. shiftalpha = 0;
  12. alphaend = 0;
  13. numalpha = alphabets.length;
  14. v = num;
  15. st = "";
  16. length = 0;
  17. idx = (numalpha - 1 + shiftalpha + alphaend) % numalpha;
  18. while (!(v == 0 && idx == (numalpha - 1 + shiftalpha) % numalpha && length >= minlength)) {
  19. al = alphabets[idx];
  20. r = v % al.length;
  21. v = Math.floor(v / al.length);
  22. st = al[r] + st;
  23. idx = (idx + numalpha - 1) % numalpha;
  24. length = length + 1;
  25. }
  26. return st;
  27. }
  28. function bananadecode(word) {
  29. alphabets = Array("bcdfglmnprstvz".split(""), "aeiou".split(""));
  30. shiftalpha = 0;
  31. alphaend = 0;
  32. numalpha = alphabets.length;
  33. if ((word.length - alphaend) % numalpha != 0) {
  34. return "Invalid banana";
  35. }
  36. v = 0;
  37. for (i = 0; i < word.length; i++) {
  38. r = (numalpha + i + shiftalpha) % numalpha;
  39. if (alphabets[r].indexOf(word[i]) != -1) {
  40. v = v * alphabets[r].length + alphabets[r].indexOf(word[i]);
  41. } else {
  42. return("Invalid character in position " + (i + 1));
  43. }
  44. }
  45. return v;
  46. }
  47. function bananacheck(word) {
  48. alphabets = Array("bcdfglmnprstvz".split(""), "aeiou".split(""));
  49. shiftalpha = 0;
  50. alphaend = 0;
  51. numalpha = alphabets.length;
  52. if ((word.length - alphaend) % numalpha != 0) {
  53. return false;
  54. }
  55. for (i = 0; i < word.length; i++) {
  56. r = (numalpha + i + shiftalpha) % numalpha;
  57. if (alphabets[r].indexOf(word[i]) == -1) {
  58. return false;
  59. }
  60. }
  61. return true;
  62. }
  63. function bananarandom(minlength = 6) {
  64. alphabets = Array("bcdfglmnprstvz".split(""), "aeiou".split(""));
  65. shiftalpha = 0;
  66. alphaend = 0;
  67. numalpha = alphabets.length;
  68. st = "";
  69. if (minlength < 1) {
  70. return "";
  71. }
  72. curr_alpha = (numalpha - 1 + shiftalpha + alphaend) % numalpha;
  73. final_alpha = (numalpha - 1 + shiftalpha) % numalpha;
  74. while (curr_alpha != final_alpha || st.length < minlength) {
  75. al = alphabets[curr_alpha];
  76. st = al[Math.floor(Math.random() * al.length)] + st;
  77. curr_alpha = (curr_alpha + numalpha - 1) % numalpha;
  78. }
  79. return st;
  80. }