Problema: A small frog wants to get to the other side of a river. The frog is currently located at position 0, and wants to get to position X. Leaves fall from a tree onto the surface of the river. You are given a non-empty zero-indexed array A consisting of N integers representing the falling leaves. A[K] represents the position where one leaf falls at time K, measured in seconds. The goal is to find the earliest time when the frog can jump to the other side of the river. The frog can cross only when leaves appear at every position across the river from 1 to X. You may assume that the speed of the current in the river[…]

Problema: A non-empty zero-indexed array A consisting of N integers is given. A permutation is a sequence containing each element from 1 to N once, and only once. For example, array A such that: A[0] = 4 A[1] = 1 A[2] = 3 A[3] = 2 is a permutation, but array A such that: A[0] = 4 A[1] = 1 A[2] = 3 is not a permutation, because value 2 is missing. The goal is to check whether array A is a permutation. Write a function: int solution(int A[], int N); that, given a zero-indexed array A, returns 1 if array A is a permutation and 0 if it is not. For example, given array A such that: A[0] =[…]

Problema: A non-empty zero-indexed array A consisting of N integers is given. Array A represents numbers on a tape. Any integer P, such that 0 < P < N, splits this tape into two non-empty parts: A[0], A[1], …, A[P − 1] and A[P], A[P + 1], …, A[N − 1]. The difference between the two parts is the value of: |(A[0] + A[1] + … + A[P − 1]) − (A[P] + A[P + 1] + … + A[N − 1])| In other words, it is the absolute difference between the sum of the first part and the sum of the second part. For example, consider array A such that: A[0] = 3 A[1] = 1 A[2] = 2[…]

Problema: A zero-indexed array A consisting of N different integers is given. The array contains integers in the range [1..(N + 1)], which means that exactly one element is missing. Your goal is to find that missing element. Write a function: def solution(A) that, given a zero-indexed array A, returns the value of the missing element. For example, given array A such that: A[0] = 2 A[1] = 3 A[2] = 1 A[3] = 5 the function should return 4, as it is the missing element. Assume that: N is an integer within the range [0..100,000]; the elements of A are all distinct; each element of array A is an integer within the range [1..(N + 1)]. Complexity: expected worst-case[…]

Problema: A small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to a position greater than or equal to Y. The small frog always jumps a fixed distance, D. Count the minimal number of jumps that the small frog must perform to reach its target. Write a function: def solution(X, Y, D) that, given three integers X, Y and D, returns the minimal number of jumps from position X to a position equal to or greater than Y. For example, given: X = 10 Y = 85 D = 30 the function should return 3, because the frog will be positioned as follows: after the[…]

En este problema usaremos uno de los operadores bitwise disponibles en Python (<<, >>, &, |, ~, ^). Que es un operador bitwise? Es simplemente un operador lógico que funciona nivel de bits, bit a bit. Cual vamos a usar? XOR Para darles un ejemplo claro de como funciona XOR, miremos primero su tabla de verdad: ———– A B Output ———– 0 0 0 0 1 1 1 0 1 1 1 0 Es 0 si el par de bits es igual y 1 si el par de bits es diferente. Entonces por ejemplo: 9 ^ 3 ^ 9 = 3 Pasemos los 3 valores a binario: 9 = 1001 3 = 0011 9 = 1001 Primero tomamos 9 y 3[…]

Actualmente en mi trabajo iniciamos proyectos nuevos cada mes o cada dos meses, algunos solo viven unos meses y mueren o algunos solo se usan por un par de personas o simplemente a medio proyecto se cancela todo, pero de una u otra manera regularmente estoy iniciando proyectos nuevos en Django. Si programas en Django sabrás que “startproject” te da una estructura de archivos básica y a partir de ahí puedes crear tus apps con “startapp” , pero muchas veces nosotros ya tenemos un estándar de como crear nuestros proyectos, o ya tenemos una estructura de archivos mas cómoda para trabajar o dependencias que siempre necesitamos instalar, entonces por que no iniciar nuestros proyectos de Django con todo eso desde el inicio.[…]

Para este problema en particular no cree un algoritmo, simplemente use collections, que es un modulo que implementa de tipos de datos como dict, list, set y tuple pero de una manera “especializada”, básicamente son mas rápidos y tienen métodos muy útiles, en python 2.7 estan namedtuple, deque, Counter, OrderedDict, defaultdict y en python 3.2 en adelante empezaron agregar mas. Cyclic Rotation Problema: A zero-indexed array A consisting of N integers is given. Rotation of the array means that each element is shifted right by one index, and the last element of the array is also moved to the first place. For example, the rotation of array A = [3, 8, 9, 7, 6] is [6, 3, 8, 9, 7]. The goal[…]

Hace poco leí una publicación ya vieja de coding horror que habla de la incapacidad de la “mayoría” de los programadores para programar, esto basado en que cuando los ponían a hacer un simple Fizz Buzz no podían hacerlo. Inmediatamente lo intente y no tarde mucho tiempo resolviéndolo pero me quedo la duda de si realmente podía resolver cosas mas complejas que un Fizz Buzz. Hace tiempo escuche sobre codility y lo tenia en favoritos pero nunca lo probé, y hace unas semanas en facebook me recomendaron que si quería entrar en toptal le diera una revisada a codility que es una plataforma online para “testear” las habilidades de los programadores y es usado por un gran numero de empresas de software, de hecho si[…]