マガジンのカバー画像

Swiftでいこう!

585
楽しくプログラミング!Swiftはなんだか楽しい"ことば"です。
運営しているクリエイター

2020年8月の記事一覧

はじめてみよう。プログラミング! - 文字の扱い方 2 。

文字の扱い方 1 の続きです。 引き続きSwiftでの文字の扱い方をみていきます。 Substrings(文字列の抜き出し) "Substrings"とは文字を構成するかたまり(文字列)を抜き出す意味となります。一部切り出しという方がわかりやすいかもしれません。 let greeting = "Hello, world!" この文字列の","を境に文字を取り出します。 let index = greeting.firstIndex(of: ",") ?? greet

SwiftUIでCoreML。- Swift Playgrounds

まず必要なもの、CoreMLの機械学習モデル(MobileNetV2FP16を使います)、UIImageな拡張ファイル(UIimageExtension.swift)、以下参考。 https://note.com/dngri/n/nbc7f10190cea 前回のCoreMLのXcode版の方にも方法を乗っけていますが、同じファイルを使えます(ファイルの中身をコピペでできます)。 Swift Playgroundsで同じことやるには少し手を加えないといけないので、そのへ

はじめてみよう。プログラミング! - 文字の扱い方 1 。

文字はプログラミングで必要なものですが、少し特殊な扱いが必要です。数字とは分けて考えます。日本語などは2バイト文字と呼ばれています。 まずはSwiftでの文字の扱いを整理してみます。 文字を変数に代入します。そして文字の結合をしてみます。 var str = "Hellow"str += " world"var newStr = "Hello" + " Taro" "+"の演算子を使い文章をくっつけます。 上記を実行すると str は"Hellow world"と

SwiftUIでCoreML。

機械学習CoreMLです。Vision.Frameworkを使った認識については以前書きましたが https://note.com/dngri/n/n976634143c43 今回はCoreMLを使って画像認識のアプリを作ってみます。 モデルはAppleのサイトにあるものを使います。 MobileNetV2FP16をダウンロードしてXcodeに入れて使います。 Xcode上で"MobileNetV2FP16"を選択すれば情報が表示されます。それをみると、 Dete

ちょっとアルゴニズム - Binary Search

基本のアルゴニズムです。配列の中の特定の数字を探します。このアルゴニズムの条件としては小さいものから大きいものへと並び替えが終わっているというのがあります。 Binary Searchの前に単純に配列の中の数字を探してみます。linearSearchと呼ばれるものです。 func linerSearch<T:Comparable>(_ list:[T],_ key:T)->Int?{ for i in 0..<list.count{ if key == l

はじめてみよう。プログラミング! - 変数

まずは"Python"を使ってみます。paiza.IOなどの準備した環境で a = "Hello" としました。このときの"a"が変数です。 いろんなものがこの変数で表すことができます。よく"箱"にたとられます。そして箱では表現できないぞ。ということでラベルをつけるという表現が良いとかいろいろです。言葉の定義なのですがあまり考えるとわからなくなるかもしてないので、こういうもんだと雰囲気で感じてもらえればいいです。 変数に数値、文字などを"="で指定することを代入と言い

ちょっとアルゴニズム - GCD,LCM

GCDとはGreatest Common Divisor、最大公約数です。最古のアルゴリズムということです。すごいです。 そこで、今回はLeast Common MultipleはLCM、最小公倍数の算出をしてみます。まず、GCD(最大公約数)ですが。Swiftで書きます。 func gcd(_ m: Int, _ n: Int) -> Int { let r: Int = m % n if r != 0 { return gcd(n, r) }

ちょっとアルゴニズム - Shuffle(Swift)

参考サイトをそのまま実行してもエラーが出るので少し修正してみます。 ひとつ目は、トランプようなのカードを一枚ずつ抜いて形で並び替えをする、抜くカードはランダムなので順序はバラバラになります。順番通りに並べるソートの逆の形になります。 extension Array { public mutating func shuffle() { var temp = [Element]() while !isEmpty { let i = Int.random(i

ちょっとアルゴニズム - Bubble sort!(Swift)

定番中の定番です。参考サイトです。 関数"func"にしてみます。あと入れ替えの部分を"swapAt"を使います。 func boble(_ array:[Int])->[Int]{ var arr = array for _ in 0..<arr.count{ for j in 1..<arr.count{ if arr[j] < arr[j-1]{ arr.swapAt(j, j-1)

ちょっとアルゴニズム - HeapSort

HeapSortをやってみます。これはちょっとわかりにくいですです。いろいろ調べてみましょう。 まず、ヒープって何?ということです。ヒープ構造というのは ヒープは半順序集合をツリーで表現したデータ構造です。親ノードは、子ノードよりも小さい(あるいは大きい)か等しいという条件を満たすツリー構造になります。子の関係に制約はありません。あくまで親子間での制約です。 ということです。 上記サイトはHeapSortって実際どうやって入れ替えていくの?というのがよく説明してありま

ちょっとアルゴニズム - Merge Sort(Swift)

まずMerge Sortを説明されているサイトを集めてみました。 その仕組みとしては、まずリストをバラバラにすることから始まります。 func mergeSort(list:[Int]) -> [Int] { guard list.count > 1 else { return list } let leftList = Array(list[0..<list.count/2]) let rightList = Array(list[li