MarisO Ierakstīts Decembris 28, 2015 Share Ierakstīts Decembris 28, 2015 (labots) Iesakiet kādu labu un interesantu zoles algoritmu. Es vienu dienu uzrakstīju open source zoli, kas gan vēl nav 100% pabeigta. https://github.com/maruks/erl-zole Varbūt kāds vēlas tādu algoritmu uzkodēt un atsūtīt pull request. Labots Decembris 28, 2015 - MarisO Link to comment Share on other sites More sharing options...
J.Reinis Decembris 28, 2015 Share Decembris 28, 2015 pie kam open source? A kas vainas - cilvēks vismaz pārmaiņas kaut ko netaisa, lai noslauktu piķi. Apsveicami! 1 Link to comment Share on other sites More sharing options...
MarisO Decembris 28, 2015 Author Share Decembris 28, 2015 Ar algoritmu es domāju programmu, kas spēlē zoli, izrēķina, kuru kārti izspēlēt. To rēķināšanu noteikti var veikt vairākos veidos, implementēt dažādas stratēģijas utml Link to comment Share on other sites More sharing options...
AndrisBB Decembris 28, 2015 Share Decembris 28, 2015 (labots) Es domāju būtu interesanti uztaisīt neatkarīgu serveri, kautvai parasts node.js socket servers, kurš dala kārtis un pārbauda vai klienti nešmaucas. Tad pie servera var pieslēgties dažādi klienti un izspēlet partijas, tādā veidā noskaidrot, kurš var uzrakstīt labāko klientu. Protams lai būtu iespējams salīdzināt, partijas būtu jāizpēle vairākas reizes ar tām pašām kārtīm, mainot klientus vietām, kas gan var novest pie šmaukšanās. --------------- Vai arī vienkārši jāizspēlē liels daudzums partiju Labots Decembris 28, 2015 - AndrisBB 1 Link to comment Share on other sites More sharing options...
japets Decembris 29, 2015 Share Decembris 29, 2015 Var sākt ar vispārzināmajiem "likumiem": - mazais: caur savējo ar to, kas mazāk - mazais: caur lielo ar to, kas vairāk (kuru?) - ... Sākot ar vienkāršiem likumiem parasti var diezgan tālu tikt. Galdiņa pacelšanas izvērtēšana jau gatava? Būtu interesanti arī aplūkot pašmācīšanos. Ja uznāks vēlme mācīties erlang, varbūt pakodēšu. Link to comment Share on other sites More sharing options...
Mezavecis Decembris 29, 2015 Share Decembris 29, 2015 Es nesaprotu šī topika jēgu. Pats ielicis kaut kādu kodu (nevis algoritmu), kas dara kaut ko, un tagad meklē muļķus, kas lasīs viņa kodu un meklēs kļūdas tajā. Tak pats miljons reižu esi teicis, ka svešu kodu labot ir slikti. P.S. Būtu ieliecis kodu kādā no vispārzināmām programmēšanas valodām, varbūt kāds mēģinātu iedziļināties, ko un kāpēc esi saveidojis. Atliek griezties pie saviem Londonas pagrīdes kluba korišiem. 1 Link to comment Share on other sites More sharing options...
AndrisBB Decembris 29, 2015 Share Decembris 29, 2015 Es domāju ka grūti būs kautko tādu noorganizēt Link to comment Share on other sites More sharing options...
camel Decembris 29, 2015 Share Decembris 29, 2015 Iespējams, ka nebūs labs un interesants, ... lejuplādē no šejienes http://kastanis.biz/zole.html, algoritms / skripts būs failā script.txt. Link to comment Share on other sites More sharing options...
MarisO Decembris 29, 2015 Author Share Decembris 29, 2015 (labots) šis te izskatās savādi: Tie ir punkti, cik par to kārti savāc. atvērta koda zoles serveri ar nesamākslotu, pārskatāmu kodu Serveris jau ir , tikai tam vēl nav web socketa. Es tagad pie tā strādāju. Tad botus varēs rakstīt jebkurā valodā. Tagad to var erlangā - skatīt player.erl - pašlaik tas prasa izvēles ievadi no klaviatūras. Labots Decembris 29, 2015 - MarisO Link to comment Share on other sites More sharing options...
camel Decembris 30, 2015 Share Decembris 30, 2015 Varbūt ne pa tēmu, bet gribu uzjautāt @MarisO par FP. Īsti nesaprotu funkcionālās programmēšanas konceptu. Operēšanu ar mainīgajiem iekš FP laikam notiek šādi:state = f(state, event)- funkcija reagējot uz notikumu paņem visu mainīgo kopumu (state), izmaina, piemēram, vienu baitu un saliek jaunu state objektu, jo cita varianta saglabāt izmaiņas FP taču neparedz. Vai es esmu sapratis kautko ne tā? Link to comment Share on other sites More sharing options...
MarisO Decembris 30, 2015 Author Share Decembris 30, 2015 (labots) @camel, Jā tā ir, tikai funkcija , paņem tikai to state, kas uz to attiecas Ir ērti lietot rekursiju. Par piemēru, zoles klienta state vienmēr atrodas f-jas argumentos Name, Table, Cards Tā mainās, kad dabon citas kārtis no servera loop(Name, Table, Cards) -> receive % saņem event no servera {cards, NewCards} -> % jaunas kārtis loop(Name, Table, NewCards); % state update {prompt, play} -> io:format("Player ~p~n",[Name]), print_menu(Cards), C = list_to_integer(io:get_chars(">",1)), send(Name,Table, {play, lists:nth(C, Cards)}), loop(Name, Table, Cards); Labots Decembris 30, 2015 - MarisO Link to comment Share on other sites More sharing options...
camel Decembris 30, 2015 Share Decembris 30, 2015 To, ka paņem ..., saprotu, bet ko dara ar atgrieztajām izmaiņām. Ja mainīgais parasti ir pakārtots kautkādam state, tad izmainot šo mainīgo, jāliek viss state no jauna - šito es nesaprotu. Link to comment Share on other sites More sharing options...
usver Decembris 30, 2015 Share Decembris 30, 2015 @@drunk_lizard, vai varētu, lūdzu, izvērstāku komentāru par saviem iebildumiem? kuri aspekti programmas izpildījumā Tevi satrauc? 1 Link to comment Share on other sites More sharing options...
usver Decembris 30, 2015 Share Decembris 30, 2015 Nu izliktais ir prasts spēles dzinējs, kas iedala kārtis, pārbauda izspēlēto kāršu adekvātumu, skaita stiķus. neredzu, kur būtu reklamēts AI. redzu tikai pieprasījumu pašārēt kāda inteliģenta klienta speceni/izpildījumu. Varbūt kāds vēlas tādu algoritmu uzkodēt un atsūtīt pull request. Ar algoritmu es domāju programmu, kas spēlē zoli, izrēķina, kuru kārti izspēlēt. pašlaik tas prasa izvēles ievadi no klaviatūras. joprojām neredzu, kur būtu kāds AI sludināts. 1 Link to comment Share on other sites More sharing options...
DjUbuntu Decembris 30, 2015 Share Decembris 30, 2015 nu es no eerlang saprotu tikai mazliet vairaak kaa topika autors no darba tirgus latvijaa, bet tur ir implementeeta elementaara zoles speelees 'gramatika' (tas notiek peec taa utml.). Interesantaa dalja - kad kaa riikoties (kur zoles gadiijumaa interesantaaakais ir 'mineeshana' kaadas rokas ir citiem un mazo speeleeshana kopaa). Zjeel :> p.s. erlang AI realizaacijai ir ... diivaina izveele. Klasiski buutu vai nu py (ko var lasiit arii ielejkoderis) vai arii kaads modernais LISPa paveids (alias scala) Link to comment Share on other sites More sharing options...
Guest Decembris 30, 2015 Share Decembris 30, 2015 (labots) kāds vēl ir tik senā pagātnē iesprūdis, ka instalē tildes un apostrofus priekš grāmatzīmēm? latviešu valoda pat vairākos layoutos tak jebkurai populārai OS nāk, vai te visi vēl uz xp sēž? Labots Decembris 30, 2015 - Guest 1 Link to comment Share on other sites More sharing options...
inteens Decembris 30, 2015 Share Decembris 30, 2015 es.sēžu.uz.xp..divos.datoros.bet.ar.garumzīmēm.man.nav.problēmu. Link to comment Share on other sites More sharing options...
MarisO Janvāris 7, 2016 Author Share Janvāris 7, 2016 (labots) Es esmu uzkodējis web soketu. https://github.com/maruks/erl-zole-ws Tagad var spēlēt lietotāji savā starpā vai pret vienkāršu servera botu, ja atver galdu ar "pvb-table-" prefiksu nosaukumā. Klientam gan vēl nav nekāda GUI. Tas atrodas šeit http://maruks.homelinux.org:8080/ Ja kāds vēlas uzkodēt labāku botu vai GUI klientu tad lūdzu dariet tā ! servera bota kods: https://github.com/maruks/erl-zole/blob/master/src/player.erl Labots Janvāris 7, 2016 - MarisO Link to comment Share on other sites More sharing options...
Sanchus Janvāris 7, 2016 Share Janvāris 7, 2016 (labots) Daži ieteikumi art-intelektam: Spēlēt uz naudu. Motivē Caur savējo ar kungu vai 9, ja Tev rokās ir divi sūdi Dot Lielajam 10 (vai ļoti lielas pārliecības gadījumā) dūzi, ja tev ir 3 tādi lieki un Tev jāiet spēles sākumā caur viņu Caur savējo ar Dūzi vienā no sākuma gājieniem, ja vispār esi pie gājiena ticis Pietaupi trumpas beigām, ja sūdi rokās. Galvenais skaitīt, kādas kārtis ir spēlē. Nomest vai steidzīgi atbrīvoties no trumpja, ja to kopskaits spēles sākumā ir 2 un mazāk Atmesties uz sūda, ar ko iziet Lielais, bet ievēro 50/50%% uz Jelgavniekiem Nomest dāmu, jo 3p kalpa 2p vietā, ja briest sūdi Pietaupīt lielāko trumpi, ja otrs Mazais ir švaks Nedabūt pa degunu no otra Mazā, spēlēt pareizi un partijā nepieļaut kļūdas, kas izšķir uzvaru .... un vēl n-principi, par pašas zoles spēlēšanu nerunājot.. Labprāt ar tiesnesi Mežaveci un vēl dažiem pensionāriem no boot vecbiedriem uzspēlētu zoli. Labots Janvāris 8, 2016 - Sanchus Link to comment Share on other sites More sharing options...
MarisO Janvāris 9, 2016 Author Share Janvāris 9, 2016 jāliek viss state no jauna - šito es nesaprotu. Clojurē ir ērti lietot šo te: Managed lifecycle of stateful objects in Clojure https://github.com/stuartsierra/component Link to comment Share on other sites More sharing options...
Raimonds1 Janvāris 9, 2016 Share Janvāris 9, 2016 uzraksti kodam komentus šite tiek noteikts, ja prasa trumpi, liek trumpi, ja nav, var likt pīķi, kreicu, ercu šite-nosaka, kuram stiķis site nosaka , ka prasa atteicīgo mastu, tieksim, ercu un atļauj likt ko citu, ja nav šite paziņo, signalziē, ka šito lieko tu neliksi, ja tev ir trumpe prasītā vai attiecīgā masta kārts šeit skaita punktus šeit pieļauj atmešanos un skaita punktus Link to comment Share on other sites More sharing options...
camel Janvāris 9, 2016 Share Janvāris 9, 2016 (labots) Varbūt to tur ir ērti lietot clojurē, bet tas nemaina to, ka lai izmainītu vienu baitu, papildus jāveic apjomīgas manipulācijas. Paņemsim F#, sarakstīsiem objektus, kas satur citus objektus un pamēģināsim tur saglabāt izmaiņas - tas taču ir nereāls, neefektīvs pasākums. Ja to iekš FP var noorganizēt kaukā savādāk, tad izstāsti kā. Savādāk FP ir drīzāk bezjēdzīgs. Par mainīgo glabāšanu argumentos: Erlangā tas receive konstrukts izskatās neaatbilstošs FP garam, jo tu nosūti mesidžu funkcijas loopam, kas rada blakusefektus - izmaina loopa argumentus. Vai to vispār var uztaisīt tīrā FP? Labots Janvāris 9, 2016 - camel Link to comment Share on other sites More sharing options...
MarisO Janvāris 13, 2016 Author Share Janvāris 13, 2016 (labots) Ja to iekš FP var noorganizēt kaukā savādāk, tad izstāsti kā. Var gan: https://en.wikipedia.org/wiki/Persistent_data_structure Iekš F# noteikti tās ir implementētas. Clojurē visas iebūvētās datu struktūras ir funkcionālas. Tām ir non-destructive update. Var pats tādu uzrakstīt: https://github.com/maruks/clj-data Tās ir no šīs grāmatas http://www.amazon.co.uk/Purely-Functional-Data-Structures-Okasaki/dp/0521663504 blakusefektus - izmaina loopa argumentus. Vai to vispār var uztaisīt tīrā FP? Tā būtu pure funkcija, kas saņem sarakstu ar saņemtajiem ziņojumiem un returno atbildes ziņojumu. Tas gan īsti nebūtu idiomatic erlang. Viss jau nav "tīra" funkcija. http://blog.jenkster.com/2015/12/what-is-functional-programming.html Tajā okasaki grāmatā ir visādi hīpīši, bet iekš clojure standarta lib tāda nav. Haskelī gan tāds hīpītis ir un visi haskelisti varēja viegli uzkodēt vienu hackerrank uzdevumu, kur šādu hipīti vajag. Tad es pamēģināju to leftist heap , ko esmu uzkodējis , un viss notikās. Labots Janvāris 12, 2016 - MarisO Link to comment Share on other sites More sharing options...
camel Janvāris 13, 2016 Share Janvāris 13, 2016 Mans viedoklis ir tāds, ka padarīt programmas mainīgo kopumu (state) persistent (izmaiņu saglabāšana nezaudējot vecos datus) ir pārāk darbietilpīga un neefektīva padarīšana. Gala lietotājs no tā neko neiegūst, un programmētājam arī maz labuma no tā FP. Gaidiju, ka tu piekritīsi tam. Link to comment Share on other sites More sharing options...
erikonkulis Janvāris 13, 2016 Share Janvāris 13, 2016 latviešu valoda pat vairākos layoutos tak jebkurai populārai OS nāk win7 nav lv uz apostrofa, tātad tā nav vairs populāra OS? Link to comment Share on other sites More sharing options...
Xirx Janvāris 13, 2016 Share Janvāris 13, 2016 Labās puses Alt+? Link to comment Share on other sites More sharing options...
MarisO Janvāris 13, 2016 Author Share Janvāris 13, 2016 (labots) pārāk darbietilpīga un neefektīva padarīšana. Parasti tas ir tikai + log n, salīdzinot ar parastu, imperatīvu datu struktūru. Gala lietotājs no tā neko neiegūst, un programmētājam arī maz labuma no tā FP. Es gan domāju, ka FP ir krietni ērtāk, vismaz man tā ir. Es tāpēc vairs nekodēju javā, jo tur nav persistentās datu struktūras, variabļi nav single-assignment un ir daudz visāds bullshit, objekti un klases. WTF Labots Janvāris 13, 2016 - MarisO Link to comment Share on other sites More sharing options...
camel Janvāris 13, 2016 Share Janvāris 13, 2016 (labots) Parasti tas ir tikai + log n Paņemsim tipisku programmu: class MyClass { int var1jfdjsl; int var2k97fhv; ..... int var1000kgkgu; } MyClass c; void OnMsg(int msg) { switch(msg) { case 1: c.var1jfdjsl = 12; .... } } Jautājums: par cik lēnāka būs FP implementācija, kad aiz katras var = val operācijas jātaisa jauns myclas objeckts un vecie dati jākopē. Ja starpība nav 10x lielāka, tad varbūt vēl var apsvert iespēju pamēģināt kautkādu haskeli vai F#. Labots Janvāris 13, 2016 - camel Link to comment Share on other sites More sharing options...
MarisO Janvāris 13, 2016 Author Share Janvāris 13, 2016 Ja tās klases vietā tiek lietota persistentā Map struktūra? tad par log32 n HAMT Map implementācija https://en.wikipedia.org/wiki/Hash_array_mapped_trie The programming languages Clojure,[2] Scala, and Frege[3] use a persistent variant of hash array mapped tries for their native hash map type Link to comment Share on other sites More sharing options...
camel Janvāris 13, 2016 Share Janvāris 13, 2016 Ko nozīmē tas log32 n? Ja c tur ir, pieņemsim, 10 asm operācijas, cik būs clojure? Link to comment Share on other sites More sharing options...
MarisO Janvāris 17, 2016 Author Share Janvāris 17, 2016 (labots) nu tas atkarīgs no tā, cik tajā struktūrā ir elementu HAMT koka algoritmiskā sarežģītība ir log32 n 10 elementi - papildus 1 operācija 1'000'000 - papildus 4 protams, plus/mīnus kautkāda konstante, kas no implementācijas atkarīga (heštabula vs koks) vienkāršāk izsakoties "tikai drusku lēnāk" (praktiski par konstanti) kā parasta Map implementācija Te laikam nav daudz open source / zole entuziastu ? Nav uzkodēts ne bots, ne web klients. Vakar webs tika mēģināts clojurescript "hack the tower" eventā, diemžēl programmētāji to nevarēja izdarīt. Iekš UK zolīte nav pazīstama. Šeit spēlē tādu "shithead". Labots Janvāris 17, 2016 - MarisO Link to comment Share on other sites More sharing options...
AndrisBB Janvāris 17, 2016 Share Janvāris 17, 2016 Es jau labprāt uzrakstītu savu klientu, kurš pieveiktu tavējo, tik ir citas prioritātes un brīvais laiks ir ierobežots. Link to comment Share on other sites More sharing options...
Edis7 Marts 11, 2016 Share Marts 11, 2016 (labots) >Londonas java koderis / iOS fanātiķis....Sveiks! Tev ir Zoles portaals gatavs, vai kaa? >Maris O. Ja zolīte nav,_-tad naff arī skaidrot rekursīvās fff-jās tautai, n(!) > def factorial( n ): if n == 1: return 1 return n * factorial( n - 1 ) Tas lieki! Ok, varbūt visiem saprotamā val. UK, Jums Zolīte tur jāspēlē ar "shithead", bet nav doma to botāniķu pulciņu pamest?? Labots Marts 11, 2016 - Edis7 Link to comment Share on other sites More sharing options...
MarisO Aprīlis 7, 2016 Author Share Aprīlis 7, 2016 es uzkodēju gui, tur gan pagaidām tikai ar to botu var spēlēt atver šo adresi un patestē http://maruks.homenet.org:9090 Link to comment Share on other sites More sharing options...
vvv Aprīlis 7, 2016 Share Aprīlis 7, 2016 Malacis. Izspēlēju vienu partiju pret datoru. Biju lielais. Kaut kā negudri tie mazie spēlēja, visu laiku līda zem maniem trumpjiem, kaut bija viņiem stipras kārtis, vinnēju. Malacis, Māri. Link to comment Share on other sites More sharing options...
AndrisBB Aprīlis 7, 2016 Share Aprīlis 7, 2016 Man taspats Link to comment Share on other sites More sharing options...
MarisO Aprīlis 7, 2016 Author Share Aprīlis 7, 2016 ir safiksēts Link to comment Share on other sites More sharing options...
MarisO Augusts 15, 2016 Author Share Augusts 15, 2016 (labots) Tam ir izmantojams polimorfisms. Iekš OOP (visādās javās) - klašu hierarhija. Type klases haskelī. Multimetodes / protokoli clojurē. Pattern matching erlangā. Labots Augusts 15, 2016 - MarisO Link to comment Share on other sites More sharing options...
MarisO Augusts 15, 2016 Author Share Augusts 15, 2016 ir gan https://github.com/maruks/erl-zole/blob/master/src/zole.erl vienkāršs robots https://github.com/maruks/erl-zole/blob/master/src/player.erl Link to comment Share on other sites More sharing options...
Леший Augusts 16, 2016 Share Augusts 16, 2016 Es īpaši nepārzinu erlang un neesmu iedziļinājies tavā algo, bet: strength({R, S} = C) -> trump(C) + strength(R) + strength(S); strength(clubs) -> 4; strength(spades) -> 3; strength(hearts) -> 2; strength(diamonds) -> 1; strength(queen) -> 130; strength(jack) -> 120; strength(ace) -> 110; strength(king) -> 95; strength(N) -> N * 10. Kad es jaunības gados mēģināju uzprogrammēt zoles botu, strength bija daudz vienkāršāks: ne-trumpa 9 - 0, ne-trumpa karalis - 1, ne-trumpa desmit - 2, ne-trumpa dūzis - 3. Tālāk visām trumpām spēks izaug, un nav divu trumpu ar vienādu spēku, tāpēc [7d .. Qc] = [4..17]. Pēc tam aprēķināt uzvarētāju ir elementāri. Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!