El desafío es detectar secuencias enteras faltantes de archivos o directorios. Tiene un directorio lleno de archivos / directorios que se nombran como enteros.
Los archivos / directorios se generan a partir de varios subprocesos, pero el trabajo no se completó; por lo tanto, hay espacios en la secuencia.
La entrada es dos enteros, un inicio y un final, y su tarea es detectar el entero inicial de las siguientes secuencias que faltan. Puede suponer que todos los archivos y directorios en el directorio donde se ejecutan solo tienen archivos o directorios con nombre entero.
Formularios de respuesta aceptables: funciones, fragmentos de código: deben ejecutarse en la línea de comandos.
Entrada de inicio / fin aceptable: incluida en la línea de comando, las variables env / argv están bien , los parámetros para las funciones, la entrada del usuario está bien .
El código más corto gana.
Actualización: aunque logré exprimir esta, hubo muchas respuestas interesantes. La idea en la respuesta Bash de apricotboy se usó en parte para ayudarme a diseñar mi respuesta Bash de 35 bytes. Mucha suerte en el próximo.
E.g. Presume files 1,2,3,4,7,8,9,10,18 are present, start is 1, end is 20:
The output should be:
5
11
19
Respuestas:
Python 2, 101 bytes
2 bytes gracias a @xnor.
fuente
import os
que deberías eliminar.if~-n!=t:
puede serif~t+n:
.Dyalog APL ,
2524 o 36 bytesSolicita límite inferior, luego límite superior.
De los comentarios a otras respuestas parece que el OP quería secuencias tan cortas como fuera posible.
{
⍵/⍨
aquellos en los que~
no es cierto⍵∊⍨
que el conjunto contenga⍵-1
su predecesor}
de(
(⍳⎕)
los enteros hasta n,~
excepto los⍳⎕-1
enteros hasta n -1,)~
excepto⍎¨
la evaluación de cada una de⎕SH'dir/b'
las listas de nombres en el directorio actualRespuesta anterior que devuelve secuencias de longitud 1:
(
⍕
representación¨
de cadena de cada uno(⍳⎕)
de los enteros hasta n,~
excepto los⍳⎕-1
enteros hasta n -1,)~
excepto⎕SH'dir/b'
la lista de archivos en el directorio actualSolo funciona en Windows. Una solución multiplataforma:
0
solo los nombres de archivo⎕NINFO
de los archivos nativos INFOrmation⍠1
usando comodines⊢'*'
en todos los archivosfuente
Ruby,
746045 bytesLa entrada está en la línea de comando, ejecútela como
ruby f.rb 0 20
. Solo funciona en el directorio actual.-1 byte de desempaquetar las
ARGV
variables en, y -13 bytes de reemplazar elselect
ygrep
con una resta establecida.V3: -5 bytes del uso de una sustitución
Dir.glob
en una respuesta anterior de Ruby a otro desafío de sistemas de archivos , como lo sugiere @PatrickOscity. -10 de recordar algunas peculiaridades en laString#next
función de Ruby .fuente
Perl 6, 47 bytes
Explicación:
Intenté usar chanclas. No logró: P.
fuente
}
.PHP, 64 bytes
Corre así:
Nota:
Solo lo hace el directorio actual.
No hay nueva línea final en la salida.
Esto requiere
<?=
que se permita en php.ini. Lo cual creo que es predeterminado pero no estoy seguro.Bash, 31 bytes
Corre como
a 1 20
. De nuevo, solo lo hace el directorio actual.¿Puedo enviar dos? Eso espero. Esta es mi primera publicación en Code Golf, así que no estoy muy seguro de la etiqueta. Espero que también cuente mis bytes correctamente.
fuente
Ahora veo que esta es una vieja pregunta, pero aún así, me gusta ...
PowerShell, 70 bytes
Ejecutar como un script desde la línea de comando, por ejemplo. \ Misso.ps1 1 20.
fuente
PowerShell v4 +, 62 bytes
Guardar como una secuencia de comandos en el directorio deseado y llamarlo localmente (ver ejemplo a continuación). Toma datos
$x
y$y
construye un rango..
, luego lo canaliza a unWhere-Object
(el|?{...}
) que es básicamente un filtro. Aquí solo seleccionamos elementos donde el elemento actual$_
es-notin
la.Name
colección del directorio actual, pero el elemento anterior es-in
esa colección (es decir, solo el comienzo de un rango faltante).El
ls
es un alias paraGet-ChildItem
y es básicamente lo que esperarías. Requiere v4 para la selección de encapsulación.Name
, de lo contrario necesitaría$a=ls ".\"|select Name
.Ejemplo
fuente
Groovy, 53 bytes
Tenía una explicación y capturas de pantalla, pero no publiqué esa versión y salí de la página ... O eso o publiqué la respuesta en un hilo SO aleatorio sobre la "mejor manera de crear un directorio en Groovy".
fuente