La migliore risposta
Petr è il mio ex studente dello stesso anno presso il Dipartimento di Matematica dellUniversità statale di Mosca. Era un po come un allenatore personale per me dopo le sue due finali ACM ICPC quando la sua carriera ACM si è formalmente conclusa. Abbiamo anche lavorato insieme per 2 anni nellufficio di Google di Mosca e abbiamo affittato un appartamento insieme durante quei 2 anni, quindi lo conosco relativamente bene.
Sosterrei sicuramente il punto di vista degli Aditya “s rispondere sulla sua umiltà. Petr è molto modesto, e in realtà non gli piace tutta questa super popolarità con la pagina Facebook creata su di lui, ecc. È molto gentile e non si mette mai in mostra in alcun modo. Nessuno in la programmazione competitiva può passare senza queste conversazioni spazzatura come “(programmatore giallo) – Oh, sono uno stupido: ho dovuto inviare nuovamente i miei 250 punti. (programmatore rosso) – Oh, sono uno stupido: ho risolto il problema in 30 secondi dopo la fine della fase di codifica. (Petr) – Oh, sono “uno stupido: ho perso 2 sfide valide sul problema facile nella mia stanza” – questo viene detto dopo che lui le ha risolte tutte e tre e ha vinto un SRM o forse prendere il 2 ° posto. Questo potrebbe sembrare uno scherzo laterale, ma in realtà è solo unanalisi sincera degli errori di se stessi durante il round. È solo che gli errori sono attualmente a livelli molto diversi per quelle persone.
Posso sicuramente opporsi a Petr come vincitore di tutte le competizioni di programmazione immaginabili a molti rispettivi vincitori di tutte le competizioni matematiche immaginabili in quanto può essere una persona molto più socievole, è facile comunicare con e non è sicuramente una persona super nerd che ti aspetteresti dopo lincontro “strani matematici”, guardando alcuni film di Hollywood o semplicemente ricordando il tuo compagno di classe nerd. Non è ancora un portavoce o qualcosa del genere, ma è un ragazzo del tutto normale per uno sconosciuto.
Petr è molto bravo nei giochi da tavolo strategici. Ci piaceva giocare a Settlers of Catan e probabilmente abbiamo giocato diverse centinaia di volte, ed è stato il vincitore circa 2/3 delle volte, il che è impressionante dato un gioco a 3-4 giocatori e avversari piuttosto sofisticati. Giochiamo anche “scacchi svedesi” (in realtà “bughouse” in inglese, ma il bughouse ha regole leggermente diverse), “Carcasson”, “Ticket to Ride” e altri. È molto più fattibile battere Petr in uno di questi che batterlo in una gara di programmazione, ma è difficile.
Petr è uno dei programmatori competitivi con un pensiero matematico davvero forte. Ce ne sono diversi paradigmi nel mondo ACM, incluso “È stato accettato ==> lalgoritmo è corretto”, ma sembra che Petr non fornisca quasi mai alcuna soluzione senza avere una dimostrazione rigorosa anche quando una buona intuizione matematica è sufficiente e la dimostrazione è difficile. argomentare è una caratteristica necessaria per un concorrente di punta, poiché la cosa peggiore che potresti fare al concorso è implementare una soluzione sbagliata.
Petr è (ovviamente) molto bravo nella risoluzione dei problemi algoritmici. Mentre posso ( o almeno potrebbe) batterlo nei problemi specifici delle olimpiadi matematiche, ci sono solo alcune poche classi di problemi algoritmici che a volte potrei risolvere teoricamente più velocemente di lui, e nel caso generale è molto più veloce. Ha un super-sviluppato intuizione in zona: la stessa cosa che distingue è il vincitore delle olimpiadi matematiche, ma applicato a problemi algoritmici invece che ai soliti problemi matematici. Quindi, anche se sei molto bravo a programmare, scrivere codice privo di bug e debug, non appena i problemi saranno abbastanza difficili ti batterà comunque a causa della velocità nella risoluzione teorica dei problemi. A causa del suo forte background matematico, non lo è intimidito da problemi non standard, che sono rari nelle competizioni IMHO, ma i più complessi sono sempre fuori standard. A Petr piacciono i problemi che possono essere espressi in 1-2 frasi semplici ma sono molto difficili da risolvere di più.
Lunica cosa oltre alla risoluzione dei problemi molto rapida a livello di matematica che distingue davvero Petr dagli altri concorrenti è la profondità di comprensione del suo algoritmo e dei suoi programmi. È difficile da spiegare, ma è il motivo principale o non crea un bug o lo trova in ordine di grandezza più velocemente degli altri principali concorrenti. Non deve assolutamente eseguire il debug passo passo: o è ovvio per lui semplicemente leggendo il codice dove si trova il bug, oppure può creare un codice del debugger “Esegui su questa riga”, guarda i valori di diverse variabili predefinite a quel punto, inclusi array, insiemi e matrici, e trova il bug proprio in quel momento senza alcun ulteriore passo avanti. Qualsiasi debug più di questo sembra molto molto raro, e la chiave è che capisce quali invarianti devono contenere in qualsiasi momento nel programma e individua i disturbi, e poi in qualche modo sa molto rapidamente dove nel codice queste invarianti potrebbero essere violate.
Petr scrive sempre codice molto pulito e comprensibile. Non ha mai avuto la tendenza a scrivere codice più breve, ma sempre leggibile.A proposito, aiuta molto la scrittura di codice senza bug inizialmente e il debug ultraveloce nella programmazione competitiva, che non è una strategia così ovvia come per la programmazione industriale.
Ovviamente, è molto bravo alla concentrazione, molto attento e bravissimo ad enumerare rigorosamente tutti i casi possibili nei problemi dove è necessario.
Una cosa che potrebbe sorprendervi è che non ha mai dedicato troppo tempo alla formazione in programmazione competitiva. Voglio dire, ovviamente un ragazzo che ha iniziato a frequentare le olimpiadi All-Russian in informatica e i campi di addestramento a partire dal 6 ° grado rispetto al solito 9 ° grado si è allenato molto. Ma dice sempre che preferiva avere sempre e dedicare tempo a giocare a calcio con i suoi amici ecc. Non so degli anni scolastici, ma in realtà non si è allenato se non partecipando a concorsi reali durante i suoi anni di ACM alluniversità . Io ed Egor (@ http://www.quora.com/TopCoder/Who-is-Egor-Kulikov/) eravamo sempre in laboratorio cercando di trovare qualche nuovo concorso su Internet e partecipare, mentre lui veniva a volte e ci prendeva in giro un po su questo: ) Poi TopCoder “è apparso”, e dopo un po di riluttanza a partecipare (“Perché dovrei? Tomek mi batterà comunque :)”) ha trovato la fonte regolare di concorsi che raramente salta fino a questi giorni. Non mi sorprende nemmeno più quando Petr vince un SRM o un altro round personale mentre aspetta limbarco in aeroporto e ha circa 40 minuti invece di 75 per completare la codifica. Ma a parte quelle gare ufficiali che sono molte al giorno doggi ma erano piuttosto scarse 8-10 anni fa, non lo vedevo allenarsi.
Una delle altre peculiarità è lonestà particolare spinta al limite. fondamentalmente percepisco Petr come un programma per computer invece che un semplice mortale in termini di parole e azioni 🙂 Se dice qualcosa, manterrà la sua parola e, come, obbedisce sempre alle regole esistenti dalle leggi e dalle regole di concorrenza allincrocio il semaforo. Si potrebbe dire che questo è ciò che tutti dovrebbero fare, ma raramente si può trovare una persona che lo faccia davvero. E questo è spesso un modello che uso per me stesso in contrasto con la mentalità diffusa delle “leggi morbide” intorno a me. Anche se non sempre 🙂 Puoi anche aspettarti una certa influenza su te stesso per questo: ti parlerà sempre in inglese se ci sono persone che non capiscono il russo in giro, e tu dovrai sempre allacciarti la cintura di sicurezza la macchina 🙂 Anche se sei sul sedile posteriore 🙂 (che è una regola che tutti dovrebbero seguire, ma sfortunatamente non è il caso nel mondo reale).
Petr ha anche frequentato la maggior parte dei corsi universitari, il che non è affatto un luogo comune alla MSU. Entrambi ci siamo diplomati con un GPA 5.0 completo, che è unoccasione rara. Non so la sua ragione, la mia era tipo “perché non prendi un 5 (un A) se” è facile “. Probabilmente non saresti sorpreso che sia stato facile studiare per Petr, ma include anche alcune discipline umanistiche e sportive e dice ancora qualcosa di importante sulla persona.
Petr ha spesso unopinione controversa su qualche argomento. Ciò che mi colpisce non è solo questo fatto, è che spesso ha questa opinione opposta su un argomento che tu consideravi così ovvio e risolto per sempre per tutti, e non è solo unopinione, ma unargomentazione molto forte per questo 🙂 Letteralmente ti fa almeno riconsiderare il tuo atteggiamento verso alcune cose comuni a cui non penseresti nemmeno.
Sembra anche che abbiamo qualcosa in comune nel nostro atteggiamento nei confronti della scienza. Entrambi non abbiamo ancora ottenuto un dottorato di ricerca, per lo più perché si è scoperto che il lavoro su problemi pratici complessi presso Google e Yandex (per me) ci ha attratto molto più dei problemi matematici irrisolti che abbiamo provato e agli studi scientifici è stata data una bassa priorità. Gli amici stanno “saltellando” chiedendo perché non “Facciamo il nostro dottorato di ricerca, ma per me e presumo per Petr il certificato stesso non vale nulla se non risolvo qualcosa di veramente importante. Sono ancora alla ricerca del “mio” argomento, non sono sicuro di Petr, ma credo che probabilmente troveremo entrambi degli argomenti interessanti pubblicabili accidentalmente in futuro.
Risposta h2 >
Una sera, mentre mi allenavo a biliardo a Google, un ragazzo mi ha chiesto se poteva unirsi a me. Abbiamo giocato 3-4 partite e lui ha giocato in modo impeccabile, battendomi ogni singola volta con un grande margine. Avevo iniziato a giocare solo recentemente, e quindi non mi sono sentito molto male per queste sconfitte schiaccianti. Per tutto il tempo non ha parlato molto e quando gli è stato chiesto, si è presentato come Petr e ha detto che era in visita dallufficio di Mosca.
Dopo di che ci siamo incontrati alcune volte per i giochi e una durante la cena. Non ha mai parlato di programmazione o algoritmi. Era proprio come qualsiasi altro googler che avevo incontrato, tranne per il fatto che parlava raramente e quando lo faceva, non si trattava dei problemi difficili che stava risolvendo al lavoro.
Pochi giorni dopo, mi sono imbattuto in questo articolo http://www.technologyreview.com/news/428610/in-the-olympics-of-algorithms-a-russian-keeps/ e sono rimasto sbalordito nel sapere chi fosse questo “Petr”! Sono stato totalmente sopraffatto dalla sua umiltà.E improvvisamente, non mi sono sentito così male a perdere in piscina, sapendo che ci sono altre cose in cui lui può battermi con un margine ancora maggiore :).