Swift

Swift のクロージャと Ruby の lambda

ここで Swift におけるクロージャの使い方が説明されています。こちらで同じ内容のコードを再掲するとこんな感じでしょうか。Swift 4.0。 func f(_ a: Int, _ b: Int, _ closure: (Int, Int) -> Int) -> Int { return closure(a, b) } print(f(1, 2, {a, b i…

Swift でエラトステネスの篩

こんな感じ。 eratosthenes.swift func eratosthenes(_ n: Int) -> [Int] { var ar = Array(0...n) for i in 2...Int(sqrt(Double(n))) { if ar[i] == 0 {continue} for j in 2...(n / i) {ar[i * j] = 0} } return ar.filter {$0 != 0} } print(eratosthene…

Linux Mint(Ubuntu)で Swift 4.0 を使う

Linux ユーザーですが Swift が使いたい。これまで Swift は 3.1-dev を使っていたのですが、折角 4.0 があるので使ってみることにしました。ちょっとハマったところがあったので記しておきます。なお、面倒なので暗号鍵を使ったデジタル署名版ではありませ…

Swift で 8queen 問題を解く

以前 Ruby で「エイト・クイーン」問題を解きましたが、それを Swift に移植してみました。「エイト・クイーン」というのは チェスの盤上に、8個のクイーンを配置する。このとき、どの駒も他の駒に取られるような位置においてはいけない。 https://ja.wikipe…

Swift でクイックソート

extension Array where Element == Int { func qsort() -> [Int] { if self.isEmpty {return []} var xs = self let pivot = xs.removeFirst() let left = xs.filter({$0 < pivot}) let right = xs.filter({$0 > pivot}) return left.qsort() + Array(arrayL…

Swift でたらい回し関数

以前 Ruby と Python と C でいわゆる「たらい回し関数」のベンチマークをやってみましたが(参照)、Swift 3.0 でもやってみました。コードは以下。無様ですがお許しを。 import Glibc func tak(_ x: Int,_ y: Int,_ z: Int) -> Int { if x <= y { return y…

Swift によるオブジェクト指向ジャンケン・プログラム

なぜ、あなたはJavaでオブジェクト指向開発ができないのか―Javaの壁を克服する実践トレーニング作者: 小森裕介,アクロクエストテクノロジー株式会社出版社/メーカー: 技術評論社発売日: 2004/12/01メディア: 単行本購入: 10人 クリック: 217回この商品を含む…

Linux Mint(Ubuntu)で Swift を使ってみる(その2)

swift.orgLinux でも Swift が使えるようになったので、まずは Docker を使って Linux Mint 17.2 に導入してみたのですが(参照)、Docker なんぞを使うと却って面倒なので、お手軽にやってみました。上の公式サイトに書いてあるとおりにやっただけです。正…

Linux Mint(Ubuntu)で Swift を使ってみる

Swift ってよさそうな言語だけれど、Apple のみかと思っていたら、一応 Ubuntu でも動くのですね。インストールは以下のサイトを参考にしました。 gihyo.jpDocker を使ってやってみました。Linux Mint 17.2 で動作確認。 $ sudo docker pull swiftdocker/swi…