Nem, nem "indentálok".
Én olyan kemény vagyok, hogy még mindig a telefonon pötyögöm be a kódot, amin a szerkesztő nem tud tördelni. ![;]](//cdn.rios.hu/dl/s/v1.gif)
Néztem a jsFiddle-t, de nem tudom használni (próbáltam átírni te példáidat is, de a result panelra nem tudok írni... más debug kiíratás sem ment.). Próbáltam a böngésző konzolját is, de az se túl felhasználóbarát.
Inkább marad a natív környezet. Eddig még nem szúrtam el a zárójelezést egyszer sem. 
Lássuk csak... Úgy működik, hogy először kigyűjti az "a" tömbbe az összes nullánál nagyobb számot és a "b" tömbben tárolja az előfordulások számát.
Majd lemásolja az input-ot, hogy az érintetlen maradjon és az "a" tömb hossza szerinti ciklusban meghívja a "b" előfordulások száma szerinti másik ciklust és a ciklusmagban meg megkeresi a kigyűjtött elemek indexeit az input-ból és berakja a "c" tömbbe. Mivel itt a Math.max függvényt használom masszívan, ezért jónak láttam nullázni az aktuális mentett elemet, hogy a következő előfordulást találhassa meg a függvény.
A "c" tömböt a beágyazott ciklus lefutása után minden menetben üríti az output string-be.
Kb ennyi.
Biztos hatékonyabban is meg lehet oldani, meg kevesebb erőforrással, de nem vagyok programozó, meg amúgy is egy szempillantás alatt végez még a telefon is.
Kérdés:
a meghívott function()-ökben deklarált változók ugye elszeparáltak a programtól?
Tehát a function()-ön belüli "var i=0" nem fog összeakadni abban a programban lévő változattal, amiben meghívtam a függvényt? (Abban a programban definiáltam a function()-t is.)