Konkurrenskraftig programmering för nybörjare: Topcoder-utmaningar

Innehållsförteckning:

Anonim

Vad är konkurrenskraftig programmering?

Konkurrenskraftig programmering löser kodningsproblem med algoritm och datastruktur. Deltagarna måste skriva kod under olika begränsningar som minnesgränser, körtid, kodgräns, utrymme etc.

Vinnaren förklaras baserad på några problem som har lösts och tid på att skriva framgångsrika programmeringslösningar. Det inkluderar dock också andra faktorer som kvaliteten på den producerade produktionen, exekveringstid, programstorlek etc.

I den här handledningen lär du dig

  • Vad är konkurrenskraftig programmering?
  • Fördelar med konkurrenskraftig programmeringsprov
  • Historik om konkurrenskraftig programmering
  • Färdighetskontroller i de tävlande programmeringsproven
  • Hur man kommer igång?
  • Hur förbereder man sig för konkurrenskraftig programmering?
  • Myter och verklighet av konkurrenskraftig programmering
  • Bästa metoder för konkurrenskraftiga kodprov
  • Nackdelar med konkurrenskraftig programmering

Fördelar med konkurrenskraftig programmering

Här är fördelarna med att delta i tävlingar:

  • Konkurrenskraftig programmering hjälper dig att förbättra dina logiska och analytiska färdigheter
  • Det förbättrar din algoritmiska kunskap.
  • Det är ett utmärkt tillskott till ditt CV.
  • Förbättra ditt nätverk av vänner som också brinner för programmering
  • Det stöds av världsberömda organisationer som Google, Amazon, Facebook, IBM och andra.

Historik om konkurrenskraftig programmering

I den konkurrenskraftiga programvärlden är den äldsta tävlingen ACM-ICPC (International Collegiate Programming Contest). Det har sitt ursprung på 1970-talet och har vuxit till att sträcka sig över 88 länder.

Intresset för programmeringsutmaningar har ökat kraftigt efter 2000. Det var möjligt på grund av tillväxten på Internet. Det gör att kodningstävlingssidor kan hålla internationella tävlingar online.

Kompetenser som krävs i de tävlande programmeringsproven

Skicklighet Detaljer
Viktiga färdigheter
  • Algoritmfärdigheter
  • Grundläggande matematiska färdigheter
  • Programmeringsfärdigheter
  • Att skriva hastighetsfärdigheter
  • Felsökningsfärdigheter
Slutför sökningen
  • Brute force-sökning med hela sökutrymmet
  • Slår tidsgränsen
  • Optimera sökningen
Söndra och erövra
  • Dela upp kodningsproblemet i mindre delar
  • Binär sökning
Dynamisk programmering
  • Bestäm problemtillstånd
  • Snabbare och mer detaljerad rekursiv backtracking

Hur man kommer igång?

Här är några användbara tips som du bör veta innan du börjar med konkurrenskraftig programmering:

  • Det är viktigt att du väljer ett programmeringsspråk som du är mest bekväm med
  • Registrera dig på valfri online-kodningswebbplats och börja lösa deras träningsproblem
  • Du måste lära dig mer om datastrukturer, vilket är viktigt för att lösa komplexa kodningsfrågor.
  • Du måste förstå begreppet komplexitet i program.
  • Lär dig viktiga programmeringsmönster som rekursion, dynamisk programmering etc.

De bästa konkurrenskraftiga programmeringssajterna

De viktigaste kodningsutmaningssidorna är:

  • TopCoder
  • Coderbyte
  • Codewars
  • CodeChef
  • Codeforce
  • Hackerearth

Toppkodare:

Topcoder är en mycket populär plattform för konkurrenskraftig programmering. Det erbjuder många algoritmiska utmaningar som du kan slutföra på egen hand med deras kodredigeringsverktyg. Webbplatsen passar bättre för en avancerad publik.

Besök här: https://www.topcoder.com/

Coderbyte

Coderbyte erbjuder mer än 200 olika typer av kodningsutmaningar som du kan lösa i en online-redigerare med 10 olika programmeringsspråk. Det tillhandahåller officiella lösningar och mer än 800 000 användarskapade lösningar.

Besök här: https://coderbyte.com/

Codewars

Codewars erbjuder en omfattande samling av kodningsutmaningar. Du kan skicka in dina utmaningar som kommer att redigeras av samhället. Det låter dig lösa dessa utmaningar online med deras redaktör för 20+ programmeringsspråk.

Besök här: https://www.codewars.com/

CodeChef

CodeChef erbjuder hundratals konkurrensutsatta programmeringsutmaningar. Det låter dig skriva kod i deras online-redigerare och se en samling utmaningar. Kodningsproblemen är indelade i olika kategorier baserat på din skicklighetsnivå.

Besök här: https://www.codechef.com/

Codeforces

Codeforces är en rysk baswebbplats för konkurrenskraftig programmering. Det är regelbundet värd för kodningstävling där konkurrenskraftiga programmerare från hela världen.

Besök här: https://codeforces.com/

Hackerearth:

HackerEarth erbjuder mjukvarulösningar för företag. Det hjälper företag eller enskilda med deras innovationshantering och tekniska rekryteringsbehov. HackerEarth har genomfört 10 000+ programmeringsutmaningar hittills.

Besök här: https://www.hackerearth.com/

Myter och verklighet av konkurrenskraftig programmering

Myter Verklighet
Det är för sent att starta konkurrenskraftig programmering Det finns ingen fast ålder för att detta bästa ska börja tidigare i din programmeringskarriär.
Det är ett utmärkt sätt att få ett programvaruprogrammeringsjobb Nej, det är inte sant eftersom det är en sport som kan gynna. Det erbjuder dock inte jobbgaranti.
Du måste lösa många datorprogram innan du startar konkurrenskraftig programmering. Du kan lära dig teori, men att lösa datorutmaningar hjälper inte eftersom varje tävling är unik med sina unika utmaningar.
Du måste en expert inom algoritm Du måste kunna lösa problemen
Konkurrenskraftiga programmerare är alla erfarna programmerare. Nej, det är för alla även nybörjarkod kan delta
Det är bara en hobby eller ett spel Konkurrerande programmering täcker däremot några av samma färdigheter som lärs ut i datavetenskapliga läroplaner, men på en mycket djupare nivå. Så du kan inte kalla det ett spel.

Bästa metoder för konkurrenskraftiga kodprov

Även om det inte finns någon fast regel är det fortfarande några bästa metoder som du bör följa:

  • Försök att lära dig nya och effektiva algoritmer och implementera dem vid behov.
  • Utveckla god kunskap om datastrukturer som listor, träd och grafer
  • Läs sekretessinformationen från den konkurrenskraftiga programmeringswebbplatsen och kontakta dem innan du registrerar dig.
  • Du bör välja ett problem som du kan hitta en lösning för och eventuellt en förklaring av dessa lösningar.
  • Skriv testfall för problemet och testa din logik med dessa testfall innan du skickar in.
  • Du måste behålla förskrivna mallar för standardalgoritmer, nödvändiga rubriker, funktioner etc.
  • Använd funktioner / metoder och minimera upprepning av kod.
  • Testa din kod för värsta fall och försök ta reda på den bästa lösningen för denna situation

Nackdelar med konkurrenskraftig programmering

  • Runtime-fel på problem med dåliga ingångar är svåra att felsöka.
  • Du är så van vid små belöningar och kortsiktiga mål. I verkliga livet när du arbetar med något projekt tar det mestadels två-tre månader innan du får belöningen för det projekt du arbetar med
  • Du kommer sannolikt att bli mästare i kodning, men du kommer inte att känna till några ramar (viktigt för riktiga projekt)
  • Det är tidskrävande och mer tråkigt att delta, och du måste göra det upprepade gånger.

Sammanfattning

  • Konkurrenskraftig programmering löser kodningsproblem med algoritm och datastruktur.
  • Kodningstävlingar hjälper dig att förbättra dina logiska och analytiska färdigheter.
  • ICPC har sitt ursprung på 1970-talet och har vuxit till att sträcka sig över 88 länder.
  • Algoritmfärdigheter, grundläggande matematiska färdigheter, programmeringsfärdigheter, typning av hastighetsfärdigheter krävs i tävlingsprogrammeringsproven.
  • Det är viktigt att du väljer ett programmeringsspråk som du är mest bekväm med
  • De viktigaste bästa kodningsutmaningssidorna är: 1) TopCoder 2) Coderbyte 3) Codewars 4) CodeChef 5) Codeforce 6) Hackerearth.
  • Det är en vanlig myt att det är för sent att starta konkurrenskraftig programmering. Verkligheten är dock att det inte finns någon fast ålder för det.
  • Att utveckla god kunskap om datastrukturer som listor, träd och grafer är en bra bästa praxis för konkurrenskraftiga kodprov.