• STATISTIQUES
  • Il y a eu un total de 2 membres et 12630 visiteurs sur le site dans les dernières 24h pour un total de 12 632 personnes!


    Membres: 2 433
    Discussions: 3 585
    Messages: 32 832
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Hack this site
    Basic: 11, Realistic: 17, Application: 18, Programming: 12, Extbasic: 14, Javascript: 7, Stego: 17
    Challenges
    [FR] Le top web
    Nous offrons une sélection la plus large possible de resources webmaster gratuites, hébergement gratuit...
    Webmaster
    [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation
    [EN] SecurityFocus
    SecurityFocus a été conçu pour faciliter la discussion sur des sujets liés la sécu...
    Vulnérabilités
    [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    Hacking
    [EN] Gekko
    Site de challenge présenter sous la forme d'une quête. Vous êtes un agent secret qui répond sous le nom...
    Challenges
    [FR] µContest
    µContest est un site de challenges de programmation, c'est à dire qu'il propose des épreu...
    Hacking

  • 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
31-05-2014, 19h06 (Modification du message : 01-06-2014, 10h08 par Booster2ooo.)
Message : #16
Booster2ooo Hors ligne
Contributeur
*****



Messages : 165
Sujets : 14
Points: 63
Inscription : Aug 2011
RE: question du jour 2 - le retour
Node.JS

/!\ remplacez le path C:/Users/Booster/
Code JAVASCRIPT :

var fs = require('fs');
var os = require('os');
fs.readFile('C:/Users/Booster/inputFile.txt', 'ascii', function(err, data) {
        if (err) {
            return console.log(err);
        }
        var EOL = os.EOL
          , groups = data.split(EOL+EOL)
          , result = []
          ;
        for(var i = 0,c=groups.length;i<c;i++) {
            var values = groups[i].split(EOL);
            values = values.sort(function(a,b) {
                return a - b;
            });
            result = result.concat(values);
            result.push(EOL);
        }
        console.log(result.join(EOL));
        return;
    }
);
 


Autre sample C#, sans l'utilisation de la lib LINQ

Code CSHARP :

using System;
using System.Text;
using System.IO;
using System.Collections;

namespace NPNQDJ
{
    class Program
    {
        public class StringAsIntComparer : IComparer
        {
            public int Compare(object l, object r)
            {
                return Int32.Parse((string)l).CompareTo(Int32.Parse((string)r));
            }
        }

        static void Main()
        {
            string fileName = "inputFile.txt";
            string fullPath = AppDomain.CurrentDomain.BaseDirectory + fileName;
            if (File.Exists(fullPath))
            {
                string fileContent = File.ReadAllText(fullPath, Encoding.UTF8);
                string[] groups = fileContent.Split(new string[] { System.Environment.NewLine + System.Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
                foreach (string group in groups)
                {
                    string[] values = group.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
                    Array.Sort(values, new StringAsIntComparer());
                    foreach (var val in values)
                    {
                        Console.WriteLine(val);
                    }
                    Console.WriteLine();
                }
            }
        }
    }
}
 
+1 (1) -1 (0) Répondre
01-06-2014, 01h15 (Modification du message : 01-06-2014, 01h41 par gruik.)
Message : #17
balis Hors ligne
Hack Compagnie by Eballys
*



Messages : 156
Sujets : 3
Points: 16
Inscription : Dec 2012
RE: question du jour 2 - le retour
Sur le net , les poules ont des dents. Bali .
Soit original soit celui qui sort de l'ordinaire soit toi . Bali .
C: ok bash : ok asm : en cours.
HTML/CSS : ok , PHP/MySQL : en cours.
+1 (2) -1 (0) Répondre
01-06-2014, 09h12
Message : #18
Dobry Hors ligne
Tueur de lamouz
*



Messages : 206
Sujets : 25
Points: 73
Inscription : Aug 2011
RE: question du jour 2 - le retour
Bon on s'est rendu compte avec gruik que le solution ruby n'allait définitivement pas, en fait IO.readlines charge tout le fichier en mémoire, et voici donc une solution alternative (écrite par gruik, un peu modifiée par mes soins), qui permet au moins de charger le gros fichier, cependant le temps d'execution reste assez élevé (13-14s si je me souviens bien).
Code RUBY :

#!/usr/bin/env ruby
arr = []
File.open(ARGV[0]).each_line do |line|
        if line.length != 1
                arr << line.to_i
        else
                if arr.length != 0
                        puts arr.sort
                        puts
                        arr.clear
                end
        end
end
 
Aestuārium Erudītiōnis

There are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors.
+1 (0) -1 (0) Répondre
01-06-2014, 10h04 (Modification du message : 01-06-2014, 10h06 par Booster2ooo.)
Message : #19
Booster2ooo Hors ligne
Contributeur
*****



Messages : 165
Sujets : 14
Points: 63
Inscription : Aug 2011
RE: question du jour 2 - le retour
Encore un, PHP:

Note: le file_get_contents est peu être un peu violent, ça peut être remplacé par du fopen

Code PHP :

<?php
        $EOL = PHP_EOL;
        $fileContent = file_get_contents('inputFile.txt');
        $groups = explode($EOL.$EOL,$fileContent);
        unset($fileContent);
        for($i = 0, $c = count($groups); $i<$c; ++$i)
        {
                $values = explode($EOL, $groups[$i]);
                sort($values,SORT_NUMERIC);
                for($j =0,$k = count($values);$j<$k;++$j)
                {
                        echo $values[$j].PHP_EOL;
                }
                echo PHP_EOL;
        }
?>
 
+1 (1) -1 (0) Répondre
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: 272
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
04-06-2014, 19h08
Message : #21
wapiflapi Hors ligne
Newbie
*



Messages : 4
Sujets : 0
Points: 8
Inscription : Nov 2012
RE: question du jour 2 - le retour
+1 (5) -1 (0) Répondre


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

Atteindre :


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