← Uz sākumu

Programmētāja prāta asināšanai

2011. gada 17. aprīlī, 27 komentāri

Vai tu esi piedalījies informātikas olimpiādēs? Informātikas olimpiādes man ir bijušas sava veida nākamais solis pēc matemātikas olimpiādēm. Problēmas vairs nebija tikai matemātiskas, bet gan arī algoritmiskas. Es pats diezgan veiksmīgi pirmajā matenes olimpiādē norāvu pirmo vietu, otrajā otro, trešajā jau trešo, bet pēc tam tālāk par atzinības rakstu neesmu ticis. Līdzīgi gāja arī ar informātikas olimpiādēm. Ja neņem vērā to, ka tajās man ir tikai viena pati bronzas medaļiņa. Neskatoties uz neveiksmēm, visi tie “NEKOREKTI IEVADDATI” man uzdzen siltas atmiņas.

Augot lielākam, pār mani nāca nevāja apgaismība - tos uzdevumus, kurus šķīlu bērnībā, tagad vairs nespēju. Tāpēc pirms dažiem gadiem nolēmu, ka tam ir jāpieliek punkts. Un kā punktu var pielikt? Risinot problēmas. Tad, nu, padalīšos ar kaudzīti resursu, kuros vēl aizvien laiku pa laikam iegriežos, lai paprovētu pierādīt sev, ka nav vēl viss pulveris tutū.

Šādi prāta un spēju asināšanas uzdevumi nereti noder jaunu valodu apguvē. Teiksim, ja esi nolēmis beidzot apgūt paitonu, tad ir vērts parisināt dažādas interesantas problēmas izvēlētajā valodā.

Project Euler
Uzdevumi ir biežāk matemātiskas dabas, kas atgādina olimpiādes. Aizraujoši paliek tad, kad saproti, ka pilnā pārlase vairs nedarbojas.

Facebook: Engineering Puzzles
Daži aizraujoši uzdevumi, kurus risināt varētu būt interesanti. Ja esi pārliecināts par savām spējām un vēlies strādāt feisbukā, vari savus variantus nosūtīt viņiem. Risinājumiem ieteiktu pieiet radoši :)

Google Code Jam
Protams, kā gan bez šī. Ikgadējais gūgles konkurss ar nopietnām balvām, nopietniem uzdevumiem un vēl nopietnāku konkurenci. Ir arī uzdevumu archivs.

TopCoder
Pirms gūgles koda vasaras šīs bija vienas no nopietnākajām tiešsaistes programmēšanas sacīkstēm. Tagad tādas rīko kurš katrs, bet topkoderis ir un paliek vērtība.

Programming Praxis
Detalizēti paskaidroti uzdevumi. Uzdevumi lielākoties ir triviāli.

phpGolf
Kad palūdzu atgādināt šī projekta nosaukumu vienam puisim skaipā, viņš piebilda bolditalikanderlainā vārdu “vājprātīgais”. Vairākkārtīgi. Faktiski tas attiecas uz tiem gadījumiem, kad vēlies būt topā. Tur tu netiksi. Nekad. Ja tiksi, uzsaukšu alu. Ne vienu vien. Tur tiek programmēts ar PHP kļūdu un nedokumentēto iespēju palīdzību.

Code Golf, anarchy golf
Līdzīgi projekti. Pirmais ir nopietnāks, otrais ir savādāks.

Sphere Online Judge (SPOJ)
Simtiem problēmu, kuras, visticamākais, ja ne visas, tad liela daļa būs atrodama pārējās lapās.

Ja nu es kādu esmu piemirsis, bet tu atcerējies, papildini.

Labi. Padomāju un nolēmu, ka atzīšos. Ierakstu lika uzrakstīt viens nesens atgadījums. Pirms kāda laika vienam pazīstamam kantorītim palīdzēju intervēt PHP programmētājus. Aldziņa maziņa, programmētāji knapiņi. Taču, viena lieta mani samulsināja. Es ceru, ka tagad nevienu neaizvainošu.

Kā praktiskais uz vietas risināmais uzdevums tika dots “FizzBuzz”. Programmai nepieciešams izdrukāt skaitļus no 1 līdz 100. Ja skaitlis dalās ar trīs, tā vietā jāraksta “Fizz”. Ja tas dalās ar pieci, tad “Buzz”. Ja dalās gan ar trīs, gan ar pieci, tad rakstam nevis skaitli, bet gan “FizzBuzz”. Kā jau minēju - uzdevums jāatrisina uz vietas. Kandidātam priekšā ir dators ar atvērtu teksta redaktoru un PHP interpretatoru. Internets nav pieejams. Laiks - 15 minūtes vai mazāk. Neviens uz pirkstiem neskatās.

3 (trīs!!!) no pieciem to neizdarīja arī 20 minūtēs. Labi, trešais to izdarīja, bet kļūdaini. Attiecīgi - divi no viņiem uzrakstīja ātri, un bez kļūdām. Viens no viņiem to veica ļoti labi un smuki (ja šos vārdus var attiecināt uz tik triviālu uzdevumu). Taču trīs. TRĪS!

Tad, nu, lūdzu. Atrotam piedurknes un risinām, domājam, mēģinām. Savādāk no jums sanāks vien tie paši vecie labie script-kiddies. Ja neizdodas atrisināt, pamēģinam pasēdēt pāris stundas gūglē. Pameklējam piegājienus. Algoritmus. Atceramies skolas matemātikas un ģeometrijas vielu. Tu atceries, kas ir LKD? Kā to atrod? Neatceries? Ej, un uzmeklē.

Tu atbildi augstāk redzamajam komentāram. Atcelt

Gravatar laacz Autors

2011. gada 18. aprīlī, plkst. 00:57

piu, daži komentāri. a) Tu neesi uzmanīgi izlasījis uzdevuma nosacījumus. "Aizvietot ar", nevis pierakstīt klāt. b) Piemēram, šādi: http://paste.php.lv/f240d041c6216b546cabf1d005def4e8?lang=php

Gravatar bubu

2011. gada 18. aprīlī, plkst. 01:14

Mēs darbā laiku palaikam padarbojamies ar http://www.hacker.org/ - Challenges. Daži citi tur arī labi, piemēram, Mortal Coil.

Gravatar arnico

2011. gada 18. aprīlī, plkst. 03:49

tie phpGolf kadri tiešām ir slimi!

<?=$r;

Gravatar arnico

2011. gada 18. aprīlī, plkst. 03:53

ar slimi (par phpGold) es domaaju - uzdevums atrast iisaako celju no A liidz Z kartee kuraa ir skjeerslji kas jaapiet .. manas domas ir uzreiz paaris lapas gars kods ... vinju pirmaas domas ir 200 simbolu gars kods ... kas beigu beigaas tiek saiisinaats liidz 140 simboliem, principaa divaam rindinaam koda

Gravatar spicausis

2011. gada 18. aprīlī, plkst. 10:29

Fizbazs phpgolf.org stilā būs kas šāds, http://paste.php.lv/b3a2add72885a3d6e5b7e4edaef50ea1?lang=php — bet pirmās vietas vienalga būtu kādus 10-20 baitus īsākas.

Gravatar Mārtiņš

2011. gada 18. aprīlī, plkst. 11:17

http://www.lio.lv/olimps/ !!!!!!!!! Radījums mūsu dzimtajā valodā tak!!!

Gravatar Dindālis

2011. gada 18. aprīlī, plkst. 12:08

Par informātikas olimpiādēm labas atmiņas. 1998. gadā vēl pirmkodus nepārbaudīja. Tad nu nepaspējis uzrakstīt pēdējo programmu, kurai jārēķina un jāatbild ar JĀ vai NĒ, "aiz ekrāna malas" paslēpu random. Rezultātā paveicās un dabūju pirmo vietu rajonā...

Gravatar hehe

2011. gada 18. aprīlī, plkst. 19:45

spicausi - uzreiz biju iedomājies ko līdzīgu tevis dotajam kodam un apkritu gandrīz kad ieraudzīju piu kodu :)

Gravatar artisare

2011. gada 18. aprīlī, plkst. 20:58

Izlasīju tavu rakstu, iekšēji nedaudz sabijos, fiksi uzrakstīju pirmo ideju kas ir galvā un atviegloti nopūtos :) Palasīju komentārus un pasmaidīju - izrādās mana rezerves plāna doma ar bija pareiza. Tātad neesmu vēl norakstāms :)

P.S. fizzbuzz phpgolf.org stilā iespārda. Atceros, ka Kirils (kirils.com) savulaik ar k-ko līdzīgu aizrāvās - visu uzrakstīt maksimāli īsi.

Gravatar Ivars

2011. gada 18. aprīlī, plkst. 21:12

uzzini, kas tas par lietotāju "spicausis" tajā phpgolf un viņam vari uzsaukt aliņu :D

Gravatar laacz Autors

2011. gada 18. aprīlī, plkst. 22:01

Ivar, ar spicausi ir gana daudz alus (un ne tikai) izdzerts :)

Gravatar fredero

2011. gada 19. aprīlī, plkst. 03:35

Uzdevumaa nav teikts, ka string "FizzBuzz" ir vienkaarshi kaut kaads string, vai tas ir divu ieprieksh mineeto stringu salikums. Uzdevumaa runa ir par 3 stringiem (neatkariigiem, jo nav noraadiits savaadaak), taadejaadi, nav atljauts sakrustot pirmos divus mainiigos (kaa laacz piedaavaatajaa algoritmaa), lai ieguutu tresho, tikai taapeec, ka taa vizuaali izskatas pareizi.

Gravatar Infants

2011. gada 19. aprīlī, plkst. 19:23

Neesmu īsts programmētājs, bet šādu uzdevumu varētu 2 minūtēs risināt (garajā variantā). Kas tad bija tie 3 džeki?

Par matemātikas olimpiādēm? Nebiju tas, kurš braukāja jaunākajās klasēs uz olimpiādēm. Piedalījos tikai 2 reizes (11. un 12. klase). 12. klasē norāvu rajonā 2. vietu. Neviens neticēja! :D

Gravatar ulzha

2011. gada 20. aprīlī, plkst. 12:08

ACM ICPC ir studentu analogs skolimpiādēm. http://acm.pku.edu.cn un milzums citu treniņlapu http://ipsc.ksp.sk ikgadējs tāds ar patīkami "ārpus kastes" uzdevumiem http://codeforces.com, http://codechef.com attiecīgi krievu un indiešu Web 2.0 kloni TopCoder

Gravatar ulzha

2011. gada 20. aprīlī, plkst. 12:17

http://challenge24.org kaujies ar miegu http://icfpcontest.org uz funkcionālo programmēšanu orientēts, ir bijis aizraujošs, ir nebijis Vēl katra Indijas universitāte rīko festu ar programmēšanas sacensībām, citu par citu haotiskāku, bet ar balvām http://www.google.lv/search?q=iit+programming+contest

Gravatar ulzha

2011. gada 20. aprīlī, plkst. 12:29

Ā, vēl pie skolēnu/studentu darāmā http://ace.delos.com/usacogate (mans pirmais, ar labiem tutoriāļiem), http://www.hsin.hr/coci/ (nezinu, bet inteliģence lieto), http://opencup.ru/ (logs uz Krievijas ACM ICPC treniņsacensību kultūru, pieteikties http://www.lu.lv/dn/darbinieki/arnicansguntis.html)

Gravatar Another

2011. gada 22. aprīlī, plkst. 11:46

Lietotājs piu saņemtu + pie vēlmes nākt darbā par jaunāko programmētāju. Lietotāju spicausis es, droši vien, darbā paņemtu kā normālu vai vecāko programmētāju, atkarībā no apstākļiem, bet ir iespēja, ka pāŗbaudes laiku viņš neizturētu - komandas darba apstākļos koda optimizēšana stipri traucē nodot darba vienības uzturēšanā vājākiem izstrādātājiem, viņi smadzenes izmežģīs mēģinot kautko pamainīt. Savukārt, labu koderi turēt uz uzturēšanu parasti nerentējas. Tipiska "frīlanceru" iesaistīšanas problēma ;)

Gravatar Mr.Key

2011. gada 23. aprīlī, plkst. 11:51

<?php for ($i=1;$i<=100;$i++) {if ($i%15==0) echo 'FizzBuzz'; else if ($i%3==0) echo 'Fizz'; else if ($i==5) echo 'Buzz'; else echo $i; echo ''.PHP_EOL;} Pirmais, kas iešāvās prātā un rakstīšanas ātrumā.

Gravatar Mr.Key

2011. gada 23. aprīlī, plkst. 11:55

Ups, typo, $i%5==0, nevis $i==0.

Gravatar Mr.Key

2011. gada 23. aprīlī, plkst. 12:08

Kas attiecas uz vājajām zināšanām. Ne jau cilvēki ir vainojami pie tā, ka viņi nezin. Vide.. vide ir tāda, ka ļoti, ļoti maz cilvēku iespringst uz tādām lietām un .. vai viņiem tas ir nepieciešams?

Mazliet atraktīvāks variants. <?php for ($i=1;$i

Gravatar Mr.Key

2011. gada 23. aprīlī, plkst. 12:09

Mazliet atraktīvāks variants. http://paste.php.lv/d04c729584d9f6976cf859f81a24f44a?lang=php

Atvainojos par piesārņošanu.

Gravatar Mr.Key

2011. gada 23. aprīlī, plkst. 16:27

Ir kāds, kam izdevās fizzbuzz dabūt zem 59 baitiem?

Gravatar ZBH

2011. gada 26. aprīlī, plkst. 10:29

jaaatziist, ka spicausha #6 kods iraid labaak saprotams par Laacza #2 kodu, jo nenodarbojs ar visaad mainiigo izvadi, kuriem kodaa pirms tam jaameklee, kaads iist veertiibs tiek pieskirts, un vadoties peec kaa. nesaku, ka #6 idej iraid slikt. taa vnk neir tik uzskataam, un nodarbojs ar liekaam darbiibaam (tuksu rindu saturosa mainiigaa izvadi).