首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速编译挑战#4

快速编译挑战#4
EN

Code Golf用户
提问于 2015-09-03 07:38:20
回答 1查看 612关注 0票数 7

对于使用SWIFT2.0beta 6的人来说,这是一个挑战,它不是代码高尔夫,但这是一个编程难题,所以我非常肯定这是属于这里的。其基本思想是:使其编译。还有更多的细节和一个格式非常好的在Github项目上游乐场。以前的挑战也同样存在,所有这些都是为修补而设的。解决方案包括以前的挑战,因为它们都已经解决。

规则

  • 您不能修改给定的行
  • 不能在给定的行之间插入任何内容
  • 根据语法高亮的图片,您不能为标准库中的函数提供自定义函数。这也适用于逆。
  • 给定的行不允许生成警告(在默认警告设置下)。但是,您所附加的代码允许生成警告。
  • 代码可能在运行时崩溃,也可能不会崩溃,只需编译即可。

代码

代码语言:javascript
复制
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 () -> ()
    }
}

The Picture

获胜者

第一个发帖,一个答案,编译和符合上述所有规则获胜,并获得在项目厅名人堂的条目。

编辑:提示

在提交克里斯·戈兹比's 99%的解决方案时,他收到了以下提示:

的语法突出显示

代码语言:javascript
复制
protocol P {
    typealias P
    var p : P { get }
}
EN

回答 1

Code Golf用户

回答已采纳

发布于 2015-09-05 11:22:29

我代表克里斯·戈兹比发布了这个答案,他提交了一个

99%溶液(要旨):

代码语言:javascript
复制
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突出显示与之不匹配。这是非常了不起的!

100%溶液

编辑:两天后他提交了以下完全解决方案,恭喜!:

代码语言:javascript
复制
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 () -> ()
        }
    }
    
    //
    
}
票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/55958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档