Fórumok
A lényeg, hogy kapok számsorokat.
Ezeket kell 4 kategóriába sorolnom.
Erre csak érzésem van, hogy melyik hova tartozzon:
Példák:
----------------
1, 1, 3, 3, 4, 11, 34 -->
1, 1 -> 1.
3, 3, 4 -> 2.
11 -> 3.
34 -> 4.
----------------
1, 13, 25, 68, 1191 -->
1 -> 1.
13, 25, 68 -> 2.
-> 3. (üres)
1191 -> 4.
----------------
0, 0, 0, 31, 68, 230, 411, 1511, 2034 -->
0, 0, 0 -> 1.
31, 68 -> 2,
230, 411 -> 3.
1511, 2034 -> 4.
----------------
0, 1, 5, 30 -->
0 -> 1.
1 -> 2.
5 -> 2. vagy 3.
30 -> 4.
Van valami ötletetek, hogy miként lehetne programozottan?
Hozzászólások
Mi alapjan akarod csoportositani, es minek? Tippre valamilyen klaszterezo algoritmus kell neked, de nem teljesen vilagos a kezi felosztasod.
https://en.wikipedia.org/wiki/K-means_clustering
De pl. pythonban-scikitben vannak ilyesmik elore leprogramozva.
1 dimenzioban mondjuk leprogramozni sem tunik lehetetlennek. De elobb talald ki, hogy mit akarsz kezdeni a csoportokkal.
--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin
Ok. Van egy szótáram. Szeretném a fordítási gyakoriságot megjeleníteni, mint a Google Translate.
Ehhez elemzéseket végeztem és megkaptam, hogy pl. az ability-t 1191-szer fordították "képesség"-nek. 68-szor "alkalmasság"-nak. Stb.
Ez alapján kellene az adott szóhoz tartozó fordításokat csoportosítanom.
Azaz felhasználóknak nem számokat jelenítenék meg, hanem pl. képesség mellett 3 kocka lenne, míg az alkalmasság mellett csak 1 kocka.
Vannak szó-érték párok:
Alma-1191
Körte-471
Vilmos-43
Pulyka-891
Világos-1092
A legnagyobb és a legkisebb (1191 és 43) közé kell skáláznod az értékeket, a skálán 3 halmaz van (3 kockával jelzed max a jóságot), azaz: (lépés = 382 (= (1191-43) /3 ))
43-425: egy kocka
426-808: két kocka
809-1191: három kocka
Mod:
1. Ha a jóságot jelezheted nulla kockával is (fals fordítás), akkor 4 halmazod lenne az egyenesen.
2. Lineáris helyett használhatsz log skálát is, a 267648732467 érték melletti 4356 és 9737 számok ne adjanak nulla kockát. A nagyon kiemelkedő érték ne "vigye el a bulit".
Esetleg simán c*log(n+1) alapon kiírni kockákat, ahol n a találat, c egy korrekció. A korrekció az alapján is meghatározható, hogy hány kocka tartozzon a max találathoz. Ekkor c = maxkocka/log(maxn+1).
Megnéztem még egyszer a mintáidat és az alapján ezt látom (ez a szabály igaz "majdnem" mindegyikre, ha nem basztam el):
Mondjuk az ilyenek eldöntése mitől függ?
5 -> 2. vagy 3.
Ha mindegy, akkor a véletlenszám-generátor.
Köszönöm mindenkinek az öteleteket.
Működőképesnek néz ki a logaritmikus és Oregon megoldása is. Kipróbálom mindkettőt.
Még az enyémhez:
c = jelen pillanatban a maradék tömb külső határa és nem a belső!!!
pl:
1,2,10,100,200,1000
1) 1
2) 2,10,100,200
3)
4) 1000
Jelenleg a c értéke kb 500 avg(1,1000).
Ha megkeresed a maradék tömb avg(2,10,100,200), akkor annak az értéke 78 lenne.