Denne side bruger cookies
Dette forum bruger cookies. Hvis du er registreret, bruges de til at huske hvem du er logget ind som. Hvis ikke, gemmer vi dit sidste besøgstidspunkt. Besøgstidspunktet bruges bl.a. til at holde øje med, hvilke tråde du allerede har læst. Cookies er små tekstdokumenter, som bliver gemt i din browser og udgør ingen sikkerhedsrisiko. Tryk "Mere Information" nedenfor, for en liste over de cookies vi sætter. Du har mulighed for at fravælge cookies ved at klikke på knappen "Blokér Cookies" i bunden af denne boks.

En ikke-personhenførbar cookie vil blive gemt i din browser, uanset dit valg (Medmindre du ikke foretager et). Således undgår du at blive spurgt igen. Du kan til enhver tid ændre dit valg via linket i bunden af siden.

Tråd bedømmelse:
  • 0 Stemmer - 0 Gennemsnit
  • 1
  • 2
  • 3
  • 4
  • 5
Løsningsforslag til recursion i Ruby
22-05-2016, 13:09 (Denne besked var sidst ændret: 22-05-2016, 13:10 af iTick.)
#1
Løsningsforslag til recursion i Ruby
Dette er mit løsningsforslag til Januar 2015 - Recursion

Ja, det tog nok lidt overhånd da jeg lavede det. Og rodede videre med det, efter jeg havde løst udfordringen.
recursive.rb:
#!/usr/bin/env ruby

$layer = 0      # Til indryk

# Help
def usage
        puts "Brug: ./recursive.rb <mappe>"
        puts "F.eks. ./recursive.rb /home"
end

# Rekursiv metode
def examine_dir(_entry)
        Dir.chdir(_entry)                                                       # cd
        _return = Dir.pwd                                                       # Gem working dir til efter et rekursivt kald
        Dir.foreach(_entry) do |entity|                         # loop gennem elementer
                next if entity == "." or entity == ".." # Ingen deadlock
                if File.directory? entity                               # Er element et dir?
                        $layer += 1                                                     # Indryk
                        puts "\n#{"\t" * ($layer - 1)}<dir>\tCreated: #{File.ctime(entity).asctime})\t|#{entity}|\t(Layer: #{$layer})"  # Vis dirnavn
                        examine_dir(Dir.pwd + "/" + entity)                             # Rekursivt kald
                        $layer -= 1                                                                             # Tilbageryk
                        Dir.chdir(_return)                                                              # Returner til det dir vi kom fra
                else                                                                                            # Det er en fil
                        puts "#{"\t" * $layer}<File>\t(Size: #{File.size(entity)} Bytes)\t(Modified: #{File.mtime(entity).asctime})\t(Perm: #{File.stat(entity).mode.to_s(8)})\t|#{entity}|\t(iNode: 0x#{File.stat(entity).ino.to_s(16).upcase})\t(Owner: U:#{File.stat(entity).uid}/G:#{File.stat(entity).gid})"            # Vis filnavn med detaljer
                end
        end
end

# Main
if ARGV.size != 1 then                  # Argument eller usage screen
        usage
else
        examine_dir(ARGV[0])            # Start kald til rekursiv funktion
end

Når det køres, ser der således ud:
Citer:root@kalibox:~/code/ruby/ss# ./recursive.rb ./
<File>  (Size: 763 Bytes)       (Modified: Sat Aug  1 03:40:11 2015)    (Perm: 100744)  |bitcoin.rb|    (iNode: 0xB60D1A)       (Owner: U:0/G:0)
<File>  (Size: 1272 Bytes)      (Modified: Fri Jun  5 19:18:28 2015)    (Perm: 100744)  |recursive.rb|  (iNode: 0xB60D1B)       (Owner: U:0/G:0)
<File>  (Size: 207 Bytes)       (Modified: Fri Jun  5 19:18:28 2015)    (Perm: 100744)  |fizzbuzz.rb|   (iNode: 0xB60D1C)       (Owner: U:0/G:0)
root@kalibox:~/code/ruby/ss#

En udfordring er, ikke at ryge i en uendelig lykke på grund af "." og "..".
---
Writing a shellcode decoder stub in assembly is like talking gibberish in such a way that it is still perfectly intelligible. - iTick
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
« Ældre | Nyere »




User(s) browsing this thread: 1 Gæst(er)