Skip to content

Instantly share code, notes, and snippets.

@argv-minus-one
Last active August 29, 2015 14:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save argv-minus-one/00b9300df2fa523c2206 to your computer and use it in GitHub Desktop.
Save argv-minus-one/00b9300df2fa523c2206 to your computer and use it in GitHub Desktop.
Hashing thingy
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.
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}")
}
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