ChatGPT関連のニュースを最初めちゃくちゃ嫌っていたうちの母親(57歳の主婦)が実際に使い始めたらどハマりしてしまったらしい。それだけなら面白いもんだが2ヶ月前、遂に「OpenAIのエンジニアになる」と言い出した。ちなみに母は一度も日本から出たことはないしプログラミングやIT系に勤務した経験もない。 ニューハンプシャー州にあるコミュニティカレッジのオンライン英語学習コースとCamblyというアプリで英会話やライティングを勉強しながら、Pythonやデータ構造、アルゴリズムの勉強をしている。本を読んで色々作りながらPython Certificationsという試験の勉強をしているらしい。 俺は2ヶ月前まで色々パソコンの基本的な使い方やファイルとかフォルダの違いについて教えていたが、もう多分母の方が詳しい。その情熱を数十年前に俺の教育に注いでくれればよかったのに。まあボケ防止にはなるだろ
C言語講座>サイトマップ C言語講座:初級から中級まで プログラム言語は、自然言語とコンピュータ言語との間にある人工的な言語です。この講座では、C言語を学びます(開 設:2000.09.01)。 [サイトマップ][ガイダンス][C言語講座の出入り口][アルゴリズム研究室][ソースのコンパイル][C言語の作法][”C言語流”文章作成講座][お断り][使えるリンク集] [言葉は記憶の彼方へ] 死語、半死語、現行語、専門用語、業界用語、隠語。 [ハイテク昔話] 古い経験を、ただ古いだけの私がご紹介します。 [英単語に見える16進数] 病気か?死ぬの? [絵のない絵本式乗馬教室] 頭の中に馬を飼ってみませんか。 [プロフィール] [パクられました。][またパクられました。][またまたパクられました。] リンクはご自由に。メールはfujinoy@+cts.ne.jp(”+”を削除)へ。 C言語講座>
2019年9月16、17日、日本最大のPythonの祭典である「PyCon JP 2019」が開催されました。「Python New Era」をキャッチコピーに、日本だけでなく世界各地からPythonエンジニアたちが一堂に会し、さまざまな知見を共有します。プレゼンテーション「入門 自作検索エンジン」に登壇したのは加藤遼氏。講演資料はこちら 検索エンジン自作の入門編 加藤遼 氏:普段はサーバサイドの開発やAPI、検索まわりをやっています。技術的にはPythonやElasticsearchがメインです。このセッションにこんなに人が来ると思っていなかったので、これだけ集まってくれて大変ありがとうございます。 ここに来たということは、みなさん検索に多少なりとも興味がある方だと思います。なのでちょっとだけ宣伝させてください。検索技術勉強会という勉強会のスタッフをやってます。これは特定のライブラリに関
MATLAB は思考や作業プロセスに合うように設計されています。 MATLAB は、反復的に実施する分析や設計プロセスに適したデスクトップ環境、そして行列と配列の数学を直接表現するプログラミング言語が 1 つに組み合わさっています。 各分野の専門家による製品開発 MATLAB ツールボックスは各分野の専門家により開発され、厳密なテストを経ており、仕様はドキュメンテーションに詳細にまとめられています。 対話型アプリ MATLAB アプリを使用することで、異なるアルゴリズムが特定のデータを使用してどのように動作するかを確認できます。望ましい結果が得られるまで作業を繰り返し、その後 MATLAB プログラムを自動的に生成して作業の再現や自動化が可能です。 スケーラビリティ わずかなコード変更で、クラスター、GPU、またはクラウドでの実行まで分析を拡張できます。コードを書き直したり、ビッグデータ
はじめに このドキュメントは,主に競技プログラミングで出題される問題を解く際に利用できるアルゴリズムやデータ構造をまとめたものです.特定の問題にはあまりフォーカスしないため,問題を解く際の考察の仕方等の内容はありません.詳しく,正確に,分かりやすく書いていこうと思っています. このドキュメントは執筆途中です. 想定する読者 C++を用いたプログラミングに慣れている方を読者として想定しており,C++言語の仕様や,文法にはあまり触れません.また,計算量という用語についても説明しません.ただし,償却計算量など,計算量の見積もりが複雑なものについては必要に応じて説明します. コードについて このドキュメントで登場するコードは,可読性向上のため,以下のようなコードがファイルの先頭に記述してあることを前提としています.また,適切な問題を用いてコードの検証がなされている場合は,コード周辺にのように,検証
序章 はじめに リバーシのルール ソースコードの記述について 第1章 盤面の処理 1.1 定数と関数の定義 1.2 盤面の生成、初期化 1.3 石を返す処理 1.4 返せる石数を調べる処理 1.5 盤面をコピー、反転させる処理 1.6 その他の盤面処理 1.7 盤面の操作と表示 第2章 ゲーム木と探索 2.1 コンピュータ思考の関数定義 2.2 各関数の実装 2.3 ゲーム木 2.4 MinMax法とNegaMax法 2.5 αβ法 第3章 盤面の評価 3.1 評価関数の定義 3.2 パターンによる局面評価 3.3 評価クラスの構造 3.4 評価クラスの生成とファイルの読み書き 3.5 評価関数の実装 3.6 評価パラメータの更新 3.7 中盤の探索 3.8 自己対局による学習 第4章 性能改善 4.1 石数取得の高速化 4.2 着手の高速化 4.3 候補手リストの導入 4.4 終盤探索の
まえがき クラウド上の仮想サーバから手元のスマートフォンまで、いまや複数のCPUコアを搭載するマルチコアはどこにでもある環境になりました。ハードウェア側が並列(Parallel)・並行(Concurrent)処理に向けて急速に進化する一方で、ソフトウェア側つまりプログラミング言語の進化はさほど追い付いていません。並行処理記述の手軽さを求めた Go言語 や、マルチスレッド処理の安全性を重視する Rust言語 などが登場してはいるものの、「普通にプログラムを記述するだけで複数CPUコア環境で高速に走るプログラミング言語」は遠い夢物語のままです。 モダンなプログラミング言語や並列・並行処理ライブラリは、複雑で難解なマルチスレッド処理を直接記述しなくてすむよう、安全性・利便性の高い抽象化レイヤを提供します(例:Go言語のgoroutineとchannel、Rust言語の Rayonライブラリ)。し
競技プログラミングの問題を解くためには2つのステップがあります。 問題で要求されていることを言い換える知っているアルゴリズムやデータ構造を組み合わせて解く 必要な(知っておくべき)アルゴリズムやデータ構造は色々なところで学ぶことができます。 しかし、「問題の言い換え」や「アルゴリズムを思いつく」というのは、非常に様々なバリエーションがあり、問題をたくさん解かないとなかなか身につきません。 そこで、この記事は以下のことを言語化し、練習のための例題を提示することを目標とします。 問われていることを、計算しやすい同値なことに置き換える方法アルゴリズムを思いつくための考え方競技プログラミングで「典型的」と思われる考え方 ※一部問題のネタバレを含むので注意 ※良く用いられるアルゴリズムやデータ構造については競技プログラミングでの典型アルゴリズムとデータ構造 を参考にして下さい。 入力の大きさ(制約)
(追記)JavaScriptで実装してみました 昔、何かの雑誌*1でマリオのジャンプの実装法を見た覚えがあって、あの放物線運動は、 マリオの速度ベクトルを保存しておいて座標を計算するんじゃなくて、 マリオの前回の座標を保存しておいて座標を計算しているんだそうです。 y_temp = Mario.y; Mario.y += (Mario.y - Mario.y_prev) + F; Mario.y_prev = y_temp;Fはその瞬間の力で、ジャンプの瞬間はF=10にして、空中ではF=-1にします。 するとこんな放物線になります。 [0,10,19, 27, 34, 40, 45, 49, 52, 54, 55, 55, 54, 52, 49, 45, 40, 34, 27, 19, 10, 0] 加減算しか使わないので、非常に高速にできたと。 これがVerlet積分に似ているなと思った
先日、気持ちのいいジャンプを目指してというQiitaの記事を見かけました。記事中では、マリオのジャンプについても触れられています。マリオというと、マリオブラザースやスーパーマリオブラザース等々、色々あるのですが、これはおそらくスーパーマリオブラザースの事だと思われます。ジャンプアクションゲームといったらスーマリですね。 そのマリオのジャンプの仕組みは「マリオの速度ベクトルを保存しておいて座標を計算するんじゃなくて~」と書かれていて、別サイトのブログへのリンクが張られています。 マリオのジャンプ実装法とVerlet積分 ただ、この記述については不正確であるという別のブログもあったりします。 マリオの完コピvol.28 ジャンプの解析と修正 ホントのところはどうなんでしょうか?世界で最も有名なゲームのジャンプがどのように処理されているのか気になったので調べてみることにしました。 原典にあたる
情報科学科の卒業生やプログラマの中には、UberやNetflixのような新興企業や、 Amazon 、 Microsoft 、 Google のような大企業や、InfosysやLuxsoftのようなサービスを基本とする企業で、プログラミング、コーディング、ソフトウェア開発の仕事に就きたいと考える人が大勢います。しかし、実際にそういった企業で面接を受ける場合、大半の人が プログラミングに関してどのような質問をされるか 見当もつきません。 この記事では、 新卒生からプログラマになって1〜2年までの 経験値が異なる人たち向けに、それぞれの プログラミングの面接でよく聞かれる質問 をいくつか紹介していきます。 コーディングの面接では、主に データ構造とアルゴリズムに基づいた質問 がされますが、 一時変数を使わずにどのように2つの整数をスワップするのか 、というような論理的な質問もされるでしょう。
アルゴリズムを楽しく学ぼう! 独習に役立つWebサイト・参考書・競技プログラミングを紹介〈13選〉 プログラムの性能を改善して開発スピードを向上させるため、アルゴリズムを気軽に、かつ楽しく学べるWebサイトや書籍など、13種類のさまざまなコンテンツを紹介していきます。 アルゴリズム(algorithm)とは何なのでしょうか? 例えば、 Wikipediaにはこうあります。 アルゴリズムとは、数学、コンピューティング、言語学、あるいは関連する分野において、問題を解くための手順を定式化した形で表現したものを言う。 「問題を解くための手順を定式化した」とは、ソフトウェアエンジニアにとって「プログラミング」のことです。 みなさんも日々の開発業務において、問題(要件)を解くための手順を考え、その手順を特定のプログラミング言語で表現していませんか? アルゴリズムは、一般に「ソート(整列)」や「探索」と
申し訳ありません。お探しのページが見つかりません。 ページが削除されているか、将来作成される予定のページに対するリンクを選択されたかもしれません。 以下のリンクから、目的に近いページへ移動されるか、検索窓を使ってページをお探しください。 Programming Place Plus のトップページ C言語編のトップページ (旧)C++編のトップページ 新C++編のトップページ アルゴリズムとデータ構造編のトップページ 用語集のトップページ 参考書籍のトップページ
ちょっと前にホットエントリーしていた Cygames さんのエンジニアブログの記事に、こういうものがありました。 ゲームAI -基礎編- 『知識表現と影響マップ』 | Cygames Engineers' Blog 一応、ゲーム業界に身を置いてはいますが、最近こういうコード書いてないなぁと気になっていたので、今回から複数回に分けて、ゲームAI(と言っていいのだろうか)の記事を書いていこうと思います。 まず、最初は Cygames さんの記事を追いかけるところから始めたいと思いますので、件の記事で使われているダイクストラ法を取り上げたいと思います。 ダイクストラ法について ダイクストラ法は最短経路を導き出す時に使われるアルゴリズムで、Cygames さんの記事では「脅威度マップ」・「アイテムの狙いやすさマップ」を作成する際に、各オブジェクトからすべてのセルへの距離を算出する方法として使用され
ゲームプログラミングがプログラミングの学習に適している理由 ゲームプログラミング概要 ゲームプログラミングはプログラミングの学習に非常に適しています。 これは、大学やコンピュータ専門学校などの教育機関がプログラミング学習のために生徒にゲームを作成させている学校が多く存在していることからも頷けると思います。 この記事では、その理由について考えていきます。 プログラミングの学習は大別すると3つの要素に分けることが出来ます。 ①アルゴリズムを導き出すスキルを身につけること ②OSやプログラミング言語が提供している構文やメソッド等を覚えること ③コンピュータのしくみを理解すること ②の「OSやプログラミング言語が提供している構文やメソッド等を覚えること」というのは、参考書やヘルプを見ながら実際にプログラムを作っていくうちに自然と、時間をかけて覚えていくものです。 短時間で全てを覚え、理解するのはと
モバイルゲーム 物凄い勢いで勃興したモバイルゲーム業界は、いろいろな課題や問題に直面しながらも巨大化し、今日の時点でのスマートフォン向けゲームの市場へと継承されていきます。 モバイルゲームの歴史 2001 Javaアプリと3Dゲームの登場 Javaが利用できるようになったことにより、ダウンロード型のゲームが供給できるようになりました。 2002 携帯電話端末の大容量化・3D化競争 Java搭載携帯電話端末が登場してからごく僅か1年の間に、アプリのサイズに関しては10倍に広大化し、表現方法も2Dから3Dにシフトし始めました。J-PHONEは『ゼビウス』や『スペースハリアー』などといった昔のアーケードゲームを、ドコモはSIMCITYなどパソコンで世界的規模のヒットを飛ばしたゲームを主力商品としていました。 2003 モバイルゲームの一般化 メモリの制限が厳しいJava仮想マシン上ではなく、OS
たくさんのデータを大小関係に従って、小さい順(昇順)や大きい順(降順)に並び替える作業はソート(整列)と呼ばれ、ソフトウェア・プログラムではよく使われています。このようなソート作業を行うために並び替えの方法を手順化したのが「ソート・アルゴリズム」で、アイデアを理解すると「ほほー、なるほど」と思えるのですが、複雑すぎて理解しづらいものもあります。そんなソート・アルゴリズムの中でも有名で、仕組みを理解しておきたいものばかりを題材に、なんとフォークダンスに合わせてアルゴリズムを表現するムービー集「AlgoRythmics」が公開されており、学習効果があるかどうかは脇に置いて、思わず見入ってしまう魅惑のムービーとなっています。 最も有名なソート・アルゴリズムの一つである「バブルソート」をハンガリーのフォークダンスにのせて表現するのが「Bubble-sort with Hungarian ("Csá
プログラムで使うことの多い「乱数」。ゲーム開発やビジュアルアート、ウェブサイトのアニメーションにおいて乱数は非常に重要で、さまざまな用途で利用されています。プログラムで一般に乱数と聞くと、すべての数値が同じ頻度(分布)で出現する「一様乱数」と呼ばれる乱数をイメージする方が多いと思います。 多くの場合はこの「一様乱数」で取得した乱数を用いれば十分でしょう。しかし、場合によっては「一様乱数」ではなく、偏りのある乱数を用いることでコンテンツの見た目や現象の「自然さ」を演出することが可能です。 実は「一様乱数」に一手間加えることで、乱数の分布の偏りを制御できます。今回は乱数を使用して好みの分布を得るためのパターンをいくつか紹介します。 乱数分布のシミュレーションデモ (HTML5製) 次のデモはリアルタイムで乱数の出現頻度を計算し、グラフに可視化するコンテンツです。画面下のプルダウンで乱数の種類を
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く