对于使用SWIFT2.0beta 6的人来说,这是一个挑战,它不是代码高尔夫,但这是一个编程难题,所以我非常肯定这是属于这里的。其基本思想是:使其编译。还有更多的细节和一个格式非常好的在Github项目上游乐场。以前的挑战也同样存在,所有这些都是为修补而设的。解决方案包括以前的挑战,因为它们都已经解决。
func doIt(inout s: D) {
if case self = isUniquelyReferenced(&s),
self.`self` = true where self {
self.`self` = { [unowned x = [self, 7] as Self] n in
print(x + n)
} as () -> ()
}
}
第一个发帖,一个答案,编译和符合上述所有规则获胜,并获得在项目厅名人堂的条目。
在提交克里斯·戈兹比's 99%的解决方案时,他收到了以下提示:
的语法突出显示
protocol P {
typealias P
var p : P { get }
}发布于 2015-09-05 11:22:29
我代表克里斯·戈兹比发布了这个答案,他提交了一个
typealias D = NonObjectiveCBase
func ~=(left: Any, right: Bool) -> BooleanType {
return true
}
func +(left: Any, right: Any) -> String {
return ""
}
protocol 🐢: class, BooleanType, ArrayLiteralConvertible {
var `self` : () -> () { get set }
}
extension 🐢 {
typealias Element = Any
internal init(arrayLiteral elements: Any...) {
self.init()
}
//
func doIt(inout s: D) {
if case self = isUniquelyReferenced(&s),
self.`self` = true where self {
self.`self` = { [unowned x = [self, 7] as Self] n in
print(x + n)
} as () -> ()
}
}
//
}只有D的snytax突出显示与之不匹配。这是非常了不起的!
编辑:两天后他提交了以下完全解决方案,恭喜!:
private func ~=(left: Any, right: Bool) -> BooleanType {
return true
}
private func +(left: Any, right: Any) -> String {
return ""
}
protocol Challenge4: class, BooleanType, ArrayLiteralConvertible {
typealias D
var `self` : () -> () { get set }
func doIt(inout s: D)
}
private extension Challenge4 where D == NonObjectiveCBase {
typealias Element = Any
init(arrayLiteral elements: Any...) {
self.init()
}
//
func doIt(inout s: D) {
if case self = isUniquelyReferenced(&s),
self.`self` = true where self {
self.`self` = { [unowned x = [self, 7] as Self] n in
print(x + n)
} as () -> ()
}
}
//
}https://codegolf.stackexchange.com/questions/55958
复制相似问题