• STATISTIQUES
  • Il y a eu un total de 0 membres et 42732 visiteurs sur le site dans les dernières 24h pour un total de 42 732 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Zmaster
    Articles sur l'informatique, le hacking, le P2P, les divx, les astuces windows XP, les GSM, Emule, la cryptograph...
    Hacking
    [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    Hacking
    [FR] Forum-Webmaster
    Une communauté webmaster pour apporter / recevoir de l'aide en création de site internet. Webmaster...
    Webmaster
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [FR] Secuser
    Actualité de la sécurité informatique, fiches virus et hoax, alertes par email, antivirus gratui...
    Hacking
    [EN] Rankk
    Site de challenge construit sur le principe d'une pyramide à 9 level. Level 1: 60,Level 2: 72,Level 3: 68,Lev...
    Challenges
    [FR] Developpez.net
    Un forum communautaire qui se veut pour les développeurs en générale. Avec presque 500 000 membr...
    Programmation

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
question du jour 2 - le retour
04-06-2014, 12h48 (Modification du message : 04-06-2014, 12h48 par notfound.)
Message : #20
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
RE: question du jour 2 - le retour
En parlant de ruby sur un autre channel, j'en suis venu à montrer ce thread.

TsT a proposé son code en LUA, que je poste à son nom :

Code LUA :

local f = arg[1]
local fd = assert(io.open(f, 'r'))
local res = {}
local b = {}
while true do
        local line = fd:read('*l')
        if not line or line == "" then
                if #b > 0 then
                        table.sort(b)
                        res[#res+1] = b
                        b = {}
                end
                if not line then break end
        else
                b[#b+1] = tonumber(line)
        end
end
fd:close()
 
for i,v in ipairs(res) do
        res[i] = table.concat(v, "\n")
end
print(table.concat(res, "\n\n"))

 
-- En minimisé oneliner

fd=io.open(arg[1],"r");res,b={},{};while true do local line=fd:read("*l");if not line or line=="" then if #b>0 then table.sort(b);res[#res+1]=b;b={} end if not line then break end else b[#b+1]=tonumber(line) end end;fd:close();for i,v in ipairs(res) do res[i]=table.concat(v,"\n") end;print(table.concat(res,"\n\n"))


-- Et avec un module

local strong = require("strong") -- https://github.com/BlackBulletIV/strong
local powertable = require("powertable") -- TsT small module
 
local function tprint(t) for aa,bb in ipairs(t) do print("      ", aa,bb) end end
 
local f = arg[1]
local fd = assert(io.open(f, "r"))
local res = {}
for elem in fd:read("*a"):lines("\n\n") do
        res[#res+1] = powertable( elem:chomp()plit("\n", true) ):tsort( function(x,y) return tonumber(x) < tonumber(y) end ):concat("\n")
end
print(table.concat(res, "\n\n"))


-- Optimisé performance

local function process_data(fd, para_handler)
        local buf = {} -- buffer for each lines of the current paragraph
        while true do
                local line = fd:read("*l") -- read one line
                if not line then break end -- stop if the end of file is reached
                if line == "" then -- a empty line = end of paragraph
                        para_handler(buf)
                        buf = {} -- reset buffer
                else
                        table.insert(buf, tonumber(line))
                end
        end      
        para_handler(buf)
end
 
local function para_handler(buf, eof)
        -- new paragraph ready
        table.sort(buf)
        print(table.concat(buf, "\n").."\n")
end
           
local f = arg[1]
local fd = assert(io.open(f, "r"))
process_data(fd, para_handler)
fd:close()
 


Voilà.
Temps et conso dernier code (d'après gruik):
Time : 8,80s
Conso : < 5k
+1 (1) -1 (0) Répondre


Messages dans ce sujet
question du jour 2 - le retour - par gruik - 30-05-2014, 16h24
RE: question du jour 2 - le retour - par eax64 - 30-05-2014, 16h47
RE: question du jour 2 - le retour - par gruik - 30-05-2014, 17h13
RE: question du jour 2 - le retour - par fr0g - 30-05-2014, 16h55
RE: question du jour 2 - le retour - par Dobry - 30-05-2014, 17h09
RE: question du jour 2 - le retour - par b0fh - 30-05-2014, 18h17
RE: question du jour 2 - le retour - par skii - 30-05-2014, 21h16
RE: question du jour 2 - le retour - par Atlas - 30-05-2014, 22h31
RE: question du jour 2 - le retour - par gruik - 31-05-2014, 16h50
RE: question du jour 2 - le retour - par eax64 - 31-05-2014, 17h58
RE: question du jour 2 - le retour - par gruik - 31-05-2014, 18h14
RE: question du jour 2 - le retour - par balis - 01-06-2014, 01h15
RE: question du jour 2 - le retour - par Dobry - 01-06-2014, 09h12
RE: question du jour 2 - le retour - par notfound - 04-06-2014, 12h48

Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  question du jour gruik 9 435 12-11-2013, 16h10
Dernier message: gruik
  Question pour la création de mon site... Wabouz 10 491 05-03-2013, 21h14
Dernier message: Wabouz

Atteindre :


Utilisateur(s) parcourant ce sujet : 12 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut