Last active
August 29, 2015 14:14
-
-
Save argv-minus-one/00b9300df2fa523c2206 to your computer and use it in GitHub Desktop.
Hashing thingy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import scala.io.Source | |
def hash(block: Seq[Char]): Int = | |
// Using `block.view` here means we don't construct a whole new collection for the intermediate result. This saves some time and memory. | |
// Then we map each character to its integer equivalent (i.e. UTF-16 code unit), and then sum them up. | |
block.view.map(_.asInstanceOf[Int]).sum | |
// The table is an Array[Seq[Char]]. That is, it is an array, containing 103 different sequences of characters. We don't care what *kind* of sequences are inside, since we never modify them, but the table itself is of the concrete Array class. | |
val table = Array.fill[Seq[Char]](103)(Nil) | |
val file = Source.fromFile("data.txt") | |
try { | |
for (block <- file grouped 100) | |
table(hash(block) % table.length) = block.toArray | |
} | |
finally file.close() | |
// Report the contents. | |
for ((text, index) <- table.zipWithIndex) { | |
if (text.isEmpty) | |
println(s"Bucket $index is empty.") | |
else | |
println(s"Bucket $index = ${text.mkString}") | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Bucket 0 = r. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id | |
Bucket 1 is empty. | |
Bucket 2 = t, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis | |
Bucket 3 is empty. | |
Bucket 4 = e irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excep | |
Bucket 5 is empty. | |
Bucket 6 = teur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est lab | |
Bucket 7 is empty. | |
Bucket 8 is empty. | |
Bucket 9 is empty. | |
Bucket 10 is empty. | |
Bucket 11 = on proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit am | |
Bucket 12 is empty. | |
Bucket 13 is empty. | |
Bucket 14 is empty. | |
Bucket 15 = x ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore | |
Bucket 16 is empty. | |
Bucket 17 is empty. | |
Bucket 18 is empty. | |
Bucket 19 is empty. | |
Bucket 20 = Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo con | |
Bucket 21 = Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore | |
Bucket 22 = liquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillu | |
Bucket 23 = d tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercita | |
Bucket 24 is empty. | |
Bucket 25 = sequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla | |
Bucket 26 = nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor | |
Bucket 27 = amco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in volu | |
Bucket 28 is empty. | |
Bucket 29 is empty. | |
Bucket 30 = unt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco lab | |
Bucket 31 is empty. | |
Bucket 32 = m dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui | |
Bucket 33 is empty. | |
Bucket 34 = ecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ip | |
Bucket 35 = incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ull | |
Bucket 36 is empty. | |
Bucket 37 is empty. | |
Bucket 38 is empty. | |
Bucket 39 is empty. | |
Bucket 40 is empty. | |
Bucket 41 is empty. | |
Bucket 42 is empty. | |
Bucket 43 is empty. | |
Bucket 44 = ptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proid | |
Bucket 45 is empty. | |
Bucket 46 is empty. | |
Bucket 47 = ent, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, cons | |
Bucket 48 is empty. | |
Bucket 49 is empty. | |
Bucket 50 is empty. | |
Bucket 51 = est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incidid | |
Bucket 52 is empty. | |
Bucket 53 is empty. | |
Bucket 54 = sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolor | |
Bucket 55 = aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea com | |
Bucket 56 is empty. | |
Bucket 57 is empty. | |
Bucket 58 is empty. | |
Bucket 59 is empty. | |
Bucket 60 = henderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cup | |
Bucket 61 is empty. | |
Bucket 62 is empty. | |
Bucket 63 is empty. | |
Bucket 64 = idatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolo | |
Bucket 65 is empty. | |
Bucket 66 = adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim | |
Bucket 67 = veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aut | |
Bucket 68 is empty. | |
Bucket 69 = oris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate ve | |
Bucket 70 is empty. | |
Bucket 71 is empty. | |
Bucket 72 is empty. | |
Bucket 73 is empty. | |
Bucket 74 = o eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud | |
Bucket 75 is empty. | |
Bucket 76 = in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occa | |
Bucket 77 is empty. | |
Bucket 78 = Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatu | |
Bucket 79 is empty. | |
Bucket 80 = at nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserun | |
Bucket 81 is empty. | |
Bucket 82 is empty. | |
Bucket 83 is empty. | |
Bucket 84 is empty. | |
Bucket 85 = orum. | |
Bucket 86 is empty. | |
Bucket 87 = deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed d | |
Bucket 88 = anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor | |
Bucket 89 is empty. | |
Bucket 90 is empty. | |
Bucket 91 is empty. | |
Bucket 92 is empty. | |
Bucket 93 is empty. | |
Bucket 94 is empty. | |
Bucket 95 = ectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim | |
Bucket 96 is empty. | |
Bucket 97 = officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing eli | |
Bucket 98 = t in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur | |
Bucket 99 = lit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sun | |
Bucket 100 = pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit | |
Bucket 101 = tion ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit | |
Bucket 102 = eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment