Last active
November 4, 2015 11:28
-
-
Save oisdk/e65f3f9f4d4993ac6e59 to your computer and use it in GitHub Desktop.
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
extension CollectionType where Generator.Element : Equatable { | |
private func indexOf(from: Index)(_ e: Generator.Element) -> Index? { | |
for i in from..<endIndex { | |
if self[i] == e { | |
return i | |
} | |
} | |
return nil | |
} | |
} | |
extension String.CharacterView { | |
private func rangeOf(x: String.CharacterView, i: Index) -> Range<Index>? { | |
guard let j = x.first.flatMap(indexOf(i)) else { return nil } | |
var k = j | |
for c in x { | |
if k == endIndex { return nil } | |
if c != self[k++] { return rangeOf(x, i: j.successor()) } | |
} | |
return j..<k | |
} | |
} | |
extension String { | |
public func rangeOf(x: String) -> Range<Index>? { | |
return characters.rangeOf(x.characters, i: startIndex) | |
} | |
} | |
import Foundation | |
let cs = Array("abcdefghij".characters) | |
func randString(length: Int) -> String { | |
return String((0..<length).map { _ in | |
cs[Int(arc4random_uniform(10))] | |
}) | |
} | |
!(0..<100).contains { _ in | |
let long = randString(100) | |
let shrt = randString(3) | |
return long.rangeOf(shrt) != long.rangeOfString(shrt) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment