This file contains hidden or 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
// Swift 2.1 | |
extension Array where Element : Comparable { | |
private func merge(var left: Array<Element>, var _ right: Array<Element>) -> Array<Element> { | |
var result: Array<Element> = [] | |
while !left.isEmpty && !right.isEmpty { | |
This file contains hidden or 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
// Swift 2.1 | |
extension MutableCollectionType where Self.Generator.Element : Comparable, Self.Index == Int { | |
/// Return a new sorted collection of the elements in `source` | |
/// using [Shell Sort](https://en.wikipedia.org/wiki/Shellsort). | |
/// | |
/// Complexity O(n^(3/2)). | |
@warn_unused_result(mutable_variant="shellSortInPlace") |
This file contains hidden or 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
// Swift 2.1 | |
extension MutableCollectionType where Self.Generator.Element : Comparable { | |
/// Return a new sorted collection of the elements in `source` | |
/// using [Insertion Sort](https://en.wikipedia.org/wiki/Insertion_sort). | |
/// | |
/// Complexity O(n^2). | |
@warn_unused_result(mutable_variant="insertionSortInPlace") | |
public func insertionSort() -> Self { |
This file contains hidden or 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
// Swift 2.1 | |
extension MutableCollectionType where Self.Generator.Element : Comparable { | |
/// Return a new sorted collection of the elements in `source` | |
/// using [Selection Sort](https://en.wikipedia.org/wiki/Selection_sort). | |
/// | |
/// Complexity O(n^2). | |
@warn_unused_result(mutable_variant="selectionSortInPlace") | |
public func selectionSort() -> Self { |
This file contains hidden or 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
// Swift 2.2 | |
extension NSColor { | |
convenience init(rgb: String) { | |
guard rgb.characters.count == 6 else { fatalError("Invalid rgb value: \(rgb)") } | |
let scanner = NSScanner(string: rgb) | |
var hexValue: UInt32 = 0 |
This file contains hidden or 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
//: [Sub-string Divisibility](https://projecteuler.net/problem=43) | |
/*: | |
The number, 1406357289, is a 0 to 9 pandigital number because it is made up of each of the digits 0 to 9 in some order, but it also has a rather interesting sub-string divisibility property. | |
Let d[1] be the 1st digit, d[2] be the 2nd digit, and so on. In this way, we note the following: | |
* d[2]d[3]d[4] = 406 is divisible by 2 | |
* d[3]d[4]d[5] = 063 is divisible by 3 | |
* d[4]d[5]d[6] = 635 is divisible by 5 | |
* d[5]d[6]d[7] = 357 is divisible by 7 |
This file contains hidden or 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
//: [Pentagonal Numbers](https://projecteuler.net/problem=44) | |
/*: | |
Pentagonal numbers are generated by the formula, P[n]=n[3n−1]/2. The first ten pentagonal numbers are: | |
1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ... | |
It can be seen that P[4] + P[7] = 22 + 70 = 92 = P[8]. However, their difference, 70 − 22 = 48, is not pentagonal. | |
Find the pair of pentagonal numbers, P[j] and P[k], for which their sum and difference are pentagonal and D = |P[k] − P[j]| is minimised; what is the value of D? | |
*/ |
This file contains hidden or 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
//: Cube digit pairs | |
//: [Problem 90](https://projecteuler.net/problem=90) | |
//: Xcode 7.0, Swift 2.0 | |
/*: | |
Each of the six faces on a cube has a different digit (0 to 9) written on it; the same is done to a second cube. By placing the two cubes side-by-side in different positions we can form a variety of 2-digit numbers. | |
For example, the square number 64 could be formed: | |
 | |
In fact, by carefully choosing the digits on both cubes it is possible to display all of the square numbers below one-hundred: 01, 04, 09, 16, 25, 36, 49, 64, and 81. |
This file contains hidden or 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
//: Coded Triangle Numbers | |
//: [Problem 42](https://projecteuler.net/problem=42) | |
//: Xcode 7.0, Swift 2.0 | |
/*: | |
The nth term of the sequence of triangle numbers is given by, t[n] = ½n(n+1); so the first ten triangle numbers are: | |
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... | |
By converting each letter in a word to a number corresponding to its alphabetical position and adding these values we form a word value. For example, the word value for SKY is 19 + 11 + 25 = 55 = t[10]. If the word value is a triangle number then we shall call the word a triangle word. | |
Using [words.txt](https://projecteuler.net/project/resources/p042_words.txt), a 16K text file containing nearly two-thousand common English words, how many are triangle words? | |
*/ | |
//: Note: I found and replaced the double quotes directly in the text file rather than in code since escaping the double quotes in a string kept crashing the playground. I named the file "words.txt" in the "Resources" folder of the playground. |
This file contains hidden or 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
//: SICP Exercise 1.12 | |
//: //: Xcode 7.0, Swift 2.0 | |
/* The following pattern of numbers is called Pascal’s triangle. | |
1 | |
1 1 | |
1 2 1 | |
1 3 3 1 | |
1 4 6 4 1 | |
. . . |