Die Herausforderung besteht darin, fehlende ganzzahlige Sequenzen von Dateien oder Verzeichnissen zu erkennen. Sie haben ein Verzeichnis mit Dateien / Verzeichnissen, die als Ganzzahlen bezeichnet werden.
Die Dateien / Verzeichnisse werden aus mehreren Threads generiert, der Auftrag wurde jedoch nicht abgeschlossen. Daher gibt es Lücken in der Reihenfolge.
Die Eingabe besteht aus zwei Ganzzahlen pro Start und Ende, und Ihre Aufgabe besteht darin, die Start-Ganzzahl der nächsten fehlenden Sequenzen zu ermitteln. Sie können davon ausgehen, dass alle Dateien und Verzeichnisse in dem Verzeichnis, in dem ausgeführt wird, nur ganzzahlige Dateien oder Verzeichnisse haben.
Akzeptable Antwortformulare: Funktionen, Codefragmente - sie müssen in der Befehlszeile ausgeführt werden.
Akzeptable Start / Ende-Eingabe: In der Befehlszeile enthalten, sind env-Variablen / argv in Ordnung , Parameter für Funktionen, Benutzereingaben sind in Ordnung .
Der kürzeste Code gewinnt.
Update - Obwohl ich es geschafft habe, dieses herauszupressen, gab es viele interessante Antworten. Die Idee in Apricotboys Bash-Antwort wurde teilweise verwendet, um mir beim Entwerfen meiner 35-Byte-Bash-Antwort zu helfen. Viel Glück beim nächsten.
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
Antworten:
Python 2, 101 Bytes
2 Bytes dank @xnor.
quelle
import os
, die Sie entfernen sollten.if~-n!=t:
kann seinif~t+n:
.Dyalog APL ,
2524 oder 36 BytesFordert zur Untergrenze und dann zur Obergrenze auf.
Aus Kommentaren zu anderen Antworten geht hervor, dass das OP so kurze Sequenzen wie möglich haben wollte.
{
⍵/⍨
diejenigen , bei denen es ist~
nicht wahr ,⍵∊⍨
dass der Satz enthält⍵-1
ihre Vorgänger}
von(
(⍳⎕)
den ganzen Zahlen bis n~
Ausnahme⍳⎕-1
ganzer Zahlen bis n -1)~
außer⍎¨
der Bewertung der einzelnes⎕SH'dir/b'
der bloßen Liste der Namen im aktuellen VerzeichnisAlte Antwort, die Sequenzen der Länge 1 zurückgibt:
(
⍕
Zeichenfolgendarstellung¨
jeder(⍳⎕)
der Ganzzahlen bis n~
außer⍳⎕-1
Ganzzahlen bis n -1 mit)~
Ausnahme⎕SH'dir/b'
der bloßen Liste der Dateien im aktuellen VerzeichnisFunktioniert nur unter Windows. Eine plattformübergreifende Lösung:
0
Nur die Dateinamen⎕NINFO
der nativen Datei (en) INFOrmation unter⍠1
Verwendung von Platzhaltern⊢'*'
für alle Dateienquelle
Ruby,
746045 BytesDie Eingabe erfolgt in der Befehlszeile. Führen Sie sie wie folgt aus
ruby f.rb 0 20
. Funktioniert nur im aktuellen Verzeichnis.-1 Byte beim Entpacken der
ARGV
Variablen und -13 Byte beim Ersetzen desselect
undgrep
durch eine festgelegte Subtraktion.V3: -5 Bytes von der Verwendung einer Ersetzung für
Dir.glob
in einer alten Ruby-Antwort auf eine andere Dateisystem-Herausforderung , wie von @PatrickOscity vorgeschlagen. -10 von der Erinnerung an einige Macken in RubysString#next
Funktion.quelle
Perl 6, 47 Bytes
Erläuterung:
Versucht, Flipflops zu verwenden. Hat es nicht geschafft: P.
quelle
}
.PHP, 64 Bytes
Laufen Sie so:
Hinweis:
Nur das aktuelle Verzeichnis.
Kein nachfolgender Zeilenumbruch in der Ausgabe.
Dies setzt
<?=
voraus, dass das in php.ini erlaubt ist. Was ich für Standard halte, bin mir aber nicht sicher.Bash, 31 Bytes
Ausführen als
a 1 20
. Wieder nur das aktuelle Verzeichnis.Kann ich zwei einreichen? Ich hoffe. Dies ist mein erster Beitrag zu Code Golf, daher bin ich mir der Etikette nicht sicher. Ich hoffe, ich zähle auch meine Bytes richtig.
quelle
Ich sehe jetzt, dass dies eine alte Frage ist, aber trotzdem gefällt es mir ...
PowerShell, 70 Byte
Führen Sie es als Skript über die Befehlszeile aus, z. B. \ misso.ps1 1 20.
quelle
PowerShell v4 +, 62 Byte
Speichern Sie es als Skript im gewünschten Verzeichnis und rufen Sie es lokal auf (siehe Beispiel unten). Nimmt Eingabe
$x
und$y
einen Bereich..
und leitet diesen an einenWhere-Object
(den|?{...}
) weiter, der im Grunde genommen ein Filter ist. Hier sind wir nur Elemente auswählen , wo das aktuelle Element$_
ist-notin
die.Name
Sammlung des aktuellen Verzeichnisses, aber das vorherige Element ist ,-in
dass Sammlung (dh nur der Anfang eines fehlenden Bereichs).Das
ls
ist ein Alias fürGet-ChildItem
und ist im Grunde das, was Sie erwarten würden. Benötigt v4 für die Kapselungsauswahl von.Name
, sonst würden Sie benötigen$a=ls ".\"|select Name
.Beispiel
quelle
Groovy, 53 Bytes
Ich hatte eine Erklärung und Screenshots, aber ich habe diese Version nicht gepostet und die Seite verlassen ... Entweder das oder ich habe die Antwort in einem zufälligen SO-Thread über den "besten Weg, ein Verzeichnis in Groovy zu statisieren" gepostet.
quelle