JavaRush /Java Blog /Random-TL /Kaangkupan ng utak. Mga kasalukuyang gawain para sa pag-u...

Kaangkupan ng utak. Mga kasalukuyang gawain para sa pag-upgrade ng mga kasanayan sa programming

Nai-publish sa grupo
Tulad ng alam natin, ang mga programmer sa isang regular na batayan ay kailangang mag-isip, mag-analisa at kung minsan ay humanap ng mga di-halatang solusyon sa iba't ibang problema, malaki man o maliit. Upang gawin ito, ang mga coder ay napipilitang aktibong gamitin ang kanilang utak, na isa nang "mahal" na laruan - ang utak ng tao, na may masa na hindi hihigit sa 1.5-2% ng timbang ng katawan, ay kumonsumo ng halos 25% ng lahat ng enerhiya. At ito ay para sa karaniwang tao, at kung anong porsyento ng enerhiya ang "natupok" ng utak ng isang programmer na aktibong nagtatrabaho sa isang kumplikadong proyekto ay nakakatakot isipin (at ang mga siyentipiko, malamang na British, ay hindi pa naitatag ang eksaktong tagapagpahiwatig). Kaangkupan ng utak.  Mga kasalukuyang gawain para sa pag-upgrade ng mga kasanayan sa programming - 1Anong konklusyon ang maaaring makuha mula sa lahat ng ito? Upang maging isang mahusay na programmer, at pagkatapos ay manatiling isa, kailangan mong i-pump up ang iyong utak, turuan itong mag-isip at maghanap ng mga solusyon nang walang labis na stress at sa isang regular na batayan. Trite, tulad ng lahat ng talagang epektibong pamamaraan, ngunit epektibo. Upang matulungan kang panatilihing maayos ang kulay abong bagay sa iyong bungo, ngayon ay naghanda kami ng seleksyon ng magagandang mapagkukunan na may mga palaisipan at palaisipan para sa mga programmer, at nagsalin din ng ilang kawili-wiling mga problema mula sa Ingles.

Mga website na may mga gawain para sa mga programmer

Halos lahat ng mga mapagkukunan sa koleksyon ay nasa Ingles, kaya magkakaroon ka ng pagkakataon hindi lamang sa pagsasanay sa paglutas ng mga problema sa pag-coding at mga palaisipan, kundi pati na rin upang makakuha ng karagdagang kasanayan sa paggamit ng Ingles sa programming. Kaangkupan ng utak.  Mga kasalukuyang gawain para sa pag-upgrade ng mga kasanayan sa programming - 2
  1. Coderbyte

    Isa sa mga pinakasikat na mapagkukunan sa wikang Ingles na may mga gawain para sa mga programmer. Dito maaari kang makahanap ng higit sa 200 mga gawain ng iba't ibang antas ng pagiging kumplikado, na maaaring malutas nang direkta sa site online gamit ang isa sa 10 magagamit na mga programming language (kabilang ang Java).

  2. Programming Praxis

    Ang Programming Praxis ay isang sikat na blog na regular na naglalathala ng iba't ibang kawili-wili at, higit sa lahat, may-katuturang gawain para sa mga programmer. Karaniwan para sa isang hanay ng mga programming language. Ang mga hamon ay idinisenyo upang matulungan ang mga coder na makamit ang mga pinakabagong pagbabago sa teknolohiya at mga diskarte sa programming sa pagsasanay.

  3. TopCoder

    Ang TopCoder ay isang aktibong komunidad ng mga programmer na gustong bumuo at lutasin ang iba't ibang problema. Ang mga bagong gawain ay regular na nai-publish, ang matagumpay na solusyon kung saan ay hindi lamang magbibigay ng pagkakataon na magsanay at madagdagan ang iyong HR, ngunit makatanggap din ng mga premyong cash.

  4. CodeKata

    Ang CodeKata ay isang blog na may napakaraming orihinal at nakakatawang problema para sa mga programmer, na inimbento ni Dave Thomas, isa sa mga may-akda ng sikat na aklat na Pragmatic Programmer ("The Pragmatic Programmer. The Path from Apprentice to Master"). Ang mga problema sa website ng CodeKata ay magkakaiba, at ang mga solusyon ay may kaugnayan sa tunay na gawain sa programming.

  5. JudgeOnline ng Peking University para sa ACIP/ICPC

    Ang Peking University JudgeOnline para sa ACIP/ICPC ay isang pahina ng Peking University na naglalaman ng mga gawain para sa mga programmer mula sa iba't ibang kompetisyon at kompetisyon. Ang site ay regular na ina-update, ang mga problema ay maaaring malutas sa real time, at ang mga solusyon ay sinusuri ng isang komisyon ng mga eksperto sa Peking University.

  6. Proyekto Euler

    Isa pang lumang kilalang site na may mga seryoso at walang kuwentang gawain. “Ang Project Euler ay isang koleksyon ng mga kumplikadong problema sa matematika at programming na nangangailangan ng higit pa sa kaalaman sa matematika upang malutas. Ang mga problema ay nag-iiba sa pagiging kumplikado at ang diskarte ay batay sa inductive chain learning. Iyon ay, kapag nalutas ang isang problema, makakatuklas ka ng isang bagong konsepto na magbibigay-daan sa iyo upang malutas ang iba pang mga problema na dati ay hindi naa-access sa pag-unawa," sabi ng mga lumikha ng mapagkukunan.

  7. Ang Pang-araw-araw na WTF

    Ang Daily WTF ay isa pang sikat na komunidad ng programming na nagpapatakbo sa Bring Your Own Code (BYOC) na prinsipyo, ibig sabihin, ang mga developer ay nagbabahagi ng kanilang sariling source code upang malutas ang iba't ibang orihinal na problema. "Ang layunin ng BYOC ay simple: upang bigyan ka, bilang isang developer ng software, ng pagkakataong pagbutihin ang iyong mga kasanayan sa programming sa pamamagitan ng paglutas ng isang problema na medyo mas kawili-wili kaysa sa karaniwan, nakakainip na bagay," sabi ng site.

  8. Tproger

    Isang mahusay na site sa wikang Ruso na may mga algorithmic na gawain na ginagamit upang subukan ang mga kasanayan ng mga espesyalista sa panahon ng mga teknikal na panayam sa mga kumpanya tulad ng Google, Facebook at iba pa. Mayroong maraming mga problema na ipinakita, kabilang ang mga orihinal, ng iba't ibang antas ng kahirapan.

  9. Mga Paligsahan sa Programming ni Al Zimmermann

    Isang kilalang website ng may-akda kung saan ang "mga baliw na programmer ay nakikipagkumpitensya para sa katanyagan at mga magagandang premyo." Ang mga kumpetisyon ay gaganapin isang beses o dalawang beses sa isang taon, at ang mga pangalan ng mga kilalang programmer ay nai-publish sa pangunahing pahina ng mapagkukunan, na tiyak na umaakit ng interes mula sa mga nangangakong employer.

  10. Timus Online Judge

    Isa sa pinakamalaking archive ng wikang Ruso ng mga problema sa programming na may awtomatikong sistema ng pagsusuri. Ang pangunahing pinagmumulan ng mga gawain para sa archive ay mga kumpetisyon sa Ural Federal University, Ural Championships at iba pang mga regional programming event. Pinapayagan ka rin ng Timus Online Judge na makilahok sa mga online na bersyon ng karamihan sa mga kumpetisyon na regular na nagaganap sa Ural Federal University.

5 kawili-wiling gawain

Narito ang ilang mga kagiliw-giliw na palaisipan para sa mga hindi makapaghintay na magsimula. Kaangkupan ng utak.  Mga kasalukuyang gawain para sa pag-upgrade ng mga kasanayan sa programming - 3
  1. Blender bugtong mula kay Steve Jobs

    Hamon: Ikaw ay lumiit sa laki ng isang nikel at itinapon sa isang blender. Bumaba ang iyong timbang upang manatiling pareho ang density ng iyong katawan. Magsisimulang umikot ang mga blades pagkatapos ng 60 segundo. Ang iyong mga aksyon?

    Ito ay isang klasikong gawain na karaniwang nauugnay kay Steve Jobs, ang tagapagtatag ng Apple. Nang bumalik si Jobs sa Apple noong 1997, personal niyang kinapanayam ang bawat empleyado sa kumpanya at ginamit ang gawaing ito bilang isa sa kanyang mga unang pagsubok.

    Solusyon:

    У данной задачи больше одного решения, так How она служит для того, чтобы оценить креативность сотрудника, умение быстро находить выход из стрессовой ситуации и неординарно мыслить. Вот наиболее классический вариант решения: лечь How можно плотнее к днищу блендера, чтобы его лезвия крутorсь над вами.

  2. Сколько людей было на конференции?

    Задача: На конференции каждый гость пожал руку всем остальным. Было 66 рукопожатий. Сколько человек было на научной конференции?

    Другая классическая программистская задача из тех, которые часто дают на первых этапах технических собеседований.

    Классическое решение:

    Допустим, на конференции было n человек. Первый человек пожимает руку всем остальным: n-1 раз (n-1 человек). Второй человек пожимает руку всем остальным (но не первому, так How это уже было сделано): n-2 раза. 3-й человек пожимает руку всем остальным: n-3.

    Таким образом, общее количество рукопожатий будет = (n-1) + (n-2) + (n-3) + …… 0;
    = (n-1) * (n-1 + 1) / 2 = (n-1) * n / 2 = 66
    = n ^ 2 -n = 132
    = (n-12) (n + 11) = 0;
    = n = 12 ИЛИ n = -11

    Вариант -11 исключен, поэтому ответ: 12 человек.

  3. Бар и 25 стульев.

    Еще одна классическая и весьма остроумная задачка, на этот раз посложнее.

    Задача: Есть бар с 25-ю стульями, которые расположены в линию. Посетители этого бара — антисоциальные личности, поэтому, когда они заходят в бар, то всегда стараются найти место How можно дальше от остальных. Если постоянный посетитель заходит в бар и обнаруживает, что свободного места без соседства с кем-либо нет, он разворачивается и уходит. Владелец бара, естественно, хочет видеть можно больше посетителей. Владелец может указать место, на которое нужно сесть, только первому клиенту, тогда How все остальные сами выберут себе самое дальнее место от других. Предположим, что места пронумерованы от 1 до 25. Какое место должно быть занято первым?

    Решение:

    Первый человек должен сесть на стул 9 or 17 (из-за симметрии, не имеет значения, Howое именно из двух мест). Предположим, он выбирает место 9. Следующий человек выберет место 25, так How оно самое дальнее от места 9. Следующие два человека займут места 1 и 17. Следующие три займут 5, 13 и 21. Следующие шесть будут занимать стулья 3, 7, 11, 15, 19 и 23. Таким образом, в баре разместится максимум 13 человек, и никто не будет сидеть рядом с другим человеком. Если место, отличное от 9 or 17, будет выбрано первым, общее количество посетителей бара будет меньше 13.

  4. Деньги в карманах и религия.

    Интересно составленная задача на нахождение алгоритма.

    Problema: Ang isang lalaki ay may pera sa kanyang bulsa, ang kabuuang halaga nito ay mula 90 hanggang 95 dolyar. Sa daan, binibisita niya ang ilang templo. Sa sandaling pumasok siya sa isang templo, nadoble ang kanyang pera, at nagtatapos siya sa pagbibigay ng $100 sa bawat templo. Dahil dito, nawalan ng laman ang kanyang bulsa pagkatapos bumisita sa huling templo. Ngayon ang tanong ay: magkano ang pera niya noong una at ilang templo ang kanyang binisita?

    Solusyon:

    Nagsisimula kaming magbilang mula sa huling templo:

    Pagkatapos bisitahin ang huling templo (1) mayroon siyang 0 pera na natitira, kaya => ​​(0 + 100) / 2 = 50. Mayroon siyang 50 dolyar bago bumisita sa huling templo

    Bago bumisita sa nakaraang templo (2), mayroon siyang (50 + 100) / 2 = 75.
    Bago bumisita sa nakaraang templo (3), mayroon siyang (75 + 100) / 2 = 87.5.
    Bago bumisita sa nakaraang templo (4), mayroon siyang (87.5 + 100) / 2 = 93.75.
    Bago bumisita sa nakaraang templo (5), mayroon siyang (93.75 + 100) / 2 = 96.875 - ang halaga ay lumampas sa mga paunang kondisyon.
    Sagot: Ang tao ay orihinal na mayroong $93.75 at bumisita sa 4 na templo.

  5. Isang pangyayari sa bukid.

    At sa wakas, isa pang lumang klasiko, maaaring sabihin ng isang tulad ng akurdyon, lohikal na pag-iisip na problema.

    Problema: Isang patay na lalaki ang natagpuan sa isang bukid ng trigo. Hinawakan niya ng mahigpit ang posporo sa kanyang mga kamay. Bakit namatay ang tao?

    Solusyon:

    Ang lalaki ay lumilipad sa isang eroplano kasama ang tatlong kapwa pasahero. Natigil ang makina at nagsimulang bumagsak ang eroplano. Natuklasan ng mga lalaki na mayroon lamang tatlong parachute para sa apat sa kanila at nagsimulang magbunot ng posporo. Isa sa kanila ang bumunot ng maikli at napilitang tumalon nang walang parachute.

Epilogue

Buweno, para sa mga nakakatuklas ng mga problemang ito na masyadong simple o masyadong pangkalahatan, mayroon kaming mas kumplikadong mga problema sa Java , kabilang ang mga nakakalito na problema na kadalasang ibinibigay sa panahon ng mga panayam para sa mga Java programmer. Kung alam mo ang mga kagiliw-giliw na palaisipan para sa mga programmer o nais mong ibahagi ang iyong paboritong gawain, sumulat sa mga komento.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION