ProjectEulerをChatGPTと一緒に解く

最近、ProjectEulerの問題をChatGPTにサポートしてもらいながら解いている。 個人的なProjectEulerの課題 ProjectEulerの問題を解く上で、個人的な課題がいくつかある。 一つは、力技でしか回答を導けないことだ。 アルゴリズムや数学的な経験が豊富にある訳ではないので、結構しんどい場面に直面することが多い。 特に、問題の難易度が上がるにつれて、単純な計算力だけでは解けない数学的な洞察が必要になってくる。 もう一つは、数学的な背景知識の不足だ。 高校数学レベルでは太刀打ちできない問題もあり、途中で挫折しそうになることもしばしばある。 取り組み方 ChatGPTを使って入るが、取り組み方はシンプル。 まずは自分でやってみる。 問題文を読み、どのようなアプローチで解けるかを考え、問題文中の例を再現するプログラムを実装する。 この時点では自分なりのアルゴリズムを考え、コードに落とし込んでみる。 これで回答できたら良いのだが、もし詰まったらChatGPTにステップバイステップでヒントを貰いながら実装する。 いきなり回答を出力しないように、プロジェクトのプロンプトに注意書きしている。 具体的には「次のステップのヒントを一つだけください」というような形で情報を小出しにしてもらう。 完全に行き詰まった場合のみ、解法の方針を教えてもらうが、コードは自分で書くようにしている。 学習のために、解き終わった後はより効率的な解法がないか、数学的な知識を補完できないかをChatGPTに確認している。 感想 いくつかの問題に取り組んでみたが、感触としては良い。 ヒント有りだがとりあえず回答は出せているので、問題を解くモチベーションは続きそう。 単に答えを知るだけでなく、解法のプロセスを学べることもメリットとしてある。 「なぜそのアルゴリズムが効率的なのか」「どんな数学的性質を利用しているのか」といった背景も含めて理解できる。 数学的な興味と、プログラミング的な向上の両方を達成できると嬉しい。 プロンプト 上で書いたように、いきなり回答を出させないために、次のようなプロンプトを与えている。 あなたはProjectEulerに詳しいプログラマです ここでは、私からあなたにProjectEulerで出題された問題を共有します あなたは私に1つずつヒントを提供してください こちらから依頼するまで、直接答えを出すということはしないでください 実装はJuliaを使用します また、以下のUtils.jlが使用できます --- ...

March 22, 2025

claspで管理するGoogleAppScript

GoogleAppScript(= GAS)でアプリを実装し、これをclaspを使って管理できるようにしたのでメモ。 実装したもの 自分の習慣を管理するためのアプリを実装しました。 スプレッドシートをデータベースとして活用し、簡単なフォームを持ったアプリにしたかったので、GASを採用しました。 また、今回はローカル環境で実装・管理したかったため、claspを導入することにしました。 導入手順 GASアプリの実装 まずはGoogleドライブ上でGASプロジェクトを作成します。 スプレッドシートと連携する場合は、スプレッドシートから「拡張機能」→「Apps Script」を選択するのが便利です。 claspのインストール npmを使ってclaspをインストールします。 npm install -g @google/clasp 初期設定 claspを使ってGASプロジェクトをローカルに取得するための初期設定を行います。 まずはGoogleアカウントでログインします。 clasp login ブラウザが開き、Googleアカウントでの認証が求められるので、許可します。 使い方 プロジェクトの取得・更新 プロジェクトをローカルに取得するには: clasp pull ローカルの変更をGASプロジェクトに反映するには: clasp push デプロイ関連 アプリをデプロイするには: clasp deploy # デプロイによってアプリのURLが変わるのを防ぐため、最新のデプロイメントIDを取得して新しいバージョンとしてデプロイする clasp deploy --deploymentId $(clasp deployments | tail -n1 | awk '{print $2}') デプロイ一覧を確認するには: ```bash clasp deployments これでローカル環境でGASの開発ができるようになり、Gitなどのバージョン管理ツールとも連携できるようになりました。 特にチームでの開発や、複雑なアプリケーションを作る場合には非常に便利です。

March 16, 2025

ADBをMacOSでインストールする

Flutterで実装したアプリを端末にいれるため、ADBというツールを使用した。 これのインストール方法のメモ。 きっかけ Flutterで実装したアプリを実機にインストールしたいと思い、方法を調べていた。 調査の結果、Androidデバイスにアプリをインストールするには「ADB (Android Debug Bridge)」というツールが必要だということがわかった。 うまくいかなかった方法 公式ドキュメントによると、ADBは「Android Studio または SDK Platform Toolsとして提供している」とのこと。 公式ドキュメント 最初にAndroid Studioを使って Android SDK Platform-Tools をインストールしたが、なぜかADBツールが有効にならなかった。 うまくいった方法 結局、Homebrewを使ってインストールすることで解決。 brew install android-platform-tools これで adb コマンドが使えるようになった。 使い方 接続されている端末の確認 まず、接続されているAndroidデバイスを確認する。 adb devices これを実行すると、接続されているデバイスのIDが表示される。 アプリのビルドとインストール Flutterアプリをビルドして、ADBでインストール。 # APKをビルド flutter build apk # デバイスにインストール adb -s <DeviceID> install ./build/app/outputs/apk/release/app-release.apk <DeviceID> の部分は、先ほど adb devices で確認したデバイスIDに置き換えてください。 これでFlutterで開発したアプリを実機にインストールすることができる。 まとめ MacOSでADBをインストールする場合は、Android Studioからではなく、Homebrewを使う方法で解決した。

March 14, 2025

Google Could Associate Cloud Engineerに合格した

Google Cloud認定試験「Associate Cloud Engineer」に合格したのでメモ。 前提 私のバックグラウンドとしては以下の通り。 プログラマーとして働いている AWSを使った経験はある Google Cloudを使った経験はない Google Cloudの知識がほぼゼロの状態からのスタートした。 勉強方法 本で基礎知識を身につける まず、Google Cloud関連の本を購入して一通り読んだ。 (模擬問題付き)徹底攻略 Google Cloud認定資格 Associate Cloud Engineer教科書 | 根本 泰輔, 奥村 健太, 前山 弘樹, 中野 慎也, 坂田 功祐, 久保 航太, 佐塚 大瑚 |本 | 通販 | Amazon この時点ではGCPを使ったこともなかったので、基本的な概念やサービスの概要を理解するのに役立ちました。 Udemyで動画学習 次に、Udemyで提供されているGoogle Cloud Associate Cloud Engineer向けの講座を受講。 Google Cloud認定 Associate Cloud Engineer(ACE)合格コース | Udemy 自分が購入した講座は、情報は古かったが資料の内容が充実していたのが良かった。 また、ハンズオン動画も含まれているので、実際にGoogle Console上で試して理解を深めることができました。 模擬試験で実力チェック Udemyの模擬試験問題を解いて、問題の雰囲気と自分の理解度を確認しました。間違えた問題は特に重点的に復習。 4回分の模擬試験を各10回ずつ程度やりました。 これだけで合格!Google Cloud Associate Cloud Engineer模擬試験問題集(4回200問) | Udemy 注意点として模擬試験の中には、回答や解説が間違っていると思われるものもありました。そういった場合は:...

February 16, 2025

Cursorエディタを使い始めた

最近、生成AI関連のツールを色々試している。 特に気になっていたCursorエディタを使い始めた。 Cursor - The AI Code Editor 基本的にはVSCodeをベースにしたエディタで、見た目や操作感はほとんど変わらない。 AIを活用した機能が多く組み込まれていて、チャットに打ち込むことで新しいファイルを作成したりできる。 VSCodeの拡張機能もそのまま使えるので、今までの環境を大きく変えずに導入できるのも嬉しい。 ちょっとしたコード補完だけでなく、大きなコードのリファクタリングや新規機能の提案にも使えるので、どこまで活用できるか試してみたい。 また、Clineも気になっている。こちらはエディタに組み込むAIツールのようで、CursorでできることをVSCodeでもできるようになるらしい。 今年はAI関連のツールを積極的に使っていくつもり。エディタだけでなく、タスク管理やドキュメント生成、コードレビューなど、色々な分野でAI関連ツールが出てきているので試していきたい。

February 11, 2025

三國無双 ORIGINS やってます

2025/02に発売された 三國無双 ORIGINS をやっているのでメモ はじめに 個人的には真・三國無双以来でプレイした三国無双シリーズ。 自分がやったときは武将を操作して進めていく形式だったが、本作はオリジナルキャラクターとなって原作三国志の流れをなぞっていくというスタイルになっている。 良い点 原作三国志の流れを追うことができる 史実に沿ったストーリー展開で、三国志の世界観を楽しむことができる。 これは過去作もそうだったが、戦場操作以外に武将との会話パートも発生し、より史実の展開を追える作りになっている 武将と交流し、一緒に戦場に立つことができる これは過去作でもできたが、今作は戦場での同行武将を選ぶことができるようになっている。 複数の武器を使うことができる 主人公は複数の武器を使うことができ、徐々に扱う武器種が増えていく。 色々な武器を使いこなすことがキャラの成長にもつながるので、武器種を増やす・強い武器を集める・使いこなすというサイクルが必要になっている。 気になった点 三国志武将として活躍することができない 真・三國無双では武将としてプレイできる楽しさがあったが、本作ではオリジナルキャラクターのみのプレイできる。(戦場で同行武将に交代することはできる) 個人的には武将としてプレイしてIFを楽しむのも好きだったので、すこし残念ではある。 武器の熟練度上げが作業になりがち 前述の通り、キャラの成長のためには複数の武器種で熟練度を上げる必要がある。 基本的には「敵を何体倒したか」が必要になるので、「難易度を下げて敵が多く出るシナリオを周回する」というのが最適解っぽいので、ここまで来ると作業感が出てくる。 総評 全体としてはとても面白いゲームだと思った。 また、初期は待ち人の小言が気になりましたが、最近のアップデートでオフにできるようになったのは嬉しい改善点。 三国志の世界観が好きな方や、アクションゲームが好きな方にはおすすめできる作品です。 自分はこのゲームをやってYoutubeや本で三国志関連のものをあさり始めました。

February 11, 2025

zshの繰り返し処理を生成AIに聞いてみた

普段fish shellを使っているが、久しぶりにzshで繰り返し処理を実装が必要になったので生成AIに訪ねてみた。 その時の回答。 #!/bin/bash for file in /path/to/files/*; do echo "Processing: $file" # do Something end 自分で書いたときは do がなくて動かなかったが、聞いてよかった。 ls を使わなくてもワイルドカードで一覧を参照できるのは新しい発見でした

February 4, 2025

Neovim + MasonでLanguageServer.jlを使えるようにする

0. neovim上でmasonを使えるようにしておく neovimのlsp client管理はMasonにまかせているので、これらはすでに設定済みとする 1. Masonでjulialsをインストールする NeovimのMasonの画面上で、julialsをインストールする 2. LanguageServer.jlをインストールする nvim-lspconfigの設定一覧にあるjulialsの内容に沿ってLanguageServer.jlをインストールする https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#julials Mason上ではjulialsとなっているが、対象になるLSPはLanguageServer.jlなので注意 3. nvim-lspconfigの設定を追加する Masonの設定が完了していたらこの工程はスキップしてOK nvim-lspconfigの設定項目に以下を追加する require'lspconfig'.julials.setup{}

December 13, 2024

uvを使ったPythonのプロジェクト管理

uvというツールの存在を知ったので使ってみた。 uv astral-sh/uv: An extremely fast Python package and project manager, written in Rust. pip・poetry・virtualenvなどの置き換えが可能で、高速に動く。 Pythonのバージョンや、Pythonプロジェクトの管理もできる。 スクリプトのインストールも可能で、uvから実行することも可能。 と言う感じなので、最近のパッケージ管理系ツールのいいところ全部入りという感じ。 インストール Installation | uv macを使っていれば、Homebrewでインストールできる。 brew install uv また、shellのオートコンプリートにも対応しているので、ついでに設定しておくとよい。 # fishの場合 echo 'uv generate-shell-completion fish | source' >> ~/.config/fish/config.fish Pythonのインストールと管理 Installing Python | uv uv python install 3.12 ツールのインストールと実行 Using tools | uv uvxコマンドを使用する このとき、まだインストールされていないツールが実行された場合は、自動でインストールされる。 uvx pycowsay hello from uv プロジェクトの作成・実行 initコマンドを使用する これを実行すると、pyproject.tomlや.venvなど必要なものが作成される。 また、インストールされたライブラリのバーションはuv.lockに記録される。 # 新規作成 uv init my_project # 既存のディレクトリをuvで管理する cd /path/to/my_project uv init

September 8, 2024

今日はKREVA(908)の日

です。

September 8, 2024