Implemente el algoritmo de búsqueda binaria como se usa para identificar la revisión del código fuente que rompe un programa de software de computadora. Su herramienta debe tomar dos argumentos que especifiquen la revisión numerada más temprana y más reciente para buscar (ambos enteros positivos), y tiene dos opciones para hacer comparaciones:
Ejecute el comando de shell
./test N
, donde N es el número de revisión. Si la prueba pasa ( es decir, la revisión es buena), devolverá el código de salida 0.Llame a la función
test(N)
, que volverátrue
si la prueba pasa, de lofalse
contrario.
La salida estándar debe ser el número de la primera revisión incorrecta e intente hacer que el código fuente de su herramienta sea lo más breve posible. ¡Disfrutar!
test(N)
opción de función principalmente para ser justos con aquellos lenguajes de programación sin una forma estándar de ejecutar comandos de shell, como JavaScript.Respuestas:
Ruby -
92 82 6260 caracteresLa iterativa es mucho más corta, pero no es tan fría como la cola recursiva.
El antiguo método recursivo de cola para referencia
Script de prueba
Utiliza un poco de magia para inyectar la
test
función y ejecuta un archivo que consiste únicamente en el código anterior.Salida:
fuente
Python, 64 caracteres
Este es recursivo, por lo que desbordará la pila para una entrada realmente grande
prueba de funcionamiento
salidas
fuente
Python - 77 caracteres
Abusar del módulo de bisección de python. L es el valor bajo, H es el valor alto
aquí hay una prueba de funcionamiento
salidas
Explicación:
Así es como se define la bisección. Básicamente espera una lista y decide si bisecar hacia arriba o hacia abajo en función del valor que encuentra al mirar
a[mid]
. Este llamadas__getitem__
ena
que en lugar de ser una lista, es una clase que he definido mi mismo.fuente
Python - 70 caracteres
prueba de funcionamiento
salidas
fuente