Guest User

Untitled

a guest
Dec 16th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. fun String.hexToByteString() : String {
  2. var sb = StringBuilder()
  3. this.forEach {
  4. sb.append(it.toString().toInt(16).toString(2).padStart(4,'0'))
  5. }
  6. return sb.toString()
  7. }
  8.  
  9. fun loadKnotHashGrid(input : String) : List<String> {
  10. var list : MutableList<String> = emptyList<String>().toMutableList()
  11. for (i in 0..127) {
  12. list.add(knotHash("$input-$i").hexToByteString())
  13. }
  14. return list
  15. }
  16.  
  17. fun countUsedSquares(list: List<String>) : Int {
  18. var sum = 0
  19. list.forEach {
  20. it.forEach {
  21. if (it.equals('1')) sum++
  22. }
  23. }
  24. return sum
  25. }
  26.  
  27. // global array for the win!
  28. var array : Array<Array<Char>> = emptyArray()
  29. fun countingUsedSquares(list: List<String>) : Int {
  30. array = Array(128,{Array(128, { ' '})})
  31. list.forEachIndexed { index, s ->
  32. array.set(index,s.replace('1','#').replace('0','.').toCharArray().toTypedArray())
  33. }
  34. return countingUsedHelper()
  35. }
  36.  
  37. fun countingUsedHelper() : Int {
  38. var sum = 0
  39. for (i in 0..array.size-1) {
  40. for (j in 0..array[i].size-1) {
  41. if (array[i][j].equals('#')) {
  42. updateAdjacent('1' + sum, i, j)
  43. sum++
  44. }
  45. }
  46. }
  47. array.forEach { println(it.toList()) }
  48. return sum
  49. }
  50.  
  51. fun updateAdjacent(rep: Char, i: Int, j: Int) {
  52. array[i][j] = rep
  53. if (j>0 && array[i][j-1].equals('#')) updateAdjacent(rep, i, j-1)
  54. if (j<127 && array[i][j+1].equals('#')) updateAdjacent(rep, i, j+1)
  55. if (i>0 && array[i-1][j].equals('#')) updateAdjacent(rep, i-1, j)
  56. if (i<127 && array[i+1][j].equals('#')) updateAdjacent(rep, i+1, j)
  57. }
Add Comment
Please, Sign In to add comment