Forum » Programiranje » Next challenge
Next challenge
Thomas ::
[[They may exist. And already expanding with the light speed. Far away. It is also possible, that their planet is not formed, yet - but we will meet them once - as another expanding Power. My point (and of other Singularitans) is, that from the begging of the industrial revolution to the "full speed ahead civilization point" - is only a few centuries time. Quite a narrow window for only to hear a civilization - but not to already have it here. Quite naive to expect, that they can see us only now - if they are around for millions of years. They could conquer the Milky Way long time ago. The Rare Earth and the Singularity do make sense. While Sagan's view combined with the implicit assumption of the "static technology society" is cracked. We are back in the center of the Universe again. Quite.]]
Stavek v dvojnih oglatih oklepajih ima 800 znakov.
Iz njega naredimo array a[799]
a[0]='T'
a[1]='h'
.
.
.
a[799]='.'
Program predictor predvideva naslednji znak.
Naprimer:
For {i=0;i<800;i++) {a[i]='e'}
Ta program predvideva, da so sami e-ji v stavku. 86 krat ugane. Ima pa tudi 10 znakov penalty, ker sam zasede 10 bytov, preveden v assembler. Torej je njegov rezultat 76.
Kdo bo naredil najboljši tak program?
Stavek v dvojnih oglatih oklepajih ima 800 znakov.
Iz njega naredimo array a[799]
a[0]='T'
a[1]='h'
.
.
.
a[799]='.'
Program predictor predvideva naslednji znak.
Naprimer:
For {i=0;i<800;i++) {a[i]='e'}
Ta program predvideva, da so sami e-ji v stavku. 86 krat ugane. Ima pa tudi 10 znakov penalty, ker sam zasede 10 bytov, preveden v assembler. Torej je njegov rezultat 76.
Kdo bo naredil najboljši tak program?
Man muss immer generalisieren - Carl Jacobi
- spremenil: Thomas ()
Alec999 ::
oj Tomas nism neki razumu ... kaj je tistih "10 znakov penalty" ? ke je to? ... nism cist zakapiru :(
lp,
Alec999
lp,
Alec999
Thomas ::
To je število bytov, ki jih pobere kompilirana verzija (asemblirana) predictorja. Če ne, bo eden napisal program, ki bo preprosto navedel vse znake. Tako se mu to ne splača.
Man muss immer generalisieren - Carl Jacobi
Thomas ::
Toliko odšteje, kolikor je velik program, ko je preveden v assembler.
Program je lahko v kakeršnemkoli jeziku, v assembler ga bom prevajal jest.
Če se kdo s prevodom ne bo strinjal, lahko dobavi svojo assemblersko kodo.
Program je lahko v kakeršnemkoli jeziku, v assembler ga bom prevajal jest.
Če se kdo s prevodom ne bo strinjal, lahko dobavi svojo assemblersko kodo.
Man muss immer generalisieren - Carl Jacobi
GaPe ::
Thomas
a[800]='.' --> a si mislu mogoče a[799] = '.' ?
A lahko malo bolj razložiš celo stvar, ker mi ni čist jasn. Tistih 10 byte-ov ne razumem.
a[800]='.' --> a si mislu mogoče a[799] = '.' ?
A lahko malo bolj razložiš celo stvar, ker mi ni čist jasn. Tistih 10 byte-ov ne razumem.
Don't steal! The government hates competition.
Sergio ::
Lejte, Thomas od vas želi, da napišete program, ki bo z določeno metodo prišel do čimbolj ugodnega rezultata.
Program mora biti izjemno majhen ter hudimano natančen.
Maximalno število pik je 800, če najdete program, ki iz zraka ugotovi vsako naslednjo črko.
Nekako rajtam, da je tisti, ki doseže nad 300 pik, zmagovalec. Lahko se pa tudi motim...
Program mora biti izjemno majhen ter hudimano natančen.
Maximalno število pik je 800, če najdete program, ki iz zraka ugotovi vsako naslednjo črko.
Nekako rajtam, da je tisti, ki doseže nad 300 pik, zmagovalec. Lahko se pa tudi motim...
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
Sergio ::
Aja, Thomas, saj res... Časa je koliko? Kakšna je minimalno število točk za kakšno od tvojih nagrad? Bo nagrada kosilo? Ali nagrade sploh ne bo?
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
TESKAn ::
Pač, program je dolg 10 bajtov, za vsak bajt izgubiš eno piko. Torej, čim krajši program -> tem več točk.
Še ena ideja, kaj bi lahko:
- najprej si dobiš ogromno besedila, mislim par mega najboli, tko v angleščini.
- prebereš vse kot eno samo besedo pa gledaš, kolka je verjetnost za naslednjo črko. Recmo, da maš za črko e 25 - krat i pa 75 - krat n, pol je možnost, da je za e i 25%, da je pa n pa 75%. Pol pa naredišlepo tko: if(prejšnja_črka==e) naslednja_črka=n; in tko naprej. Tko po moje program ne bi bil zelo dolg, bi pa uganil, po moje, več črk, kot če bi le e - je pisal. Ajde, če se domislim kake simpl rešitve, bom kaj naredu, k drgač je moje znanje programiranja (zaenkrat) prešvoh za take probleme.
Lp
TESKAn
Še ena ideja, kaj bi lahko:
- najprej si dobiš ogromno besedila, mislim par mega najboli, tko v angleščini.
- prebereš vse kot eno samo besedo pa gledaš, kolka je verjetnost za naslednjo črko. Recmo, da maš za črko e 25 - krat i pa 75 - krat n, pol je možnost, da je za e i 25%, da je pa n pa 75%. Pol pa naredišlepo tko: if(prejšnja_črka==e) naslednja_črka=n; in tko naprej. Tko po moje program ne bi bil zelo dolg, bi pa uganil, po moje, več črk, kot če bi le e - je pisal. Ajde, če se domislim kake simpl rešitve, bom kaj naredu, k drgač je moje znanje programiranja (zaenkrat) prešvoh za take probleme.
Lp
TESKAn
Uf! Uf! Je rekel Vinetou in se skril za skalo,
ki jo je prav v ta namen nosil s seboj.
ki jo je prav v ta namen nosil s seboj.
Thomas ::
GaPe
Popravil sem. Thnx.
Sergio
Rok je 14 dni. Ko nekdo da boljšo rešitev, se rok pomakne 14 dni naprej.
Dobr si zadel bistvo, ampak 300 se mi zdi nekoliko malo.
Nagrada je zaenkrat še skrivnost. Povezana s tem, da je tole precej bolj pomembna, kot na prvi pogled zgleda.
TESKAn
Jah, se boš pa nauču - ane?
Popravil sem. Thnx.
Sergio
Rok je 14 dni. Ko nekdo da boljšo rešitev, se rok pomakne 14 dni naprej.
Dobr si zadel bistvo, ampak 300 se mi zdi nekoliko malo.
Nagrada je zaenkrat še skrivnost. Povezana s tem, da je tole precej bolj pomembna, kot na prvi pogled zgleda.
TESKAn
Jah, se boš pa nauču - ane?
Man muss immer generalisieren - Carl Jacobi
rasta ::
kot jaz zdaj to razmem, naj bi ta program temeljil na zakonitosti razvrščanja črk besedila. se pravi, npr. presledki naj bi se ponavljali na vsakih 5 znakov oz. ne morejo biti zaporedoma in so težko več kot 10 znakov narazen.
za povrh, pa mora biti program še čim manjši, ker se kao vsak bajt programa odšteva od rezultata?
zdej velja samo tisti zgoraj napisani stavek ali poljubno angleško besedilo?
za povrh, pa mora biti program še čim manjši, ker se kao vsak bajt programa odšteva od rezultata?
zdej velja samo tisti zgoraj napisani stavek ali poljubno angleško besedilo?
rasta ::
v bistvu je tle vprašanje optime: razmerje štev. uganjenih znakov - velikost.
> Dobr si zadel bistvo, ampak 300 se mi zdi nekoliko malo.
Meni pa sploh ne, če je že tvoj "programček" porabil 10 bajtov. če se potroji zmogljivost, za koliko se poveča velikost?
> Dobr si zadel bistvo, ampak 300 se mi zdi nekoliko malo.
Meni pa sploh ne, če je že tvoj "programček" porabil 10 bajtov. če se potroji zmogljivost, za koliko se poveča velikost?
Zgodovina sprememb…
- spremenil: rasta ()
rasta ::
še nekaj sem se spomnil, kako se bo ocenjevalo programi z random? maš npr. en program, ki za vsako liho število poskuša uganiti kot soglasnik (21 znakov), za vsako sodo pa samoglasnik (5). rezultat bo vedno drugačen in prdejo lahko celo velika odstopanja?
bo rezultat statistično povprečje npr. 1000 poskusov?
pa še to: ko program ugiba, ali lahko za nazaj preveri, če je imel prav?
če je samo za zgornji stavek, bo treba določiti neka zaporedja ponavljanja posameznih zankov ...
bo rezultat statistično povprečje npr. 1000 poskusov?
pa še to: ko program ugiba, ali lahko za nazaj preveri, če je imel prav?
če je samo za zgornji stavek, bo treba določiti neka zaporedja ponavljanja posameznih zankov ...
Zgodovina sprememb…
- spremenil: rasta ()
Thomas ::
rasta
Samo za zgornji odstavek gre. (Vendar dober predictor zanj, se bo izkazal dober prediktor celo za slovenske tekste. I've been there, and do it.)
Ne pozabite, da lahko za predvidevanje znaka uporabite katerikoli prejšnji znak. Ali statistiko, če jo lahko spravite v kakšno efikasno tabelco. Ni nobenih omejitev. Samo program mora generirati kar se da podoben stavek. In biti ekonomičen seveda.
Samo za zgornji odstavek gre. (Vendar dober predictor zanj, se bo izkazal dober prediktor celo za slovenske tekste. I've been there, and do it.)
Ne pozabite, da lahko za predvidevanje znaka uporabite katerikoli prejšnji znak. Ali statistiko, če jo lahko spravite v kakšno efikasno tabelco. Ni nobenih omejitev. Samo program mora generirati kar se da podoben stavek. In biti ekonomičen seveda.
Man muss immer generalisieren - Carl Jacobi
TESKAn ::
Se pravi, treba je narediti program, ki ti bo zgornji stavek zakompresiral. Se pravi, da rabiš program, ki ti iz prejšnjih črk lahko ugane naslednjo, če pa mu to ne uspe, pa tisto črko že na začetku predvidiš. Torej je cilj, da kar najbolje predvidimo naslednjo črko glede na to, kakšne so bile prejšnje.
Uf! Uf! Je rekel Vinetou in se skril za skalo,
ki jo je prav v ta namen nosil s seboj.
ki jo je prav v ta namen nosil s seboj.
plizzzzzz ::
hmm ne stekam cist. tvoj primer ne ve kje so e-ji?
a to ti je useen?
moj progec tudi ne ve kje so:
for (int chr='a';chr<'z';chr++)
for (int i=0;i<800;i++)
{
bool notWrite=false;
for (int m='a'; m < chr; m++)
if (a[i]==m)
notWrite=true;
if (!notWrite)
rezultat += a[i]==chr;
}
rezultat = 604
pa recmo da je koda ene 50 .
pa tudi ne ve kje so pravi znaki..hmmm
a to ti je useen?
moj progec tudi ne ve kje so:
for (int chr='a';chr<'z';chr++)
for (int i=0;i<800;i++)
{
bool notWrite=false;
for (int m='a'; m < chr; m++)
if (a[i]==m)
notWrite=true;
if (!notWrite)
rezultat += a[i]==chr;
}
rezultat = 604
pa recmo da je koda ene 50 .
pa tudi ne ve kje so pravi znaki..hmmm
Zgodovina sprememb…
- spremenilo: plizzzzzz ()
Thomas ::
Moj progi vedno pravi da je "e". Šestinosemdesetkrat ima prav.
Naredi string 800 e-jev. Dobrih 10% pogrunta.
Kakšen string naredi tvoj?
Naredi string 800 e-jev. Dobrih 10% pogrunta.
Kakšen string naredi tvoj?
Man muss immer generalisieren - Carl Jacobi
Primoz ::
Toliko... za začetek. Ker ta teden nimam časa bom napisal nekaj, kar mi zagotovi 14 dni časa... potem pa dobite kaj boljšega.
Vzamemo, da vsak znak pobere 5 bitov. V besedilu je 28 različnih znakov. Ostanejo nam še 4 možnosti. Ena izmed teh pomeni, da je naslednja kombinacija "the", druga pomeni, da je naslednji znak uppercase... ostali dve se zmislim, ko se mi bo ljubilo zindexirat besedilo. Tako celotno besedilo zakodiramo v približno 500 znakih (malo manj, če predpostavimo, da je za vsako vejico in piko presledek). Programčka za naložit in dekodirat ta mem array je približno 100-150 bytov. Posledica je, da dobim nekje med 150 in 200 točkami.
Program dobite čez vikend (ko bom imel do preveč časa, čeprav bo takrat logika verjetno drugačna. Tole trenutno pa ... je samo problem implementacije. Naredi, kdor se mu ljubi).
Vzamemo, da vsak znak pobere 5 bitov. V besedilu je 28 različnih znakov. Ostanejo nam še 4 možnosti. Ena izmed teh pomeni, da je naslednja kombinacija "the", druga pomeni, da je naslednji znak uppercase... ostali dve se zmislim, ko se mi bo ljubilo zindexirat besedilo. Tako celotno besedilo zakodiramo v približno 500 znakih (malo manj, če predpostavimo, da je za vsako vejico in piko presledek). Programčka za naložit in dekodirat ta mem array je približno 100-150 bytov. Posledica je, da dobim nekje med 150 in 200 točkami.
Program dobite čez vikend (ko bom imel do preveč časa, čeprav bo takrat logika verjetno drugačna. Tole trenutno pa ... je samo problem implementacije. Naredi, kdor se mu ljubi).
There can be no real freedom without the freedom to fail.
plizzzzzz ::
ha evo enga mal bolsga
For {i=0;i<800;i++) {a[i++]='e'; a[i]=' ';}
rezultat=114
btw: men pokaze sam 76 e-jev
Primoz:
tistole sem pa tud jes pomislu sam a se splaca za 3/8 rezultata to delat??? hmm
For {i=0;i<800;i++) {a[i++]='e'; a[i]=' ';}
rezultat=114
btw: men pokaze sam 76 e-jev
Primoz:
tistole sem pa tud jes pomislu sam a se splaca za 3/8 rezultata to delat??? hmm
Thomas ::
Primoz
Zvito. Z enim kompresiranim programom dobiš identično kopijo. Predikcija je 100% -programa z vsebovanim stavkom pa ene 200 bytov manj kot stavka.
plizzzzzz
Ja 76 ja, sem štel še e-je iz nekaj besedila spodaj.
114 je cool. Bom preveru če je prav zvečer.
Zvito. Z enim kompresiranim programom dobiš identično kopijo. Predikcija je 100% -programa z vsebovanim stavkom pa ene 200 bytov manj kot stavka.
plizzzzzz
Ja 76 ja, sem štel še e-je iz nekaj besedila spodaj.
114 je cool. Bom preveru če je prav zvečer.
Man muss immer generalisieren - Carl Jacobi
Gh0st ::
Naredis loop da izvede poskuse za tri najpogostejse crke: e,a,i..
Abecedo das na 50 znakov (2x 25) in to je direkt loop, ki isce po dva znaka naenkrat,...Nevem ugibam...
Abecedo das na 50 znakov (2x 25) in to je direkt loop, ki isce po dva znaka naenkrat,...Nevem ugibam...
you might start believe in Gh0st stories. you're in one. :)
Brane2 ::
BTW: Assembler za kero mashino ?
Intel ? Java (mislim, strojc za JVM)? 68000 ? Kej 8-bitnega ?
Intel ? Java (mislim, strojc za JVM)? 68000 ? Kej 8-bitnega ?
Zgodovina sprememb…
- spremenil: Brane2 ()
Brane2 ::
E, jebi ga. O x86 pojma nimam, vsekakor ne tolk, da bi se zajebavu z NASMom ali GASom. Mogoce pa je tole prava prilka.
BTW: Tkole na prvi uc, bi se prognozer obnesu bistveno bolje, če bi za vsakim e-jem pričakoval vsaj en space in obratno...
Kolk boljs, ne vem- trenutno nimam dostopa do compilerja...
Torej:
int zadetkov=0;
while i<800
{
while a[i++] != 'e'
{
zadetkov++;
}
while
a[i+1]=' ';
{
zadetkov++;
}
}
BTW: Tkole na prvi uc, bi se prognozer obnesu bistveno bolje, če bi za vsakim e-jem pričakoval vsaj en space in obratno...
Kolk boljs, ne vem- trenutno nimam dostopa do compilerja...
Torej:
int zadetkov=0;
while i<800
{
while a[i++] != 'e'
{
zadetkov++;
}
while
a[i+1]=' ';
{
zadetkov++;
}
}
Zgodovina sprememb…
- spremenil: Brane2 ()
Senitel ::
Eko moj algoritem nardi:
256 bytov za codebook
250 bytov za 800 znakov
110 od teh znakov jih zgreši
Torej ma stiskanje 184 pik in še tam 10-15 pik za for zanko ki to izpiše...
Thomas kolk je maksiumu, do kjer si ti prišel??
Sicer pa bi se moj algoritem veliko bolje obnesel pri daljših tekstih in kjer je pomembno, da so napake majhe...
256 bytov za codebook
250 bytov za 800 znakov
110 od teh znakov jih zgreši
Torej ma stiskanje 184 pik in še tam 10-15 pik za for zanko ki to izpiše...
Thomas kolk je maksiumu, do kjer si ti prišel??
Sicer pa bi se moj algoritem veliko bolje obnesel pri daljših tekstih in kjer je pomembno, da so napake majhe...
Thomas ::
Fantje ... ogrevate se dobr. Ogrevate.
Brane2
Tvoj algoritem ne velja. Ti predvidevaš "e" OR ' '.
Smo rekli predvidimo znak in ne "superpozicijo" dveh znakov.
tomblord
Skompiliraš en programček s svojo kodo. Potem s svojo kodo zakomentirano.
Razlika je "penality". To če delaš v C(++).
Sicer ti bom jest povedal. Ampak ne se obremenjevat s tistimi nekaj byti razlike do prave vrednosti, če uporabiš Primozevo metodo ocene čez palec.
Ali pa - jest sem reku, da ima moj program 10 bytov. Tvoj ima cca 50, če je 5X daljši.
Senitel
Ti si uporabil Primozevo finto s kompresiranjem s tem, da si vzel izgubni kompres. Bravo zato. Ampak poznejo bo premalo.
Keep good work.
Svoje rezulltate bom objavil v naslednjih dneh. Se boste moral kar potruditi, da jih boste dosegli.
Brane2
Tvoj algoritem ne velja. Ti predvidevaš "e" OR ' '.
Smo rekli predvidimo znak in ne "superpozicijo" dveh znakov.
tomblord
Skompiliraš en programček s svojo kodo. Potem s svojo kodo zakomentirano.
Razlika je "penality". To če delaš v C(++).
Sicer ti bom jest povedal. Ampak ne se obremenjevat s tistimi nekaj byti razlike do prave vrednosti, če uporabiš Primozevo metodo ocene čez palec.
Ali pa - jest sem reku, da ima moj program 10 bytov. Tvoj ima cca 50, če je 5X daljši.
Senitel
Ti si uporabil Primozevo finto s kompresiranjem s tem, da si vzel izgubni kompres. Bravo zato. Ampak poznejo bo premalo.
Keep good work.
Svoje rezulltate bom objavil v naslednjih dneh. Se boste moral kar potruditi, da jih boste dosegli.
Man muss immer generalisieren - Carl Jacobi
Brane2 ::
Thomas:
Tvoj algoritem ne velja. Ti predvidevaš "e" OR ' '.
Smo rekli predvidimo znak in ne "superpozicijo" dveh znakov.
Ne. Moj prediktor predvideva, da je vsak znak "e", dokler ga ne najde. Zatem predvideva, da je vsak naslednji znak " ", dokler ne naleti na tega, nato spet predvideva "e" in tako naprej.
Na primeru prvih par crk:
Text:
They may exist. And already
Prediktor:
eee__eeee_____eeeeee____
Zadetki:
__*_*____*____*_____*____*
No, vsaj tko je blo mišljeno.
BTW: Tole bi se dalo s parimi poskusi še precej friznit. Recimo v stilu "po vsakem "e"-ju pričakuj vsaj dva spacea ali še kakšnim podpravilcem ali dvema...
Btw: a so polja a[i] writeable ?
Mislim, a si lahko prediktor dela belezke v poljih, ki so itak ze prebrana ? To bi lahko skrajsalo program...
Tvoj algoritem ne velja. Ti predvidevaš "e" OR ' '.
Smo rekli predvidimo znak in ne "superpozicijo" dveh znakov.
Ne. Moj prediktor predvideva, da je vsak znak "e", dokler ga ne najde. Zatem predvideva, da je vsak naslednji znak " ", dokler ne naleti na tega, nato spet predvideva "e" in tako naprej.
Na primeru prvih par crk:
Text:
They may exist. And already
Prediktor:
eee__eeee_____eeeeee____
Zadetki:
__*_*____*____*_____*____*
No, vsaj tko je blo mišljeno.
BTW: Tole bi se dalo s parimi poskusi še precej friznit. Recimo v stilu "po vsakem "e"-ju pričakuj vsaj dva spacea ali še kakšnim podpravilcem ali dvema...
Btw: a so polja a[i] writeable ?
Mislim, a si lahko prediktor dela belezke v poljih, ki so itak ze prebrana ? To bi lahko skrajsalo program...
Zgodovina sprememb…
- spremenil: Brane2 ()
Brane2 ::
BTW:
Singularitans) is, that from the begging of the indus...
____________________________^^^^^^^
Je tole namenoma, al je misljeno beginning ?
Oops. Stvar ma 800 znakov taka kot je. Torej je misljeno tko...
Singularitans) is, that from the begging of the indus...
____________________________^^^^^^^
Je tole namenoma, al je misljeno beginning ?
Oops. Stvar ma 800 znakov taka kot je. Torej je misljeno tko...
Zgodovina sprememb…
- spremenil: Brane2 ()
Senitel ::
Thomas: Ne ni to Primoževa finta ... In kot sem rekel bi se dosti bolje obnesla tam pri kakšnih 4k besedila... Moram neki druzga zgruntat...
Thomas ::
Brane2
Dobro si ubranil svo algoritem. Res je tako, kot praviš.
BTW - jebeš typo!
Senitel
Okay ...
Dobro si ubranil svo algoritem. Res je tako, kot praviš.
BTW - jebeš typo!
Senitel
Okay ...
Man muss immer generalisieren - Carl Jacobi
TESKAn ::
Hm, še par idej:
- spremeniš besedilo v zaporedje števil. se pravi a==1. b==2 itd. pol pa pogruntaš formulo tega zaporedja, in če je dost majhna...pol rabiš pa sam računat - za prvo mesto (x==1) je vrednost xy, kar da npr. t, in tko naprej. Sam najbrž ne bi blo lih lahko pogruntat tega zaporedja .
- druga ideja je pa ta, da:
- najprej pogledaš, kera črka se največkrat pojavlja za katero črko - recimo da se za črko A pojavi N v 29% primerov, torej bo koda, če boš za vsakim A dal N točna v 29% primerov. Tako narediš za vsako črko, da maš pol:
If(stavek[i]=='a') stavek[i+1]='n';
Pol ko maš vse to, furaš to kodo za celo besedilo. Tam, kjer se zmoti, daš pravo črko. kjer pa ugotovi. pa ne daš nič. Tako imaš na koncu array 800 znakov, ki ima nekatere že zapolnjene, druge pa doda koda glede na to, katere so bile prejšnje črke.
Bom poskušal naredit, ko pridem domov - trenutno nimam računalnika, na katerem bi programiral
. Ah, kok je življenje kruto.
- spremeniš besedilo v zaporedje števil. se pravi a==1. b==2 itd. pol pa pogruntaš formulo tega zaporedja, in če je dost majhna...pol rabiš pa sam računat - za prvo mesto (x==1) je vrednost xy, kar da npr. t, in tko naprej. Sam najbrž ne bi blo lih lahko pogruntat tega zaporedja .
- druga ideja je pa ta, da:
- najprej pogledaš, kera črka se največkrat pojavlja za katero črko - recimo da se za črko A pojavi N v 29% primerov, torej bo koda, če boš za vsakim A dal N točna v 29% primerov. Tako narediš za vsako črko, da maš pol:
If(stavek[i]=='a') stavek[i+1]='n';
Pol ko maš vse to, furaš to kodo za celo besedilo. Tam, kjer se zmoti, daš pravo črko. kjer pa ugotovi. pa ne daš nič. Tako imaš na koncu array 800 znakov, ki ima nekatere že zapolnjene, druge pa doda koda glede na to, katere so bile prejšnje črke.
Bom poskušal naredit, ko pridem domov - trenutno nimam računalnika, na katerem bi programiral
. Ah, kok je življenje kruto.
Uf! Uf! Je rekel Vinetou in se skril za skalo,
ki jo je prav v ta namen nosil s seboj.
ki jo je prav v ta namen nosil s seboj.
Brane2 ::
Teskan:
Hm, še par idej:
- spremeniš besedilo v zaporedje števil. se pravi a==1. b==2 itd. pol pa pogruntaš formulo tega zaporedja, in če je dost majhna...pol rabiš pa sam računat - za prvo mesto (x==1) je vrednost xy, kar da npr. t, in tko naprej. Sam najbrž ne bi blo lih lahko pogruntat tega zaporedja .
To sem misliu vprašat. A je dani tekst v navadnem od boga danem ASCIIju ali v Unicode ?
Prvo je kul, ker majo vsi karakterji že svojo 8-bitno kodo in je lahko mašinc krajši. Unicode pa nije bash za šolske primere... Ahh, verjetno je ASCII...
Hm, še par idej:
- spremeniš besedilo v zaporedje števil. se pravi a==1. b==2 itd. pol pa pogruntaš formulo tega zaporedja, in če je dost majhna...pol rabiš pa sam računat - za prvo mesto (x==1) je vrednost xy, kar da npr. t, in tko naprej. Sam najbrž ne bi blo lih lahko pogruntat tega zaporedja .
To sem misliu vprašat. A je dani tekst v navadnem od boga danem ASCIIju ali v Unicode ?
Prvo je kul, ker majo vsi karakterji že svojo 8-bitno kodo in je lahko mašinc krajši. Unicode pa nije bash za šolske primere... Ahh, verjetno je ASCII...
Jux ::
Sorry, če bo tole lame, ker mi ni čist jasno to s kompresijo. ampak:
nardimo si tabelo za verjetnost da bo za določeno črko stala določena črka, torej naredimo tole takole:
a: 1. c 2. h 3. g ...
b: 1. e 2. s 3. ....
c: 1. e 2. g 3. ....
za vsako od črk abecede poiščemo kakšna vrjetnost je da bo za njo stala določena črka.
OK - s tem že kar dobro predvidevamo kje stoji kakšna črka. Sedaj nas zanimajo še presledki. Izračunamo pri kakšni povprečni dolžini besede ponavadi stoji presledek. Ta program spustimo čez nekaj angleških tekstov da dobimo realne cifre.
nardimo si tabelo za verjetnost da bo za določeno črko stala določena črka, torej naredimo tole takole:
a: 1. c 2. h 3. g ...
b: 1. e 2. s 3. ....
c: 1. e 2. g 3. ....
za vsako od črk abecede poiščemo kakšna vrjetnost je da bo za njo stala določena črka.
OK - s tem že kar dobro predvidevamo kje stoji kakšna črka. Sedaj nas zanimajo še presledki. Izračunamo pri kakšni povprečni dolžini besede ponavadi stoji presledek. Ta program spustimo čez nekaj angleških tekstov da dobimo realne cifre.
web&blog&etc: http://lukabirsa.com
Thomas ::
They_ may_ exist._ And_ already_ expanding_ with the_ light_ speed._ Far_ away._ It_ is_ also_ possible,_ that_ their_ planet_ is_ not_ formed,_ yet_ -_ but_ we_ will_ meet_ them_ once_ -_ as_ another_ expanding_ Power._ My_ point_ (and_ of_ other_ Singularitans)_ is,_ that_ from_ the_ begging_ of_ the_ industrial_ revolution_ to_ the_ "full_ speed_ ahead_ civilization_ point"_ -_ is_ only_ a_ few_ centuries_ time._ Quite_ a_ narrow_ window_ for_ only_ to_ hear_ a_ civilization_ -_ but_ not_ to_ already_ have_ it_ here._ Quite_ naive_ to_ expect,_ that_ they_ can_ see_ us_ only_ now_ -_ if_ they_ are_ around_ for_ millions_ of_ years._ They_ could_ conquer_ the_ Milky_ Way_ long_ time_ ago._ The_ Rare_ Earth and_ the_ Singularity_ do_ make_ sense._ While_ Sagan's_ view_ combined_ with the_ implicit_ assumption_ of_ the_ "static_ technology_ society"_ is_ cracked._ We_ are_ back_ in_ the_ center_ of_ the_ Universe_ again._ Quite.
200 krat uganemo, če rečemo, da je za blankom "t", za "h" "e" in za "i" "n". Sicer je pa blank.
.
Program tehta kakih 30 bytov.
Ampak to ni še nič.
200 krat uganemo, če rečemo, da je za blankom "t", za "h" "e" in za "i" "n". Sicer je pa blank.
.
Program tehta kakih 30 bytov.
Ampak to ni še nič.
Man muss immer generalisieren - Carl Jacobi
Zgodovina sprememb…
- spremenil: Thomas ()
plizzzzzz ::
A to si ti genarator naredu ki poskusa kombinacije in si zapomni najboljso hehe
quuuul
plizzzzz
quuuul
plizzzzz
Eschelon ::
Nekaj pomoči za tiste, ki še ne vedo, kako se lotiti zadeve.
Narediti morate program v dveh delih, eden se bo "učil", drugi pa samo izvajal zaresni del naloge. Potem ga učečega pošljete čez nekaj angleških - najbolje SF tekstov, da se nauči. In na koncu sprobate, kako se obnese na danem tekstu.
"učenje" v tem primeru pomeni izdelavo frekvenčnega drevesa za sosledje znakov. Ker gre za zahtevo po največji verjetnosti, je v drevesu potreben samo podatek za najbolj verjetno naslednjo črko.
Globina in širina drevesa je stvar izvedbe. Je pa tako, da ko bi bilo enkrat drevo narejeno je izzy ko pasulj (program bi bil kratek in preprost - še največje bi bilo drevo). Jeba pri problemu je kreirati drevo. Za to bi porabili malo morje časa in prostora, pa še kljub temu bi rabili precej hevristike (programiranje po občutku).
-----
Primer za zelo preprosto frekvenčno drevo:
KOREN
"a";"b";"c";"d";"e"(NAJBOLJ);...;"z"
pod " ":
"a";"t"(NAJBOLJ)
pod " a":
" "(NAJBOLJ);"n"
pod " a ":
"t"(NAJBOLJ)
pod " an"
" "; "d"(NAJBOLJ)
pod " an "
"a"(NAJBOLJ),"e","i","o","u"
Prav bi bilo, da bi se drevo vedno končalo samo z enim najbolj pogostim (pa se mi ne ljubi vsega pisat).
Po tem drevesu bi šel prediktor pri tekstu " an ass" takole:
1. Primerjalni niz "" -> Reče "e", dobi " "
2. Primerjalni niz " " -> Reče "t", dobi "a"
3. Primerjalni niz " a" -> Reče " ", dobi "n"
4. Primerjalni niz " an" -> Reče "d", dobi " "
5. Primerjalni niz " an " -> Reče "a", dobi "a"
Če je to sedaj konec drevesa se prva črka primerjalnega drevesa odbije in poišče se pravo pot po drevesu glede na nov niz. Če poti ni, se odbije še ena črka spredaj... V najslabšem primeru pridemo nazaj do korena in poskusimo z e.
Naredite pa to drugi, ker mam jaz izpite .
Narediti morate program v dveh delih, eden se bo "učil", drugi pa samo izvajal zaresni del naloge. Potem ga učečega pošljete čez nekaj angleških - najbolje SF tekstov, da se nauči. In na koncu sprobate, kako se obnese na danem tekstu.
"učenje" v tem primeru pomeni izdelavo frekvenčnega drevesa za sosledje znakov. Ker gre za zahtevo po največji verjetnosti, je v drevesu potreben samo podatek za najbolj verjetno naslednjo črko.
Globina in širina drevesa je stvar izvedbe. Je pa tako, da ko bi bilo enkrat drevo narejeno je izzy ko pasulj (program bi bil kratek in preprost - še največje bi bilo drevo). Jeba pri problemu je kreirati drevo. Za to bi porabili malo morje časa in prostora, pa še kljub temu bi rabili precej hevristike (programiranje po občutku).
-----
Primer za zelo preprosto frekvenčno drevo:
KOREN
"a";"b";"c";"d";"e"(NAJBOLJ);...;"z"
pod " ":
"a";"t"(NAJBOLJ)
pod " a":
" "(NAJBOLJ);"n"
pod " a ":
"t"(NAJBOLJ)
pod " an"
" "; "d"(NAJBOLJ)
pod " an "
"a"(NAJBOLJ),"e","i","o","u"
Prav bi bilo, da bi se drevo vedno končalo samo z enim najbolj pogostim (pa se mi ne ljubi vsega pisat).
Po tem drevesu bi šel prediktor pri tekstu " an ass" takole:
1. Primerjalni niz "" -> Reče "e", dobi " "
2. Primerjalni niz " " -> Reče "t", dobi "a"
3. Primerjalni niz " a" -> Reče " ", dobi "n"
4. Primerjalni niz " an" -> Reče "d", dobi " "
5. Primerjalni niz " an " -> Reče "a", dobi "a"
Če je to sedaj konec drevesa se prva črka primerjalnega drevesa odbije in poišče se pravo pot po drevesu glede na nov niz. Če poti ni, se odbije še ena črka spredaj... V najslabšem primeru pridemo nazaj do korena in poskusimo z e.
Naredite pa to drugi, ker mam jaz izpite .
Thomas ::
odiedog
Dober člavek si napisal. Parkrat sem ga prebral zadnje dni.
Vendar - ne boš verjel - obstaja "še en nivo". Se pravi, zadeva je še malenkost bolj komplicirana - in to na najmanj 4 načine.
Najprej moraš upoštevati, da se nekaterih pravil niti ne splača pisati v program, saj dajo manj, kot tehtajo. Naprimer, da se tako za malim kot za veliki "T" najverjetneje pojavi "he". Toda to tako malokrat pride v poštev - da niti ni racionalno upoštevati.
Potem moraš vedeti, da pravilo "blank pride za piko" intrferira s pravilom "blank, kjer nimamo pravila". In ga je tudi neumno vlačiti v program.
Kot tretje, je treba upoštevati, da se pravila spreminjajo tokom stavka. Fiksna pravila za cel stavek niso tako učinkovita, kot je eno pravilo na začetku - drugo kasneje .. itd. Koliko in kolikokrat se režim zamenja, je del problema.
Potem je pa še (najmanj) četrta zadeva. Obstaja odvisnot od česa drugega, kot od pretekle vsebine. Obstaja celo negativna korelacija med prej in potem v stavku - zaradi piščevega (ne)upoštevanja pravila, da se ne ponavlja.
Pravilo lahko izvira kar od pozicije v stringu.
Problem je kompleksen ko hudič!
Dober člavek si napisal. Parkrat sem ga prebral zadnje dni.
Vendar - ne boš verjel - obstaja "še en nivo". Se pravi, zadeva je še malenkost bolj komplicirana - in to na najmanj 4 načine.
Najprej moraš upoštevati, da se nekaterih pravil niti ne splača pisati v program, saj dajo manj, kot tehtajo. Naprimer, da se tako za malim kot za veliki "T" najverjetneje pojavi "he". Toda to tako malokrat pride v poštev - da niti ni racionalno upoštevati.
Potem moraš vedeti, da pravilo "blank pride za piko" intrferira s pravilom "blank, kjer nimamo pravila". In ga je tudi neumno vlačiti v program.
Kot tretje, je treba upoštevati, da se pravila spreminjajo tokom stavka. Fiksna pravila za cel stavek niso tako učinkovita, kot je eno pravilo na začetku - drugo kasneje .. itd. Koliko in kolikokrat se režim zamenja, je del problema.
Potem je pa še (najmanj) četrta zadeva. Obstaja odvisnot od česa drugega, kot od pretekle vsebine. Obstaja celo negativna korelacija med prej in potem v stavku - zaradi piščevega (ne)upoštevanja pravila, da se ne ponavlja.
Pravilo lahko izvira kar od pozicije v stringu.
Problem je kompleksen ko hudič!
Man muss immer generalisieren - Carl Jacobi
Zgodovina sprememb…
- spremenil: Thomas ()
Eschelon ::
Ja groza. Imaš prav. Evo še par idej, ki so teoretično izvedljive. Da bi kdorkoli kaj takega izvedel... lahko, če bi kdo plačal tudi jaz..
Celotna dosedanja analiza se je omejila na črkovno raven. To bi se dalo nadgraditi z besedno, stavčno, besedilno, vsebinsko ravnijo.
Besedna ni zanimiva sam zase, ker je le majčkeno nadgrajena črkovna (še vedno bi se dalo uporabiti drevo in nasploh zelo podoben pristop). Postane pa mnogo zanimivejša, če jo uporabimo skupaj s stavčno ravnijo.
Stavčna raven pa je zelo zanimiva. Glede na to, da analiziramo stavek, bi se dalo predvideti naslednji tip besede (glagol, pridevnik,samostalnik,...), končnice, ki določajo spol/sklon/čas.
Na besedilni ravni se bi dalo vsaj delno napovedovati čas, osebo in glagolski način, ki bo uporabljen v naslednjem stavku - glede na dogajanje v besedilu poprej.
Vsebinska raven - hehe... To je pa že SF. Vse zgoraj našteto je dosegljivo z zdravo pametjo - in sicer za eksponentno manjše pridobitve za eksponentno več truda. Razen zadnje ravni (ta pa je dosegljiva b.p. in to precej ceneje, kot izdelava programa na kakšni višji ravni, če uporabimo poljubnega človeka, ki naj predvideva črke...)
Problem je zelo zanimiv in najboljša (optimalna) rešitev zanj je odvisna od tega naših potreb.
Nič novega.
Zdaj pa nadobudni programerji vseh dežel - v napad.
PS: Če je kdo bral De Mello-a, bi me lahko primerjali s sovo v tejle basni:
Pride stonoga k sovi (pač najpametnejši živali v gozdu) in jo vpraša, kaj naj naredi, da jo bo manj bolelo - ima namreč artritis. (stonoga-artritis- heavy huh?). Sova pravi: "Postani človek - človek ima samo dve nogi in bi te veliko manj bolelo."
Stonoga: "Super ideja. Kako se pa to naredi?"
Sova: "Ne mene vprašat, jaz samo nakažem taktiko."
Naslov basni je sova nakaže taktiko.
Celotna dosedanja analiza se je omejila na črkovno raven. To bi se dalo nadgraditi z besedno, stavčno, besedilno, vsebinsko ravnijo.
Besedna ni zanimiva sam zase, ker je le majčkeno nadgrajena črkovna (še vedno bi se dalo uporabiti drevo in nasploh zelo podoben pristop). Postane pa mnogo zanimivejša, če jo uporabimo skupaj s stavčno ravnijo.
Stavčna raven pa je zelo zanimiva. Glede na to, da analiziramo stavek, bi se dalo predvideti naslednji tip besede (glagol, pridevnik,samostalnik,...), končnice, ki določajo spol/sklon/čas.
Na besedilni ravni se bi dalo vsaj delno napovedovati čas, osebo in glagolski način, ki bo uporabljen v naslednjem stavku - glede na dogajanje v besedilu poprej.
Vsebinska raven - hehe... To je pa že SF. Vse zgoraj našteto je dosegljivo z zdravo pametjo - in sicer za eksponentno manjše pridobitve za eksponentno več truda. Razen zadnje ravni (ta pa je dosegljiva b.p. in to precej ceneje, kot izdelava programa na kakšni višji ravni, če uporabimo poljubnega človeka, ki naj predvideva črke...)
Problem je zelo zanimiv in najboljša (optimalna) rešitev zanj je odvisna od tega naših potreb.
Nič novega.
Zdaj pa nadobudni programerji vseh dežel - v napad.
PS: Če je kdo bral De Mello-a, bi me lahko primerjali s sovo v tejle basni:
Pride stonoga k sovi (pač najpametnejši živali v gozdu) in jo vpraša, kaj naj naredi, da jo bo manj bolelo - ima namreč artritis. (stonoga-artritis- heavy huh?). Sova pravi: "Postani človek - človek ima samo dve nogi in bi te veliko manj bolelo."
Stonoga: "Super ideja. Kako se pa to naredi?"
Sova: "Ne mene vprašat, jaz samo nakažem taktiko."
Naslov basni je sova nakaže taktiko.
Thomas ::
T-h-ey-_ mtaoy-_ etxoi-snt-.-_ Atnod-_ atlor-e-a-d-y-_ etxop-a-n-d-i-ng-_ wtiotnh-_ ethe_ ltiognh-te_ stpoe-e-d-.-_ Ftaor-_ atwoa-y-.-_ Itto_ itsn_ atlos-o-_ ptos-s-i-bnl-e-,-_ thaet-_ thei-rn_ ptloa-n-e-t-_ itsn_ ntot-_ ftor-m-e-d-,-_ yteot-_ -t_ obtuot-_ wteo_ wtiolnl-_ mteoe-t-_ them-_ otnoc-e-_ -t_ oatso_ atnoo-t-h-er-_ etxop-a-n-d-i-ng-_ Ptow-e-r-.-_ Mtyo_ ptoi-nt-_ (taon-d-_ otfo_ ottoh-er-_ Stiong-u-l-a-r-i-tna-n-s-)-_ itsn,-_ thaet-_ ftroo-m-_ the_ bteog-g-i-ng-_ otfo_ the_ itnd-u-s-t-r-i-anl-_ rteov-o-l-u-t-i-onn-_ toh_ the_ "tfou-l-l-_ stpoe-e-d-_ athoea-d-_ ctiovni-lni-zna-t-i-onn-_ ptoi-nt-"-_ -t_ oitsn_ otnol-y-_ at_ ofteow-_ cteon-t-u-r-i-ens-_ tihmne-.-_ Qtuoi-tne-_ at_ ontaor-r-o-w-_ wtiond-o-w-_ ftor-_ otnol-y-_ toh_ htea-r-_ at_ octiovni-lni-zna-t-i-onn-_ -t_ obtuot-_ ntot-_ toh_ atlor-e-a-d-y-_ htaev-e-_ ittn_ hter-e-.-_ Qtuoi-tne-_ ntaoi-vne-_ toh_ etxop-e-c-t-,-_ thaet-_ they-_ ctaon-_ steoe-_ utso_ otnol-y-_ ntow-_ -t_ oitfn_ they-_ atroe-_ atroo-u-n-d-_ ftor-_ mtiolnl-i-onn-s-_ otfo_ yteoa-r-s-.-_ Tthoey-_ ctou-l-d-_ cton-q-u-e-r-_ the_ Mtiolnk-y-_ Wtaoy-_ lton-g-_ tihmne-_ atgoo-.-_ Tthoe_ Rtaor-e-_ Etaor-t-h-_ eatnod-_ the_ Stiong-u-l-a-r-i-tny-_ dto_ mtaok-e-_ steon-s-e-.-_ Wthoielne-_ Staog-a-n-'-s-_ vtioenw-_ ctom-b-i-ne-d-_ wtiotnh-_ ethe_ itmnp-l-i-cni-tn_ atsos-u-m-p-t-i-onn-_ otfo_ the_ "tsot-a-t-i-cn_ tehc-h-neo-l-o-g-y-_ stoc-i-ent-y-"-_ itsn_ ctroa-c-k-e-d-.-_ Wteo_ atroe-_ btaoc-k-_ itn_ the_ cteon-t-e-r-_ otfo_ the_ Utnoi-vne-r-s-e-_ atgoa-i-n.-_ Qtuoi-tne-.-
Man muss immer generalisieren - Carl Jacobi
Thomas ::
Sive črke so neuganjene. Nad njimi so v rdečem, kaj je mislil predictor. Rumene so uganjene ...
Bom dal tud source predictor-ja ..
Ni še maximalen.
Bom dal tud source predictor-ja ..
Ni še maximalen.
Man muss immer generalisieren - Carl Jacobi
Primoz ::
Še malo za podaljšanje tega čuda...
če zanemarimo velike črke... zgubimo nekaj zadetih črk, hkrati pa se koda toliko zmanjša, da pridemo pri moji debilni kompresiji do okoli 215+ točk (lahko več), kar pomeni (vsaj kolikor sem jaz videl), da še vedno vodim v točkah (bomo videli, če se mi bo dalo spackat genetski optimizator tega čuda.)
če zanemarimo velike črke... zgubimo nekaj zadetih črk, hkrati pa se koda toliko zmanjša, da pridemo pri moji debilni kompresiji do okoli 215+ točk (lahko več), kar pomeni (vsaj kolikor sem jaz videl), da še vedno vodim v točkah (bomo videli, če se mi bo dalo spackat genetski optimizator tega čuda.)
There can be no real freedom without the freedom to fail.
Thomas ::
> bomo videli, ce se mi bo dalo spackat genetski optimizator tega cuda
Sej ... jest se strinjam. genetski optimizatorji so vse kar potrebuješ, da prideš do navidezno nemogoče dobrega rezultata.
V resnici pes že skozi tja moli taco.
Sej ... jest se strinjam. genetski optimizatorji so vse kar potrebuješ, da prideš do navidezno nemogoče dobrega rezultata.
V resnici pes že skozi tja moli taco.
Man muss immer generalisieren - Carl Jacobi
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Pomoč pri programiranju z javoOddelek: Programiranje | 3538 (2465) | milc |
» | Nemorem rešit ene naloge z c++ (sem začetnik) (strani: 1 2 )Oddelek: Programiranje | 10377 (6115) | technolog |
» | statistika (strani: 1 2 )Oddelek: Znanost in tehnologija | 5522 (4859) | Thomas |
» | Challenge (strani: 1 2 3 )Oddelek: Programiranje | 8289 (5089) | Thomas |