JavaRush /Blog Java /Random-ES /Aptitud cerebral. Tareas actuales para mejorar las habili...

Aptitud cerebral. Tareas actuales para mejorar las habilidades de programación.

Publicado en el grupo Random-ES
Como sabemos, los programadores tienen que pensar, analizar y, a veces, encontrar soluciones no obvias a diversos problemas, grandes y pequeños, periódicamente. Para hacer esto, los codificadores se ven obligados a usar activamente su cerebro, que ya es un juguete extremadamente "caro": el cerebro humano, que tiene una masa de no más del 1,5-2% del peso corporal, consume alrededor del 25% de toda la energía. Y esto es para la persona promedio, y da miedo imaginar qué porcentaje de energía "consume" el cerebro de un programador que trabaja activamente en un proyecto complejo (y los científicos, probablemente británicos, aún no han establecido el indicador exacto). Aptitud cerebral.  Tareas actuales para mejorar las habilidades de programación - 1¿Qué conclusión se puede sacar de todo esto? Para convertirse en un buen programador y seguir siéndolo, es necesario estimular su cerebro, enseñándole a pensar y encontrar soluciones sin estrés excesivo y de forma regular. Trillado, como todos los métodos realmente efectivos, pero efectivo. Para ayudarte a mantener en buena forma la materia gris de tu cráneo, hoy hemos preparado una selección de buenos recursos con acertijos y acertijos para programadores, y también tradujimos varios problemas interesantes del inglés.

Sitios web con tareas para programadores.

Casi todos los recursos de la colección están en inglés, por lo que tendrás la oportunidad no solo de practicar la resolución de problemas y acertijos de codificación, sino también de practicar más el uso del inglés en la programación. Aptitud cerebral.  Tareas actuales para mejorar las habilidades de programación - 2
  1. codificador

    Uno de los recursos en inglés más populares con tareas para programadores. En él puede encontrar más de 200 tareas de distintos niveles de complejidad, que se pueden resolver directamente en el sitio en línea utilizando uno de los 10 lenguajes de programación disponibles (incluido Java).

  2. Praxis de programación

    Programming Praxis es un blog popular que publica periódicamente varias tareas interesantes y, lo más importante, relevantes para los programadores. Común para una variedad de lenguajes de programación. Los desafíos están diseñados para ayudar a los programadores a ponerse al día con los últimos cambios en tecnología y enfoques de programación en la práctica.

  3. Codificador superior

    TopCoder es una comunidad activa de programadores a quienes les encanta desarrollar y resolver diversos problemas. Regularmente se publican nuevas tareas, cuya solución exitosa no solo le brindará la oportunidad de practicar y aumentar sus recursos humanos, sino también recibir premios en efectivo.

  4. CódigoKata

    CodeKata es un blog con una gran cantidad de problemas bastante originales e ingeniosos para programadores, inventado por Dave Thomas, uno de los autores del famoso libro Pragmatic Programmer (“The Pragmatic Programmer. The Path from Apprentice to Master”). Los problemas en el sitio web de CodeKata son diversos y las soluciones son relevantes para el trabajo de programación real.

  5. Juez de la Universidad de Pekín en línea para ACIP/ICPC

    Peking University JudgeOnline para ACIP/ICPC es una página de la Universidad de Pekín que contiene tareas para programadores de diversos concursos y concursos. El sitio se actualiza periódicamente, los problemas se pueden resolver en tiempo real y las soluciones son evaluadas por una comisión de expertos de la Universidad de Pekín.

  6. Proyecto Euler

    Otro sitio antiguo y conocido con tareas serias y no triviales. “El Proyecto Euler es una colección de problemas matemáticos y de programación complejos que requieren algo más que conocimientos de matemáticas para resolverlos. Los problemas varían en complejidad y el enfoque se basa en el aprendizaje inductivo en cadena. Es decir, habiendo resuelto un problema, descubrirás un nuevo concepto que te permitirá resolver otros problemas que antes eran inaccesibles a la comprensión”, afirman los creadores del recurso.

  7. El WTF diario

    Daily WTF es otra comunidad de programación popular que opera según el principio Bring Your Own Code (BYOC), lo que significa que los desarrolladores comparten su propio código fuente para resolver varios problemas originales. "El propósito de BYOC es simple: brindarle a usted, como desarrollador de software, la oportunidad de mejorar sus habilidades de programación resolviendo un problema que es un poco más interesante que las cosas aburridas habituales", dice el sitio.

  8. Proger

    Un excelente sitio en ruso con tareas algorítmicas que se utilizan para poner a prueba las habilidades de especialistas durante entrevistas técnicas en empresas como Google, Facebook y otras. Se presentan muchos problemas, incluidos los originales, de distintos niveles de dificultad.

  9. Concursos de programación de Al Zimmermann

    Un conocido sitio de autores donde "programadores locos compiten por fama y fantásticos premios". Los concursos se llevan a cabo una o dos veces al año y los nombres de los programadores distinguidos se publican en la página principal del recurso, lo que sin duda atrae el interés de empleadores prometedores.

  10. Juez en línea Timus

    Uno de los archivos de problemas de programación en ruso más grandes con un sistema de verificación automática. La principal fuente de tareas del archivo son las competiciones en la Universidad Federal de los Urales, los campeonatos de los Urales y otros eventos de programación regional. Timus Online Judge también le permite participar en versiones en línea de la mayoría de los concursos que se celebran periódicamente en la Universidad Federal de los Urales.

5 tareas interesantes

