File size distribution: Difference between revisions

m
Line 453:
) (0, 0)
 
groupsFromGroup :: Int -> [Integer] -> FrequencyGroup -> [FrequencyGroup]
groupsFromGroup gsize fileSizes ((min, max), count) = frequencyGroups 10gsize range
where
collectBetween min max = filter (\n -> n >= min && n <= max)
range = collectBetween min max fileSizes
 
expandGroups :: Int -> [Integer] -> Integer -> [FrequencyGroup] -> [FrequencyGroup]
expandGroups gsize fileSizes groupThreshold groups
| all ((<= groupThreshold) . snd) groups = groups
| otherwise = expandGroups gsize fileSizes groupThreshold $ expand groups
where
expand = ((\g@((min, max), count) ->
if count > groupThreshold then
groupsFromGroup gsize fileSizes g
else
[g]
Line 549:
putStrLn "\nDistribution:"
let results = filteredGroups groupSize items
deepResults = expandedGroups groupSize (sizes items) (groupThreshold fileCount) results
mapM_ (displayFrequency fileCount) deepResults
where
Line 555:
filteredGroups n = filter ((>0) . snd) . frequencyGroups n . sizes
groupThreshold = round . (*0.25) . realToFrac
expandedGroups gsize sizes n = filter ((>0) . snd) . expandGroups gsize sizes n</lang>
{{out}}
<pre style="height: 50rem;">$ filedist
Using 4 worker threads
Total files: 431798431803
Total folders: 65528
Total size: 6GB
 
Distribution:
0B <-> 75B = 39305 9.103%: ████████████████████████████████████
0B <-> 83B = 43580 10.093%: ████████████████████████████████████████
76B <-> 151B = 36175 8.378%: ██████████████████████████████████
84B <-> 167B = 40942 9.482%: ██████████████████████████████████████
152B <-> 227B = 27747 6.426%: ██████████████████████████
168B <-> 251B = 24867 5.759%: ███████████████████████
228B <-> 303B = 19148 4.434%: ██████████████████
252B <-> 335B = 20019 4.636%: ███████████████████
301B <-> 601B = 50919 11.792%: ███████████████████████████████████████████████
336B <-> 419B = 15623 3.618%: ██████████████
602B <-> 902B = 41885 9.700%: ███████████████████████████████████████
420B <-> 503B = 13403 3.104%: ████████████
903B <-> 1KB = 43986 10.187%: █████████████████████████████████████████
504B <-> 587B = 12778 2.959%: ████████████
1KB <-> 2KB = 61277 14.191%: █████████████████████████████████████████████████████████
588B <-> 671B = 12125 2.808%: ███████████
2KB <-> 4KB = 29473 6.826%: ███████████████████████████
672B <-> 755B = 12736 2.950%: ████████████
4KB <-> 5KB = 17620 4.081%: ████████████████
756B <-> 839B = 9565 2.215%: █████████
5KB <-> 9KB = 28951 6.705%: ███████████████████████████
826B <-> 2KB = 83110 19.247%: █████████████████████████████████████████████████████████████████████████████
9KB <-> 14KB = 10941 2.534%: ██████████
2KB <-> 2KB = 34092 7.895%: ████████████████████████████████
14KB <-> 19KB = 5139 1.190%: █████
2KB <-> 3KB = 20814 4.820%: ███████████████████
19KB <-> 37KB = 8589 1.989%: ████████
3KB <-> 4KB = 15088 3.494%: ██████████████
4KB 37KB <-> 5KB56KB = 10327 3100 2 0.392718%: █████████████
5KB 56KB <-> 6KB75KB = 76081807 10.762418%: █████████
6KB 75KB <-> 6KB150KB = 62602547 10.450590%: ████████
6KB150KB <-> 7KB225KB = 4562 933 1 0.057216%: ████
7KB225KB <-> 8KB300KB = 3894 697 0.902161%: ████
322KB301KB <-> 403KB601KB = 287653 0.066151%:
8KB <-> 16KB = 18833 4.362%: █████████████████
16KB601KB <-> 24KB902KB = 6188 305 1 0.433071%: ██████
24KB902KB <-> 32KB 1MB = 3342 122 0.774028%: ███
32KB 1MB <-> 40KB 2MB = 2100 210 0.486049%: ██
40KB 2MB <-> 48KB 4MB = 1447 110 0.335025%:
48KB 4MB <-> 56KB 5MB = 966 51 0.224012%:
56KB 5MB <-> 64KB 9MB = 726 52 0.168012%:
64KB 9MB <-> 72KB14MB = 852 19 0.197004%:
72KB14MB <-> 81KB19MB = 563 8 0.130002%:
81KB20MB <-> 161KB 40MB = 2368 17 0.548004%: ██
161KB 40MB <-> 242KB 61MB = 967 5 0.224001%:
242KB 61MB <-> 322KB 81MB = 558 3 0.129001%:
322KB <-> 403KB = 287 0.066%:
403KB <-> 483KB = 176 0.041%:
483KB <-> 564KB = 100 0.023%:
564KB <-> 644KB = 77 0.018%:
644KB <-> 725KB = 101 0.023%:
725KB <-> 805KB = 77 0.018%:
815KB <-> 2MB = 282 0.065%:
2MB <-> 2MB = 123 0.028%:
2MB <-> 3MB = 74 0.017%:
3MB <-> 4MB = 59 0.014%:
4MB <-> 5MB = 26 0.006%:
5MB <-> 6MB = 17 0.004%:
6MB <-> 6MB = 20 0.005%:
6MB <-> 7MB = 7 0.002%:
7MB <-> 8MB = 6 0.001%:
8MB <-> 16MB = 23 0.005%:
16MB <-> 24MB = 10 0.002%:
24MB <-> 32MB = 9 0.002%:
32MB <-> 40MB = 4 0.001%:
40MB <-> 49MB = 5 0.001%:
73MB <-> 81MB = 3 0.001%:
98MB <-> 196MB = 8 0.002%:
294MB <-> 392MB = 1 0.000%: </pre>
 
=={{header|Julia}}==
Anonymous user