Skip to content

Creează o provocare de cod

Ajutor pentru creatori

  • Ghiduri și iar ghiduri! Poți citi ghidurile disponibile pe platformă, fiecare secțiune a ghidurilor te poate ajuta să înțelegi mai bine regulile și ce trebuie să faci pentru a crea o provocare de succes.

  • Adu popcornul! Un tutorial video care arată pas cu pas cum se creează o provocare este în curs de înregistrare și va fi integrat aici; până atunci, pagina de tutoriale video listează ceea ce este deja disponibil. Urmărind tutorialul și citind toată documentația, nu ar trebui să mai ai probleme în crearea unei provocări.

INFO

Ar trebui să știi că crearea unei provocări nu este o sarcină ușoară și există unele diferențe între rezolvarea unei provocări și crearea uneia. Te rugăm să iei în considerare faptul că crearea unei provocări este o muncă ce necesită rigoare și seriozitate pentru ca utilizatorii DojoCode să fie mulțumiți și să îți ofere feedback pozitiv.

Cerințe

Doar utilizatorii care au atins nivelul Ambitious DOJO pot crea o nouă provocare.

Cum să creezi o provocare pas cu pas

  1. Mai întâi vei avea pe pagina My Challenges secțiunea NEW DRAFT

  2. După apăsarea butonului NEW DRAFT, va apărea un popup unde trebuie să definești Name, Slug și șablonul ales. (Fig. 1)

Fig. 1

  1. Selectează șablonul pe care îl dorești pentru provocarea de codare. În acest exemplu, vom selecta șablonul Python.

  2. Odată ce ai terminat acești pași, apasă pe Create draft și vei fi redirecționat către pagina de editare a provocării.

  3. Pe pagina de editare, vei găsi 3 secțiuni: Challenge info (Fig. 2), Files (Fig. 3) și Dependencies (Fig. 4).

Fig. 2

Fig. 3

Fig. 4

Urmează acești pași simpli pentru a-ți crea provocarea DojoCode:

Prima filă, Challenge Info (Fig. 6).

Aici poți scrie descrierea pentru provocare. Ai 3 categorii în această filă:

Title este primul lucru pe care trebuie să îl completezi pe pagina Challenge Info Page. Încearcă să faci titlul ales interesant și scurt. Nu ne dorim un titlu plictisitor și lung, ideea este să captezi atenția publicului.

O altă parte importantă pe care trebuie să o completezi în Challenge Info este descrierea propriu-zisă. Scrierea descrierii este un proces foarte important. Aici ai la dispoziție diferite funcții care te pot ajuta să creezi cel mai clar și de cea mai înaltă calitate conținut. Printre funcții se numără alegerea tipului de scriere, alegerea titlurilor și diferite stiluri de scriere, cum ar fi bold, italic sau underline, dar poți adăuga și imagini sau linkuri.

Poți introduce videoclipuri în descrierea provocării pentru a avea o descriere mai explicită sau mai detaliată. Poți integra videoclipul de pe YouTube sau Vimeo, adăugând linkul în zona specifică. (Fig. 5)

Fig. 5

Când îți configurezi provocarea, nu ești limitat la șablonul de cod implicit. Așa cum se vede în Fig. 6, în secțiunea Translations, îți poți traduce provocarea de cod în mai multe șabloane apăsând butonul „+” pentru a adăuga o altă limbă de programare.

Template Validation: Toate traducerile de șabloane sunt validate automat înainte de a putea publica, asigurând calitatea.

Poți crea oricâte variații de șabloane dorești, pentru a le permite cursanților să rezolve provocarea în diferite limbi de programare.

Fiecare șablon nou va copia automat detaliile de bază din variația inițială a șablonului, facilitând menținerea consistenței.

Dacă dorești să oferi detalii sau instrucțiuni suplimentare pentru o anumită variație de șablon, le poți include pur și simplu în descrierea provocării.

De asemenea, poți selecta sau crea etichete (tags) pentru provocarea ta de cod. Poți pur și simplu să tastezi ceva în câmpul de introducere Tags și să selectezi o etichetă dacă există, sau poți pur și simplu să apeși Enter și se va crea una pe baza a ceea ce ai tastat.

Fig. 6

Pentru provocările de cod NodeJS poți, de asemenea, să activezi previzualizarea în browser. Un exemplu bun ar fi o aplicație Express unde ne propunem să creăm un server cu rute către care putem trimite cereri. Odată ce faci clic pe această opțiune, previzualizarea în browser se va deschide în partea dreaptă, permițându-ne să vedem modificările din provocarea noastră de backend (vezi Fig. 7).

Fig. 7

În fila Files, ar trebui să încarci fișierele de testare sau alte fișiere preîncărcate care sunt necesare pentru provocare. Pe baza șablonului pe care îl alegi, vom genera un cod de pornire (boilerplate) pentru tine, oferind câteva fișiere de start pentru modificare. De asemenea, poți importa sau exporta fișiere pentru provocarea de cod făcând clic pe pictograma din dreapta din secțiunea „Files” și selectând o opțiune (Fig. 8).

O soluție rapidă și ușoară este următoarea: dacă dorești să lucrezi într-un IDE, poți exporta fișierele inițiale, le poți dezarhiva pe computerul tău și poți deschide folderul folosind IDE-ul tău preferat. Când ai terminat lucrul, importă pur și simplu un nou fișier zip care conține fișierele provocării tale de cod.

Crearea de provocări asistată de AI

De asemenea, poți crea și gestiona provocări direct din IDE-uri bazate pe AI, cum ar fi Claude Code, Cursor sau VS Code, folosind integrarea MCP DojoCode. Răsfoiește provocările, scrie cod, rulează teste și publică — totul fără a părăsi editorul. Află mai multe despre integrarea IDE.

Fig. 8

În Initial Tests și în All Tests trebuie să încarci testele care verifică soluțiile utilizatorilor pentru provocare.

În secțiunea Preloaded Files, adaugă baza inițială de cod oferită utilizatorului. Aceste fișiere servesc ca punct de pornire pentru provocare, conținând orice boilerplate necesar sau structură de cod pe care utilizatorul trebuie să o dezvolte pentru a-și finaliza soluția (Fig. 8).

  • Hidden File: Acest fișier nu va fi vizibil atunci când provocarea se încarcă pe pagina View Page, dar utilizatorii pot comuta vizibilitatea fișierelor ascunse.
  • Read-Only File: Acest fișier nu poate fi editat de utilizatorii care încearcă să îți rezolve provocarea de cod.
  • Redacted File: Acest fișier nu va fi trimis pentru validare atunci când soluția este trimisă.
  • Initially Opened File: Acest fișier va fi primul deschis atunci când un utilizator încearcă să îți rezolve provocarea de cod. Un singur fișier poate avea această proprietate.
  • Main File: Acesta este punctul principal de intrare pentru provocarea ta. Este fișierul care va fi executat atunci când se face clic pe butonul „Run”. Doar un singur fișier poate fi desemnat ca Main File.

Fig. 9

Ultima categorie din fila Files este Author Solution Files. Aici încarci soluția finală pentru provocare. Această parte va fi disponibilă pentru utilizatori doar după ce aceștia deblochează versiunea Solution a provocării.

Main File Info

Fișierul Main File este crucial pentru executarea provocării. În timp ce Initially Opened File determină vizualizarea de pornire a utilizatorului în editor, Main File definește ce fișier ar trebui să execute runner-ul platformei. De exemplu, într-o provocare Java, acesta ar fi fișierul care conține metoda public static void main.

Ultimul tab, Dependencies, este locul în care selectezi dependențele necesare pentru ca provocarea ta să poată fi rezolvată. Acesta este un detaliu important, deoarece ar putea exista biblioteci de cod sau framework-uri pe care dorești să le folosești în proiect.

Fig. 10

Să știi ce vrei! La început, este bine să știi exact ce vrei de la provocarea ta. Pentru a crea descrierea și cerința exacte și pentru a te face înțeles, este bine să conturezi exact ceea ce îți propui să obții prin această provocare.

Cunoaște-ți competiția! Încearcă ca provocarea ta să nu fie similară cu altele de pe platformă. Cu cât este mai originală, cu atât mai bine.

Se recomandă ca, pentru fiecare provocare încărcată, creatorii să citească ghidul și toate subcapitolele acestuia.

Resurse corelate

Înainte de a-ți crea provocarea:

După publicare:

Odată ce ești mulțumit de provocarea ta și nu mai dorești să faci modificări suplimentare, o poți publica. Inițial, provocarea ta nu va avea un nivel de dificultate stabilit, acesta fiind dobândit pe parcurs. Cu toate acestea, poți seta o dificultate implicită (Fig. 11). Această dificultate va fi utilă pentru calcularea ratingului unui utilizator de concurs pentru provocările care nu au fost încă evaluate de comunitate. Citește mai departe pentru a afla cum va primi provocarea ta un nivel de dificultate.

Fig. 11

Important

Atunci când creezi o nouă provocare de cod, este esențial să te asiguri că soluția îndeplinește criteriile așteptate și trece toate testele relevante. Acest document descrie cum să configurezi, să depanezi și să rulezi eficient testele.

  • Implementează soluția: Scrie soluția inițială pentru provocare, asigurându-te că respectă cele mai bune practici de codare.

Configurarea testării

  • Teste inițiale: Aceste teste verifică dacă soluția autorului îndeplinește cerințele de bază.
  • Toate testele: Teste detaliate care acoperă toate cazurile limită și scenariile.
  • Rularea testelor
  • Prezentare generală a butoanelor

Când te afli în interfața provocării, vei găsi două butoane principale pentru testare:

  • Test: Execută testele inițiale pe soluția autorului.
  • Test All: Execută toate testele, inclusiv testele detaliate.

Fluxul de lucru pentru testare

  • Preview: Folosește funcția de previzualizare pentru a vedea cum le apare provocarea utilizatorilor. Aceasta îți permite, de asemenea, să validezi formatarea și prezentarea enunțului problemei.

  • Run Code: Fă clic pe butonul Run pentru a executa codul în mediul respectiv. Acest lucru este util pentru depanarea logicii tale și pentru vizualizarea logurilor în consolă în timp real în zona de afișare a rezultatelor.

  • Run Initial Tests: Fă clic pe butonul Test pentru a executa testele inițiale. Acest lucru asigură că soluția ta funcționează conform așteptărilor la un nivel de bază.

  • Test All: Odată ce ești mulțumit de testele inițiale, fă clic pe butonul Test All. Acesta va rula toate testele, inclusiv cele detaliate și ascunse, oferind o evaluare completă a soluției provocării tale înainte de publicare.

  • Depanare:

Dacă vreun test eșuează, analizează mesajele de eroare furnizate. Acestea indică de obicei care test a eșuat și de ce. Folosește instrucțiuni de afișare sau logging pentru a reda valori intermediare în codul tău, astfel încât să poți depista unde apar problemele. Rulează din nou testele după ce ai făcut ajustări în cod pentru a te asigura că problemele au fost rezolvate.

După publicarea unei provocări de cod

După publicarea unei provocări de cod, nu o mai poți edita. Provocarea ta de cod va fi trimisă spre revizuire (procesul BETA), unde utilizatorii vor vota dificultatea provocării.

Cum își primește o provocare ratingul de dificultate?

Primii 3 utilizatori care finalizează și termină provocarea și care doresc să voteze dificultatea acesteia, vor putea acorda un scor de dificultate. Acest scor începe de la 1 și merge până la 3:

  • 1 reprezintă începător
  • 2 este intermediar
  • Cea mai mare valoare din sistemul de notare este 3, care reprezintă expert.

Dificultatea va fi reprezentată de media voturilor primilor 3 utilizatori care aleg să voteze provocarea.

Nu este obligatoriu ca un utilizator să voteze dificultatea provocării, dar dacă rezolvi o provocare fără dificultate setată, vei primi punctele pentru rezolvarea acelei provocări abia după ce dificultatea acesteia a fost stabilită.

Primii 3 utilizatori care aleg să voteze dificultatea vor primi, pe lângă scorul de dificultate al provocării stabilit ulterior, un bonus de 40 de puncte pentru că au ales să voteze dificultatea. Bonusul constă în 20 de puncte pentru că au rezolvat o provocare fără dificultate setată și 20 de puncte pentru că au ales să îi acorde o evaluare a dificultății.

Dacă un utilizator rezolvă o provocare care nu are un nivel de dificultate stabilit, dar alege să nu îi voteze dificultatea, acesta va primi un bonus de 20 de puncte.

După ce dificultatea a fost stabilită, utilizatorii care au rezolvat provocarea anterior vor primi scorul în funcție de dificultatea acesteia.

După ce o provocare a primit primele 3 voturi, iar perioada de votare s-a încheiat, aceasta primește nivelul de dificultate și trece în starea „approved”.

Curatorul provocării va fi de asemenea recompensat cu puncte XP și Tokenuri DojoCode după ce provocarea a primit starea „approved” și dificultatea stabilită. Consultă tabelul următor pentru mai multe informații.

DificultatePuncte XPTokenuri DojoCode
Începător5050
Intermediar200100
Expert500200