Linguaggi da usare?

Ciao ragazzi,

mi chiedevo quali sono i linguaggi di programmazione disponibile durante il concorso UFFICIALE delle selezioni regionale, sono molto familiare con Python, ma non so se posso usarlo. Sono ristretto al solo uso di C/C++ o posso usare anche Python/Rust?

Grazie in anticipo.

Più che una questione di “poterlo usare” il discorso è quanto sia sensato usarlo, poichè se pur python è sintatticamente meno complesso di c++ rimane più lento, MOLTO più lento, in un contesto come le territoriali dove l’output devi darlo tu python potrebbe porti in svantaggio ( dato che una soluzione quadratica in c++ è un conto, in python non ne parliamo ) ,oltre alle territoriali in generale python è meno permissivo per quanto concerne il controllo della memoria, ed ottimizzazioni di ogni genere , infine per tutorial sul competitive programming, manuali e spiegazioni generalmente gli algoritmi vengono scritti in c++, quindi per farla breve, se pur possibile sottomettere soluzioni in python io personalmente ti consiglio di iniziare ad imparare qualcosa di c++ poichè ti aprirà molte porte per quanto concerne il competitive programming. Buon Allenamento :smile:

Ok perfetto.

Su cio’ che hai detto pero’, non sono totalmente d’accordo, alla fine sono abbastanza sicuro che il tempo limite sia messo per far si che si possa superare con ogni linguaggio, quindi quale sarebbe la differenza quel punto?

Un buon codice Python riesce a fare un buonissimo runtime comunque.

In realtà, se si prendono le OIS ad esempio vi è sempre l’annuncio che dice "il punteggio massimo totalizzabile in python è X ", infatti questa comunicazione è diventata ormai un meme per la mia squadra , poi questo su una piattaforma che ha il tempo limite, in una piattaforma come le terry dove appunto non vi è un tempo limite se non l’attesa per l’output completo quale sarebbe lo svantaggio nell’usare un linguaggio più veloce in linea generale, per finire, se pur un codice python può fare bene non ti aspettare che potrai sempre caricare soluzioni fatte in buon codice, ( molte soluzioni, alle terry soprattutto, passano con time complexity decisamente poco ottimizzate ma perchè c++ essendo veloce gli concede comunque gli output in tempo utile ). Il discorso è quindi, se il tuo obbiettivo è fare le terry tanto per allora fai pure nel linguaggio che preferisci, non avrebbe senso impararne uno nuovo per poi lasciarlo lì, ma se hai intenzione di continuare che siano terry o competitive programming in generale, il mio consiglio rimane lo stesso :slight_smile:

Un programma implementato in python riesce a essere tranquillamente 10 volte piĂą lento del suo equivalente in C++.

Ciò detto, alle terry puoi usare qualunque linguaggio e, a patto di avere una soluzione con la complessità corretta, il fattore costante dovuto al linguaggio non è davvero un problema.
Sii però consapevole che appunto è molto probabile che soluzioni subottime implementate in linguaggi veloci (come C++) facciano più punti rispetto alle stesse implementate in linguaggi lenti (come python).

Per Rust il discorso è un po’ diverso, poiché è comparabile a C++ come velocità di esecuzione. Tuttavia mi sembra davvero scomodo dover assecondare la “pedanteria” di rustc in un contesto in cui è vitale scrivere codice in fretta.

In ogni caso C++ è lo standard per la programmazione competitiva, e la sua conoscenza è richiesta per alcune gare (in primis la prova nazionale delle olimpiadi) quindi impararlo è una necessità una volta passate le terry.

2 Mi Piace