Guest User

Untitled

a guest
May 24th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1. //: Playground - noun: a place where people can play
  2. //: Roots of Unity Often Lie
  3.  
  4. indirect enum BTree {
  5. case empty
  6. case branch(BTree, BTree)
  7. }
  8.  
  9. func encode(_ t: (BTree, BTree, BTree, BTree, BTree, BTree, BTree)) -> BTree {
  10. switch t {
  11. case (.empty, .empty, .empty, .empty, .empty, .empty, .empty):
  12. return .branch(.empty, .empty)
  13. case let (.empty, .empty, .empty, .empty, .empty, .empty, .branch(b1, b2)):
  14. return .branch(.branch(.branch(.branch(.branch(.empty, .empty), .empty), b1), .empty), b2)
  15. case let (.empty, .empty, .empty, .empty, .empty, .branch(b1, b2), .empty):
  16. return .branch(.empty, .branch(b1, b2))
  17. case let (.empty, .empty, .empty, .empty, .empty, .branch(b1, b2), .branch(b3, b4)):
  18. return .branch(.branch(.branch(.branch(.branch(.empty, .empty), .branch(b1, b2)), b3), .empty), b4)
  19. case (.empty, .empty, .empty, .empty, .branch(.empty, .empty), .empty, .empty):
  20. return .empty
  21. case let (.empty, .empty, .empty, .empty, .branch(.empty, .empty), .branch(b1, b2), .empty):
  22. return .branch(.branch(.empty, b1), b2)
  23. case let (.empty, .empty, .empty, .empty, .branch(.empty, .branch(b1, b2)), b3, .empty):
  24. return .branch(.branch(.branch(.branch(.empty, b1), b2), .empty),b3)
  25. case let (.empty, .empty, .empty, .empty, .branch(.empty, .empty), b1, .branch(b2, b3)):
  26. return .branch(.branch(.branch(.empty, b1), b2), b3)
  27. case let (.empty, .empty, .empty, .empty, .branch(.empty, .branch(b1, b2)), b3, .branch(b4, b5)):
  28. return .branch(.branch(.branch(.branch(.empty, b1),b2), .branch(b3, b4)),b5)
  29. case let (.empty, .empty, .empty, .empty, .branch(.branch(b1, b2), b3), b4, b5):
  30. return .branch(.branch(.branch(.branch(.branch(.empty, .empty), b1), b2), .branch(b3, b4)),b5)
  31. case let (.empty, .empty, .empty, .branch(b1, b2), b3, b4, b5):
  32. return .branch(.branch(.branch(.branch(.branch(.empty, .branch(.empty, b1)), b2), b3), b4), b5)
  33. case let (.empty, .empty, .branch(b1, b2), b3, b4, b5, b6):
  34. return .branch(.branch(.branch(.branch(.branch(.empty,.branch(.branch(.empty, b1),b2)),b3),b4),b5),b6)
  35. case let (.empty, .branch(b1, b2), b3, b4, b5, b6, b7):
  36. return .branch(.branch(.branch(.branch(.branch(.empty,.branch(.branch(.branch(.empty, b1), b2), b3)), b4), b5), b6), b7)
  37. case let (.branch(.empty, b1), b2, b3, b4, b5, b6, b7):
  38. return .branch(.branch(.branch(.branch(.branch(.branch(b1, b2), b3), b4), b5), b6), b7)
  39. case let (.branch(.branch(b1, b2),b3), b4, b5, b6, b7, b8, b9):
  40. return .branch(.branch(.branch(.branch(.branch(.empty,.branch(.branch(.branch(.branch(b1, b2), b3), b4), b5)), b6), b7), b8), b9)
  41. }
  42. }
Add Comment
Please, Sign In to add comment