// ==UserScript== // @name Neopets - Lottomatic // @version 0.1.2 // @description Generate lotto numbers with minimal overlap // @author msjanny // @namespace https://www.scriptneo.com/ // @match https://www.neopets.com/games/lottery.phtml* // @grant GM_setValue // @grant GM_getValue // @downloadURL https://www.scriptneo.com/scripts/download.php?id=9 // @updateURL https://www.scriptneo.com/scripts/download.php?id=9 // ==/UserScript== // originally https://www.andrew.cmu.edu/user/kmliu/neopets/lottery.html , used with permission (function() { 'use strict'; /* globals $:false */ var numbers = GM_getValue("numbers", ""); function shuffle(o) { for (var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); return o; }; function leaf(a, b) { var res = new Array(); for (var i = 0; i < a.length; i++) { res[i * 2] = a[i]; res[i * 2 + 1] = b[i]; } return res; }; function generate() { var arr = new Array(); for (var i = 0; i < 30; i++) arr[i] = i + 1; var arr1 = shuffle(arr); var arr2 = leaf(arr1.slice(0, 15), arr1.slice(15, 30)) var arr3 = leaf(arr2.slice(0, 15), arr2.slice(15, 30)) var arr4 = leaf(arr3.slice(0, 15), arr3.slice(15, 30)) var marr = arr1.concat(arr2, arr3, arr4); numbers = new Array(); for (i = 0; i < 20; i++) numbers[i] = [marr[6 * i], marr[6 * i + 1], marr[6 * i + 2], marr[6 * i + 3], marr[6 * i + 4], marr[6 * i + 5]]; GM_setValue('numbers', numbers); populate(); }; function refresh() { $('.tickets').remove(); numbers = []; generate(); }; function populate() { var radiodiv = $('