Melhor resposta
Petr é meu ex-aluno do mesmo ano no Departamento de Matemática da Universidade Estadual de Moscou. Ele era um pouco como um treinador pessoal para mim depois de suas duas finais do ACM ICPC, quando sua carreira ACM terminou formalmente. Nós também trabalhamos juntos por 2 anos no escritório do Google em Moscou e alugamos um apartamento juntos durante esses 2 anos, então eu o conheço relativamente bem.
Eu definitivamente apoiaria o ponto de Aditya “s resposta sobre sua humildade. Petr é muito modesto, e ele realmente não gosta de toda essa super popularidade com a página do Facebook criada sobre ele, etc. Ele é muito educado e nunca se exibe de forma alguma. Ninguém no a programação competitiva pode passar sem essas conversas de conversa fiada como “(codificador amarelo) – Oh, eu” um tolo: eu tive que reenviar meus 250 pontos. (codificador vermelho) – Oh, sou um tolo: consertei meu disco em 30 segundos após o fim da fase de codificação. (Petr) – Oh, eu “um idiota: perdi 2 desafios válidos no problema fácil da minha sala” – isso foi dito depois de ele resolver todos os três e ganhar um SRM ou talvez ocupando o 2º lugar. Isso pode parecer uma zombaria, mas na verdade é apenas uma análise sincera dos próprios erros durante a rodada. É que os erros estão atualmente em níveis muito diferentes para essas pessoas.
Posso, com certeza oponha Petr como um vencedor de todas as competições de programação imagináveis a muitos respectivos vencedores de todas as competições de matemática imagináveis, pois ele pode ser uma pessoa muito mais social, é fácil de se comunicar e definitivamente não é uma pessoa supernerd que você esperaria depois de conhecer “estranhos matemáticos”, assistindo alguns filmes de Hollywood ou apenas lembrando do seu colega nerd. Ele ainda não é um porta-voz ou algo assim, mas é um cara completamente normal para um estranho.
Petr é muito bom em jogos de tabuleiro estratégicos. Gostávamos de jogar Settlers of Catan e provavelmente jogamos várias centenas de vezes, e ele foi o vencedor cerca de 2/3 das vezes, o que é impressionante considerando um jogo de 3-4 jogadores e adversários bastante sofisticados. Também jogamos “xadrez sueco” (na verdade “bughouse” em inglês, mas o bughouse tem regras ligeiramente diferentes), “Carcasson”, “Ticket to Ride” e outros. É muito mais viável derrotar Petr em uma dessas do que vencê-lo em uma competição de programação, mas é difícil.
Petr é um dos programadores competitivos com um pensamento matemático realmente forte. Existem diferentes paradigmas no mundo ACM, incluindo “Foi aceito ==> o algoritmo está correto”, mas parece que Petr quase nunca submete qualquer solução sem ter uma prova rigorosa, mesmo quando uma boa intuição matemática é suficiente e a prova é difícil. O que eu faria argumentar é um traço necessário para um competidor de topo, já que a pior coisa que você poderia fazer no concurso é implementar uma solução errada.
Petr é (obviamente) muito bom em resolução de problemas algorítmicos. Enquanto eu posso ( ou pelo menos poderia) vencê-lo nos problemas específicos das olimpíadas matemáticas, existem apenas algumas poucas classes de problemas algorítmicos que eu poderia às vezes resolver teoricamente mais rápido do que ele, e no caso geral ele é muito mais rápido. Ele tem um superdesenvolvido intuição na área: a mesma coisa que distingue ele é o vencedor das olimpíadas matemáticas, mas aplicado a problemas algorítmicos em vez de problemas matemáticos usuais. Portanto, mesmo que você seja muito bom em programar, escrever código sem bugs e depurar, assim que os problemas forem difíceis o suficiente ele ainda vai vencê-lo por causa da velocidade na resolução teórica de problemas. Devido à sua forte formação matemática, ele intimidado por problemas fora do padrão, que são raros nas competições IMHO, mas os mais complexos são sempre fora do padrão. Petr gosta dos problemas que podem ser expressos em 1-2 frases simples, mas são muito difíceis de resolver.
A única coisa além da resolução muito rápida de problemas no nível matemático que realmente distingue Petr de outros concorrentes é a profundidade de compreensão de seu algoritmo e seus programas. É difícil de explicar, mas é a razão principal ele não cria um bug ou o encontra em ordem de magnitude mais rápido do que outros concorrentes importantes. Ele realmente não precisa fazer a depuração passo a passo: ou é óbvio para ele apenas lendo o código onde está o bug, ou ele pode fazer um código de depurador “Executar para esta linha”, ver os valores de várias variáveis predefinidas nesse ponto, incluindo arrays, conjuntos e matrizes, e encontre o bug naquele momento, sem avançar mais. Qualquer depuração além disso parece muito, muito rara, e a chave é que ele entende quais invariantes devem conter a qualquer momento no programa e detecta os distúrbios, e então ele sabe muito rapidamente onde no código essas invariantes podem ser violadas.
Petr sempre escreve um código muito limpo e compreensível. Ele nunca tendeu a escrever código mais curto, mas sempre legível.A propósito, ajuda muito para escrever código livre de bugs inicialmente e depuração ultrarrápida na programação competitiva, o que não é uma estratégia tão óbvia quanto para a programação industrial.
Obviamente, ele é muito bom na concentração, muito atento e muito bom em enumerar rigorosamente todos os casos possíveis nos problemas onde se faz necessário.
Uma coisa que te pode surpreender é que nunca se dedicou muito ao treino de programação competitiva. Quero dizer, obviamente, um menino que começou a frequentar a olimpíada de toda a Rússia em informática e os campos de treinamento a partir da 6ª série ao invés da 9ª série normal recebeu muito treinamento. Mas ele sempre diz que preferiu sempre ter e se dedicar a jogar futebol com os amigos etc. Não sei sobre os anos escolares, mas na verdade ele treinou apenas participando de competições reais durante seus anos de ACM na universidade . Eu e Egor (@ http://www.quora.com/TopCoder/Who-is-Egor-Kulikov/) estávamos sempre no laboratório tentando encontrar algum novo concurso na internet e participar, enquanto ele vinha às vezes e zombava um pouco sobre isso: ) Então o TopCoder “apareceu”, e após alguma relutância em entrar (“Por que eu faria isso? Tomek vai me vencer de qualquer maneira :)”) ele encontrou a fonte regular de competições que raramente perde até hoje. Não me surpreende mais quando Petr ganha algum SRM ou outra rodada pessoal enquanto espera pelo embarque no aeroporto e tem cerca de 40 minutos em vez de 75 para completar a codificação. Mas, além dos concursos oficiais que são muitos hoje em dia, mas eram raros há 8 a 10 anos, eu não o via treinando.
Uma das outras peculiaridades é a honestidade em particular levada ao limite. Você pode basicamente percebe Petr como um programa de computador em vez de um mero mortal em termos de suas palavras e ações 🙂 Se ele disser algo, ele “manterá sua palavra, e ele, como, sempre obedece a quaisquer regras existentes, desde leis e regras de concorrência até cruzamentos os semáforos. Pode-se dizer que isso é o que todos deveriam fazer, mas raramente se pode encontrar uma pessoa que realmente o faça. E esse é frequentemente um modelo que uso para mim mesmo, em oposição à mentalidade generalizada de “leis brandas” ao meu redor. Embora nem sempre 🙂 Você também pode esperar alguma influência sobre você por causa disso: ele sempre falará com você em inglês se houver pessoas que não entendam russo por aí, e você sempre terá que colocar o cinto de segurança o carro 🙂 Mesmo se você estiver no banco traseiro 🙂 (que é uma regra que todos deveriam seguir, mas infelizmente não é o caso no mundo real).
Petr também frequentou a maioria dos cursos universitários, o que não é nada comum na MSU. Nós dois nos formamos com um GPA 5.0 completo, o que é uma ocasião rara. Eu não sei o motivo dele, o meu foi tipo “por que não tirar 5 (um A) se é fácil”. Você provavelmente não ficaria surpreso que foi fácil estudar para Petr, mas inclui algumas humanidades e esportes também e ainda diz algo importante sobre a pessoa.
Petr muitas vezes tem uma opinião controversa sobre algum assunto. O que me impressiona não é só esse fato, é que muitas vezes ele tem essa opinião oposta sobre um assunto que você considerava tão óbvio e resolveu para sempre para todos, e não é apenas uma opinião, mas uma argumentação muito forte a favor 🙂 É literalmente faz você pelo menos reconsiderar sua atitude em relação a algumas coisas comuns que você nunca pensaria.
Também parece que temos algo em comum em nossa atitude para com a ciência. Nós dois ainda não tínhamos um doutorado, principalmente porque resultou que o trabalho em problemas práticos complexos no Google e Yandex (para mim) atraiu muito mais para nós do que problemas matemáticos não resolvidos que tentamos, e os estudos científicos receberam uma prioridade baixa. Amigos estão “pulando” perguntando por que não “Não fazemos nosso doutorado, mas para mim e eu presumo que para Petr o certificado em si não vale nada se eu não resolver algo realmente importante. Ainda estou pesquisando “meu” tópico, não tenho certeza sobre o Petr, mas acredito que provavelmente ambos encontraremos alguns tópicos interessantes para publicação acidentalmente no futuro.
Resposta h2 >
Certa noite, enquanto eu praticava sinuca no Google, um cara me perguntou se poderia se juntar a mim. Jogamos 3-4 partidas e ele jogou impecavelmente, me vencendo por uma grande margem em todas as vezes. Eu comecei a jogar apenas recentemente, e por isso não me senti muito mal com essas derrotas esmagadoras. Ele não falou muito o tempo todo e, quando questionado, se apresentou como Petr e mencionou que estava nos visitando do escritório de Moscou.
Depois disso, nos encontramos algumas vezes para jogos e uma vez durante o jantar. Ele nunca mencionou nada sobre programação ou algoritmos. Ele era como qualquer outro Googler que conheci, exceto que raramente falava e, quando falava, não era sobre os problemas difíceis que está resolvendo no trabalho.
Poucos dias depois, encontrei este artigo http://www.technologyreview.com/news/428610/in-the-olympics-of-algorithms-a-russian-keeps/ e fiquei surpreso ao saber quem era esse “Petr”! Fiquei totalmente impressionado com sua humildade.E de repente, eu não me sentia tão mal em perder na sinuca, sabendo que existem outras coisas em que ele pode me vencer por uma margem ainda maior :).