投稿

7月, 2017の投稿を表示しています

コードを学ぼう2>⑥配列>⑥島を作る(大苦戦)

イメージ
コードを学ぼう2>⑥配列>⑥島を作る ここで大苦戦しました。 配列になってから、配列そのものの概念よりもその応用が多いような気がします。 そのため、このPlaygroundsの世界特有の難しさが際立って感じられます。 この1問で丸4日かかりました。 いや、4日半だったかもしれません。 苦心の結果ですが、答えをそのまま書いてしまってはあまりにも無粋なので「コードを学ぼう1」のアルゴリズムの右手法などで出てきた「疑似コード」にしてみました。 日本語にしただけなんですけどね。 それではまた。 //  2-6-6島を作る //  コードを学ぼう2>⑥配列>⑥島を作る //  7月20-24日深夜2時半過ぎ(25日)、やっとこの難問が解けた!飯もほとんど食わず酒も飲みたいと思わなかった。ただひたすら今日こそはこの問題を解きたかった。自分で作ったスケジュールより2日遅れている昨今、今日こそは解きたかった。 // 決め手は「コードを学ぼう2>⑥配列>⑤配列に追加する」を2回復習したことだった。答えはそこにあった。 定数 全座標 = 世界.全ての可能な座標 // 空の[座標]タイプの配列を2つ作成せよ 変数 島: [座標] = [] 変数 海: [座標] = [] for 座標ループ配列 in 全座標 {     if 座標ループ配列.列 > 2 && 座標ループ配列.列 < 9 && 座標ループ配列.行 > 2 && 座標ループ配列.行 < 9 {         // I(blockSet) love(append) you(coordinate).         島配列.追加(座標ループ配列)     } else {         // I(blockSet) love(append) you(coordinate).         海配列.追加(座標ループ配列)     } } // 島配列にブロックを設置せよ for 座標ループ配列 in 島配列 {     世界.設置(ブロック(), at: 座標ループ配列) } // 海配列に水を設置せよ for 座標ループ配列 in 海配列 {

中国でもじわじわと

日本企業や個人ブログの記事ももっと充実してほしい。 当BB-8遇到Swift Playgrounds - http://www.sohu.com/a/151856012_163917 中国でもSwift Playgroundsに関心を持つ人は増えつつあるようです。 中国語にローカライズされたのは日本語と同じくバージョン1.5だったはず?

次回の勉強会に向けて

  次回、勉強会にお邪魔させていただくのは第3回です( iPad と Swift Playgrounds ワークショップ・第3回 )。  唐突に勉強会の話をしましたが、準備会(第0回)から毎月一回参加させていただいております。 現在取り組んでいるSwift Playgroundsのコードを学ぼう2はなかなか難しく、Swiftの勉強としての難しさもさることながら、パズルとしての難しさも徐々に極まってきています。 後半になるとVoiceOver関連のバグも出始めて泣けてきます。 僕は晴眼者ですが、VoiceOverの研究も兼ねているので、勉強の合間になんとか文章をまとめてAppleに改善要望のフィードバックを送りました(いま確認してみたらまだAppのレビューページには載ってませんでした。まだ3日しか経っていないのでこんなもんですかね)。 さて、自分の勉強の進捗ですが、7月7日現在”コードを学ぼう2”の”ステージを作る>①道を作る”までクリアしています。 次回の勉強会までどのくらいの猶予があるのか心配になってきたので一日一歩進む程度の計算で間に合うかどうか書き出してみました。 コードを学ぼう2 7月7日 ステージを作る>①道を作る 7/8 ステージを作る>②道をつなぐ 7/9 ステージを作る>③ワープを作る 7/10 ステージを作る>④階段を置く 7/11 ステージを作る>⑤島を渡る 7/12 ステージを作る>⑥ループを作る(2日間) 7/13 ステージを作る>⑥ループを作る(2日間) 7/14 ステージを作る>⑦自分だけのステージ(3日間) 7/15 ステージを作る>⑦自分だけのステージ(3日間) 7/16 ステージを作る>⑦自分だけのステージ(3日間) 7/17 配列>①情報をまとめて保存 7/18 配列>②反復処理を試す 7/19 配列>③ブロックを積む 7/20 配列>④順番に並べる 7/21 配列>⑤配列に追加する 7/22 配列>⑥島を作る 7/23 配列>⑦取り除いた値を追加する 7/24 配列>⑧配列の範囲外エラーを直す 7/25 配列>⑨地形を作る 7/26 配列>⑩

本日気づきました

イメージ
致命的なミスに気づいた。 コードを学ぼう1の復習をしてたら、whileループの最初のところでforループで書いちゃってた(笑) でもこれ、whileじゃないほうがスッキリするんだよなぁ。 って言い訳はいけませんね(笑) (ところでこのブログ。比較的Googleのサービスは好きなんだけどアクセシビリティがイマイチな感じがするのはAndroidを持っていないせいだろうか。 10年ぶりにブログ書いてて、画像や写真にAltコメントを入れようと思ってもわからん。やり方があるんだろうか。無い気がする。) //  1-6-3 //  コードを学ぼう1>⑥whileループ>③正しいループを使う var gemCounter = 0 while gemCounter < 6 {     moveForward()     turnLeft()     moveForward()     collectGem()     gemCounter += 1     turnRight() } //  for i in 1 ... 6 { //      moveForward() //      turnLeft() //      moveForward() //      collectGem() //      turnRight() //  }

Swift Playgrounds、便利な物理キーボードのショートカットキー

イメージ
Swift Playgroundsでは、Bluetoothキーボードなどの物理キーボードを使用している場合、キーボードショートカットが使えます。 特にSwift Playgrounds特有のものはコマンドキー(⌘) を長押しすると半透明のポップアップウィンドウが表示され、見ることができます。 それは以下のとおりです。 Re-Indent ⇒ control I (インデントの修正) Shift Right ⇒ ⌘ ] (インデントを右にずらす) Shift Left ⇒ ⌘ [ (インデントを左にずらす) プレイグラウンドを実行 ⇒ ⌘ R ライブビューを切り替える ⇒ ⌘ return 次のページに移動 ⇒ ⌘ } 前のページに移動 ⇒ ⌘ { プレイグラウンドを閉じる ⇒ ⌘ W ペースト ⇒ ⌘  V コメントを切り替える ⇒ ⌘ / このなかで僕がよく使うのは、インデントの修正、プレイグラウンドの実行、ライブビューを切り替える、前後のページに移動、コメントを切り替えるの5つです。 なかなかの使用頻度ですね。 なかでもコメントを切り替える(⌘ /)はSwift Playgroundsに限らずありとあらゆるプログラミング言語で重要なショートカットキーですね。  バグの疑いのある行を複数一気にバーっとコメントアウトしてみたり、その部分のコードを修正している間も、修正前のコードを消さずにその場所にとどめておいて比較しながらバグ取り(デバッグ)したりと重宝します。 現在のバージョン1.5のソフトウェアキーボードにはこのようなキーボードショートカットやその代替機能はありませんが、期待したいところです。 閑話休題、パソコンを使っていても僕はもともとマウスよりもキーボード派なので思ったことをキーボードでやるのが好きです。 Windowsだと右手のマウスで右クリックメニューを出して左手で呼び出したい機能のシンボル文字を押して両手で作業します(シンボル文字とは、例えば右クリックメニューに「プロパティ(R)」とあればこの括弧内のアルファベットのRのこと) また、上記以外にも僕が重宝しているショートカットキーは以下のとおりです。 1行目に移動 ⇒ ⌘ ↑ 最終行へ移動 ⇒ ⌘ ↓ 行頭へ移動 ⇒ ⌘  ← 行末へ移動 ⇒ ⌘ → プレース