![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Ma ktos jakis algorytm potrafiacy generowac cos w tym stylu:
Kod 0003 0012 0021 0030 0102 0111 0120 0201 0210 0300 1002 1011 1020 1101 1110 1200 2001 2010 2100 3000 inny przykład: Kod 004 013 022 031 103 112 121 130 202 211 220 301 310 400 *wypisalem to recznie wiec moga byc jakies drobne pomylki Kod var createCombinations = function(len, max){ var cnt = []; var res = []; for( var i = 0; i < len; ++i ){ cnt[i] = 0; } while( 1 ){ if (cnt.reduce(function(a, b){ return a + b; }, 0) === max-1) { res.push( cnt.slice() ); } var brk = false; for (var i = len - 1; i >= 0; --i) { if (++cnt[i] >= max) { cnt[i] = 0; }else{ brk = true; break; } } if (!brk) { break; } } res = res.map(function(arr){ return arr.join(''); }); return res; } console.log( JSON.stringify(createCombinations(3, 9), null, ' ') ); Pewnie da sie to zrobic lepiej niz przefiltrowac wszystkie mozliwosci. Ten post edytował flashdev 8.04.2013, 04:55:47 -------------------- |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 717 Pomógł: 120 Dołączył: 18.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
nareszcie ktoś ogarnięty, kto zna map i reduce w JS, a nie tylko ma problem z podstawami
![]() (nie jestem PHPowcem zasadniczo, na to forum przyciągnął mnie dział o JS, ale efekt taki, że głównie tylko siedzę i pomagam początkującym... :/) haha, udało mi się zrobić prościej: Kod var base = 5; var length = 4; var max = 400; for (var i = 0; i < max; i++) { var s = i.toString(base); var res = ~~(s.split('').reduce(function(a, b) { return ~~(a) + ~~(b); })); if (res === base-1) { while (s.length < length) s = '0' + s; console.log(s); } } Ten post edytował PrinceOfPersia 8.04.2013, 06:33:07 -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Tzn fajnie to napisales widze ze tez znasz JS bardzo dobrze
![]() Ale w sumie to ten sam algorytm co ja zaproponowalem. Czyli biore wszyskie mozliwosci i filtruje po nich. Strasznie dlugo to dziala przy wiekszych liczbach ![]() A poza tym korzystajac z toString tracisz troszke na base, bo mozesz uzyc max 36 o ile sie nie myle od 0 do z. U mnie mozesz jechac po calym incie praktycznie. Ale ogolnie dzieki za dobre checi ![]() Kod res = res.map(function(arr){ return arr.join(''); }); Te 3 linijki to tylko dla czytelnosci dodalem ![]() -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 17:23 |