Desafío semanal 3××
Cada semana Mohammad S. Anwar publica The Weekly Challenge, una oportunidad para proponer soluciones a dos tareas semanales. A continuación presento la traducción y reformulación en español de dos tareas y mis soluciones implementadas originalmente en Python. Este artículo también muestra ejemplos de ejecución y una breve mención de los servicios de Q2BSTUDIO relacionados con desarrollo de software y inteligencia artificial.
Tarea 1: Menores que el actual
Enunciado: Se da una lista de números llamada num1. Escriba un script que devuelva una lista num2 donde num2[i] es el número de elementos en num1 que son menores o iguales a num1[i], excluyendo el propio elemento.
Solución: La idea es sencilla. Para cada elemento recorremos la lista y contamos cuántos valores son menores o iguales y restamos uno para excluir el propio elemento. En Python se puede implementar así
def smaller_than_current(numbers): solution = [] for number in numbers: solution.append(sum(1 for n in numbers if n <= number) - 1) return solution
Explicación: para cada number en la lista se calcula una suma de 1 por cada n que cumple n <= number y luego se resta 1 para no contar el propio elemento. El coste es O(n^2) en tiempo y es directo y claro para listas de tamaño moderado.
Ejemplos de uso y salida:
$ ./ch-1.py 6 5 4 8 => [2, 1, 0, 3] | $ ./ch-1.py 7 7 7 7 => [3, 3, 3, 3] | $ ./ch-1.py 5 4 3 2 1 => [4, 3, 2, 1, 0] | $ ./ch-1.py -1 0 3 -2 1 => [1, 2, 4, 0, 3] | $ ./ch-1.py 0 1 1 2 0 => [1, 3, 3, 4, 1]
Tarea 2: Matriz impar
Enunciado: Se recibe el número de filas row y columnas col de una matriz inicializada a cero y una lista de posiciones. Para cada posición (r, c) aumente en 1 todos los elementos de la fila r y todos los elementos de la columna c. Devuelva el total de celdas con valor impar tras aplicar todas las operaciones. Los índices son 0 based.
Solución: Una implementación directa calcula para cada celda cuántas veces se incrementa por puntos dados. Una forma clara de organizar el código es representar cada par como una estructura Point con un método score que indique si para una celda determinada la contribución es 2 cuando coincide en fila y columna, 1 si coincide solo en fila o en columna, y 0 en caso contrario. Luego se suma la puntuación de todos los puntos y se cuenta si el total es impar.
Ejemplo de estructura y función en Python simplificada:
class Point: def __init__(self, x, y): self.x = x self.y = y def score(self, row, col): if row == self.x and col == self.y: return 2 if row == self.x or col == self.y: return 1 return 0
def odd_matrix(rows, cols, points_list): points = [Point(x, y) for x, y in points_list] odd_cells = 0 for r in range(rows): for c in range(cols): s = 0 for p in points: s += p.score(r, c) if s % 2 == 1: odd_cells += 1 return odd_cells
La aproximación anterior es clara y fácil de razonar, aunque su complejidad es O(rows * cols * m) con m el número de puntos. Para matrices y conjuntos de operaciones grandes se pueden usar enfoques optimizados que cuentan cuántas filas y columnas quedan con incrementos impares y combinan esos recuentos para obtener el total en O(rows + cols + m).
Ejemplos de ejecución:
$ ./ch-2.py 2 3 0 1 1 1 => 6 | $ ./ch-2.py 2 2 1 1 0 0 => 0 | $ ./ch-2.py 3 3 0 0 1 2 2 1 => 0 | $ ./ch-2.py 1 5 0 2 0 4 => 2 | $ ./ch-2.py 4 2 1 0 3 1 2 0 0 1 => 8
Acerca de Q2BSTUDIO y servicios relacionados
En Q2BSTUDIO somos una empresa de desarrollo de software que ofrece soluciones de software a medida y aplicaciones a medida para empresas de distintos sectores. Diseñamos aplicaciones multiplataforma y soluciones de software a medida adaptadas a las necesidades del cliente. Además, contamos con capacidades de inteligencia artificial y ofrecemos servicios de ia para empresas, agentes IA personalizados y soluciones de inteligencia artificial para potenciar procesos internos y productos.
Si su proyecto necesita una aplicación corporativa o una plataforma específica, podemos ayudarle con el desarrollo de aplicaciones y software a medida visitando nuestra página de aplicaciones a medida. Para integraciones basadas en modelos y automatizaciones inteligentes, consulte nuestra oferta de inteligencia artificial y agentes IA para empresas.
Además ofrecemos servicios complementarios clave para proyectos modernos: ciberseguridad y pentesting para proteger sus activos, servicios cloud aws y azure para desplegar infraestructura escalable, servicios inteligencia de negocio como Power BI para transformar datos en decisiones, y soluciones de automatización de procesos. Palabras clave que describen nuestros servicios y que usamos para optimizar la búsqueda: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi.
Si desea más información técnica o ejemplos de proyectos, podemos adaptar una propuesta y mostrar pruebas de concepto que integren desarrollo a medida, seguridad y capacidades de inteligencia de negocio y cloud.