Aquí hay algunos acertijos interesantes para aquellos que no pueden esperar para comenzar. Aptitud cerebral.  Tareas actuales para mejorar las habilidades de programación - 3
  1. Acertijo de Blender de Steve Jobs

    Desafío: Te reducen al tamaño de una moneda de cinco centavos y te arrojan a una licuadora. Su peso ha disminuido para que su densidad corporal siga siendo la misma. Las aspas comenzarán a girar después de 60 segundos. ¿Tus acciones?

    Esta es una tarea clásica que suele asociarse con Steve Jobs, el fundador de Apple. Cuando Jobs regresó a Apple en 1997, entrevistó personalmente a todos los empleados de la empresa y utilizó esta tarea como una de sus primeras pruebas.

    Solución:

    У данной задачи больше одного решения, так Cómo она служит для того, чтобы оценить креативность сотрудника, умение быстро находить выход из стрессовой ситуации и неординарно мыслить. Вот наиболее классический вариант решения: лечь Cómo можно плотнее к днищу блендера, чтобы его лезвия крутoсь над вами.

  2. Сколько людей было на конференции?

    Задача: На конференции каждый гость пожал руку всем остальным. Было 66 рукопожатий. Сколько человек было на научной конференции?

    Другая классическая программистская задача из тех, которые часто дают на первых этапах технических собеседований.

    Классическое решение:

    Допустим, на конференции было n человек. Первый человек пожимает руку всем остальным: n-1 раз (n-1 человек). Второй человек пожимает руку всем остальным (но не первому, так Cómo это уже было сделано): n-2 раза. 3-й человек пожимает руку всем остальным: n-3.

    Таким образом, общее количество рукопожатий будет = (n-1) + (n-2) + (n-3) + …… 0;
    = (n-1) * (n-1 + 1) / 2 = (n-1) * n / 2 = 66
    = n ^ 2 -n = 132
    = (n-12) (n + 11) = 0;
    = n = 12 ИЛИ n = -11

    Вариант -11 исключен, поэтому ответ: 12 человек.

  3. Бар и 25 стульев.

    Еще одна классическая и весьма остроумная задачка, на этот раз посложнее.

    Задача: Есть бар с 25-ю стульями, которые расположены в линию. Посетители этого бара — антисоциальные личности, поэтому, когда они заходят в бар, то всегда стараются найти место Cómo можно дальше от остальных. Если постоянный посетитель заходит в бар и обнаруживает, что свободного места без соседства с кем-либо нет, он разворачивается и уходит. Владелец бара, естественно, хочет видеть можно больше посетителей. Владелец может указать место, на которое нужно сесть, только первому клиенту, тогда Cómo все остальные сами выберут себе самое дальнее место от других. Предположим, что места пронумерованы от 1 до 25. Какое место должно быть занято первым?

    Решение:

    Первый человек должен сесть на стул 9 o 17 (из-за симметрии, не имеет значения, Cómoое именно из двух мест). Предположим, он выбирает место 9. Следующий человек выберет место 25, так Cómo оно самое дальнее от места 9. Следующие два человека займут места 1 и 17. Следующие три займут 5, 13 и 21. Следующие шесть будут занимать стулья 3, 7, 11, 15, 19 и 23. Таким образом, в баре разместится максимум 13 человек, и никто не будет сидеть рядом с другим человеком. Если место, отличное от 9 o 17, будет выбрано первым, общее количество посетителей бара будет меньше 13.

  4. Деньги в карманах и религия.

    Интересно составленная задача на нахождение алгоритма.

    Problema: un hombre tiene dinero en el bolsillo, cuya cantidad total oscila entre 90 y 95 dólares. En el camino visita varios templos. Tan pronto como entra a un templo, su dinero se duplica y termina donando $100 a cada templo. Como resultado, su bolsillo queda vacío después de visitar el último templo. Ahora la pregunta es: ¿cuánto dinero tenía inicialmente y cuántos templos visitó?

    Solución:

    Empezamos a contar desde el último templo:

    Después de visitar el último templo (1) le quedaba 0 dinero, entonces => ​​(0 + 100) / 2 = 50. Le quedaban 50 dólares antes de visitar el último templo

    Antes de visitar el templo anterior (2), tenía (50 + 100) / 2 = 75.
    Antes de visitar el templo anterior (3), tenía (75 + 100) / 2 = 87,5.
    Antes de visitar el templo anterior (4), tenía (87,5 + 100)/2 = 93,75.
    Antes de visitar el templo anterior (5), tiene (93,75 + 100) / 2 = 96,875 - la cantidad excede las condiciones iniciales.
    Respuesta: La persona originalmente tenía $93,75 y visitó 4 templos.

  5. Un incidente en el campo.

    Y finalmente, otro viejo clásico, incluso se podría decir, un problema de pensamiento lógico parecido a un acordeón.

    Problema: Se encontró un hombre muerto en un campo de trigo. Sostuvo la cerilla con fuerza en sus manos. ¿Por qué murió la persona?

    Solución:

    El hombre viajaba en un avión con tres compañeros de viaje. El motor se paró y el avión empezó a caer. Los hombres descubrieron que sólo había tres paracaídas para cuatro de ellos y comenzaron a tirar cerillas. Uno de ellos sacó uno corto y se vio obligado a saltar sin paracaídas.

Epílogo

Bueno, para aquellos que encuentran estos problemas demasiado simples o demasiado generales, tenemos problemas de Java más complejos , incluidos problemas complicados que a menudo se plantean durante las entrevistas para programadores de Java. Si conoces acertijos interesantes para programadores o quieres compartir tu tarea favorita, escribe en los comentarios.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION