本書では落ち物パズルゲームとして有名なテトリス風ゲームの開発を通してRust言語を学ぶことを目的としています。 テトリスを知らない方でも問題なく読み進めることができます。 先ずは理解しやすいコードでシンプルな落ちものパズルゲームを実装し、後にリファクタリングや機能追加、自動化をしていく流れで構成されています。 テトリスにも様々な種類がありますが本書ではCUIでワールドルールを参考にして完成を目指します。
0. 目次 1. クッキークリッカーとは? 2. クッキークリッカー100万枚RTA 3. 解答? 4. 解答 5. 余談 6. おわりに 1. クッキークリッカーとは? 皆さんはクッキークリッカーというゲームをご存じでしょうか? 2013年に公開され同年に日本でも爆発的に流行を見せたゲームです。知らないよという方もご安心ください、最初の方だけですがざっくり説明します。 上の画像がプレイ画面です。左にあるクッキーをクリックします。 クッキーが1枚焼けました。やったね。 クッキーが15枚貯まりました、右側にあるカーソルをクリックしてみます。 指はどこだ!? クッキーの周りにある指が10秒に1回クッキーをクリックしてくれます。助かるー。 100枚貯まりました。アップグレード「強化された人差し指」を買ってみます。 クッキーの上に、クリックした回数分「+2」と書かれています 1回のクリックでクッキ
序章 はじめに リバーシのルール ソースコードの記述について 第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 終盤探索の
こんにちは、@p1assです。 最近研修で Go を書いていて、その際にいくつか質問をされるのですが、聞いてみると前にも答えたような質問が多かったので、これを機にブログに参考リンクをまとめようと思います。 質問された際にすぐ答えられない質問も数多くあり、調べたり教えてもらったりすることで様々なことを再発見できました。 この記事では、質問に対する回答をできるだけ公式に近い文章を引用する形で書き記します。私個人の考えは別の段落になるようにして、事実と意見を区別するように心がけています。 なにか誤りを見つけた際は GitHub で PR を投げていただけると助かります。 言語仕様 関数の引数は値渡しか参照渡しか? Go はすべて値渡し (pass by value) です。 ポインタの場合は、ポインタそのものがコピーされポインタの指し示す先の値はコピーされません。 Go の多値返却はタプルか?
0. はじめに こんにちは、大学 1 年生になったばかりの E869120 です。本記事は、 アルゴリズム・AtCoder のための数学【前編:数学的知識編①】 アルゴリズム・AtCoder のための数学【中編:数学的知識編②】 からの続きです!!! ※前編・中編を読んでいなくても理解できる、独立したトピックになっているので、ご安心ください。 後編から読む方へ 21 世紀も中盤に入り、情報化社会が急激に進行していく中、プログラミング的思考やアルゴリズムの知識、そしてアルゴリズムを用いた問題解決力が日々重要になっています。 しかし、アルゴリズム構築能力・競プロの実力は、単純にプログラミングの知識を学ぶだけでは身につきません。近年、数学的なスキルが重要になりつつあります。実際、私はこれまでの経験で「数学の壁で躓いた競プロ参加者」をたくさん見てきました。そこで本記事では、 AtCoder のコン
指針 厳密解法に対しては、解ける問題例の規模の指針を与える。数理最適化ソルバーを使う場合には、Gurobi かmypulpを用い、それぞれの限界を調べる。動的最適化の場合には、メモリの限界について調べる。 近似解法に対しては、近似誤差の指針を与える。 複数の定式化を示し、どの定式化が実務的に良いかの指針を示す。 出来るだけベンチマーク問題例を用いる。OR-Libraryなどから問題例をダウンロードし、ディレクトリごとに保管しておく。 解説ビデオもYoutubeで公開する. 主要な問題に対してはアプリを作ってデモをする. 以下,デモビデオ: 注意 基本的には,コードも公開するが, github自体はプライベート そのうち本にするかもしれない(予約はしているが, 保証はない). プロジェクトに参加したい人は,以下の技量が必要(github, nbdev, poetry, gurobi); ペー
この記事でお題にするのはCPUレジスタ上の整数除算です。以下、単に除算とも書きます。 除算は非常に高コストな演算なため、コンパイラは最適化によって、できるだけ整数除算を別の計算に置き換えようとします。 最適化ができる場合の一つとして、割る数が定数である場合があります。頭のいいコンパイラは、除算を乗算とビットシフト等を駆使した演算に置き換えます。この記事では、そういった最適化の背景にある理屈を部分的に解説します。 計算機環境としてはモダンなx86 CPUを仮定します。したがってレジスタは32/64ビットであり、負数は2の補数表現になっています。ある程度は他の命令セットでも通用する話になっているかもしれません。 そもそも整数の除算とは プログラミングにおける整数の除算の定義について確認します。整数$n$を整数$d$で割るとき $$ n = q \times d + r $$ が成り立つように除
Filter fonts0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
概要 チームによる継続的開発を前提としたコーディングのガイドライン。 特定の言語を対象としたものではないが、主に静的型付けのオブジェクト指向言語を想定している。 サンプルコードは別段の定めがなければSwiftで記載。 ガイドラインの目的 生産性を高め、メンテナンスコストを下げる バグが生まれづらくする 開発メンバー(特に新規参加者)がコードを理解しやすくする 初心者プログラマーの教育 内容の説明 タイトルの頭についた【数字】は重要度。 高いほどシステムに与える影響が大きいが、低いものの方が影響が小さく改修しやすいものが多い。 【5】変数のスコープを小さくする 変わり得る値は複雑さを生み誤解やバグに繋がるため、プログラムは変数が少ないほど問題が生まれづらい。 プログラミングの大原則として、変数は必要最低限を心がけ、むやみに増やさないようにする。 また、変数はスコープや寿命が大きいほど悪影響が
メルペイ エキスパートチームの@tenntennです。本稿は Merpay Tech Openness Month の11日目の記事です。 「プログラミング言語Go完全入門」の期間限定公開のお知らせでも書いたように、メルペイでは、社外の方向けにGopher道場という体系的にGoを学べる場を無償で提供してきました。Goの普及を目的にこれまでに8回開催し100人以上の方に参加していただきました。 また、Gopher道場の動画や資料はGopher道場 自習室として誰でも利用できるようになっており、現時点で300名以上の方が利用されています。 Gopher道場の資料のベースになっている「プログラミング言語Go完全入門」は、2020年7月31日までの限定公開になっていましたが、本日より公開期限を撤廃し、完全公開することになりました。 また、本日8月31日から始まる「Online Summer Int
はじめに 2020/8/12に発売されたImpractical Python Projects: Playful Programming Activities to Make You Smarterの日本語訳書である、「実用的でないPythonプログラミング」をひょんな事から献本していただく事になった。(訳者が同僚である) 実用的でないPythonプログラミング: 楽しくコードを書いて賢くなろう! 作者:ヴォーン,リー発売日: 2020/08/12メディア: 単行本 ありがちなプログラミング初学者向けの本から1段上がった中級者向けの良い本だと感じたので、当ブログでたまにやっている筆者、訳者に媚びを売るシリーズの一貫として、感想を記す。 書籍の概要 「実用的でないPythonプログラミング」は、想定する中級レベルのアルゴリズムの問題を例に取り、Pythonでの美しいコードの書き方や、コンピュ
最後に、17 章で PとNPに関する話題を解説し、世の中には「効率的に解くアルゴリズムを設計することができそうにない難問」が多数あることを見ます。18 章で、これらの難問に取り組むための方法論をまとめます。 競プロをやっている方向け 扱っている題材の難易度については、こんな感じのイメージです! チーター本 < 本書 = 螺旋本 < 蟻本 難易度が近い螺旋本は、スタンスが異なる部分もありますので、よい形で共存できたら、という想いです。 螺旋本と比べると、「動的計画法」「貪欲法」「二分探索法」などの設計技法に関する話題をより重視しています 螺旋本は「ライブラリを揃えていく」という思想なので、設計技法よりもライブラリになるものを重視する立場です 本書では、紙面の都合で「計算幾何学」と「整数論」には触れられませんでしたが、これらは螺旋本には載っています 2-2. 本書の対象読者 本書は、「アルゴリ
縁あって、カロリーメイトリキッドのプロモーション用にちょっとした Ruby プログラムを書かせてもらいました。 www.otsuka.co.jp ↑のリンクを開いて、cd .Quine したところにある CML_quine.rb がそれです。 cat CML_quine.rb とすると中身が見えます。ruby CML_quine.rb すると動きます。 CalorieMate-Liquid-Quine 実行してみましたか?サイト上で気楽に実行できるので、ぜひ試してみてください。 これがどういうプログラムなのか、簡単に解説しておきます *1 。 ローカルでの遊び方 サイト上で ruby CML_quine.rb をするだけでも楽しめますが、自分のパソコンに保存するとより楽しめます。 まず、cat CML_quine.rb した中身をまるごとコピーしてください。 n=2;で始まる行の頭から、'
本書ではPythonを使い、火星や木星や銀河の最果てを、詩人の魂を、高度な金融の世界を、選挙の不正を、ゲーム・ショーのトリックを、探っていく。マルコフ連鎖解析のような技術を使って俳句を詠み、モンテカルロ・シミュレーションで金融市場をモデル化し、イメージ・スタッキングで天体写真を改善し、遺伝的アルゴリズムで巨大なネズミを育てる。それとともにpygame、Pylint、pydocstyle、tkinter、python-docx、matplotlib、pillowといったモジュールの経験を楽しく積むことができる。 この本は2冊目のPythonの本とみなすことができる。完全な初心者向けの本や入門クラスの後に続く本、あるいは補完する本となることを狙っている。「impractical」(実用的でない)というタイトルに反して、本書の内容はかなり実用的で、文字列やコレクションの操作といった基本的なことか
競技プログラミングなどで頻出のテーマである組み合わせゲームやGrundy数についてまとめました。 前半は全ての方に向けての内容で、プログラム例や競技プログラミング特有の話題については後半にあります。 組み合わせゲームとは 組み合わせゲーム(Combinatorial games)とは以下のような特徴を持った二人で行うゲームのことを言います。 確定:ランダム性がない完全情報:全ての情報が全てのプレイヤーに公開されている 組み合わせゲームの例 以下のような多くのゲームが組み合わせゲームに分類されます。 オセロ将棋チェス囲碁Nim… これらのどれもが、二人で行うゲームで、確定であり完全情報でもあります。 特殊な組み合わせゲーム 組み合わせゲームの中でも特殊な性質を持つものは名前がついており、解析がしやすいものがいくつかあります。 二人零和有限確定完全情報ゲーム 組み合わせゲームに以下の性質がつい
競技プログラミングの問題を解くためには2つのステップがあります。 問題で要求されていることを言い換える知っているアルゴリズムやデータ構造を組み合わせて解く 必要な(知っておくべき)アルゴリズムやデータ構造は色々なところで学ぶことができます。 しかし、「問題の言い換え」や「アルゴリズムを思いつく」というのは、非常に様々なバリエーションがあり、問題をたくさん解かないとなかなか身につきません。 そこで、この記事は以下のことを言語化し、練習のための例題を提示することを目標とします。 問われていることを、計算しやすい同値なことに置き換える方法アルゴリズムを思いつくための考え方競技プログラミングで「典型的」と思われる考え方 ※一部問題のネタバレを含むので注意 ※良く用いられるアルゴリズムやデータ構造については競技プログラミングでの典型アルゴリズムとデータ構造 を参考にして下さい。 入力の大きさ(制約)
お久しぶりです! アルゴリズムと整数好きのけんちょんです! 今回は俗に「数学ゲー」と呼ばれるタイプの問題のうち、整数について語ります。 【他シリーズ】 AtCoder 版!マスター・オブ・整数 (最大公約数編) エラトステネスの篩の活用法を総特集! 〜 高速素因数分解・メビウスの反転公式 〜 フェルマーの小定理の証明と使い方 拡張ユークリッドの互除法 〜 一次不定方程式 ax + by = c の解き方 〜 (書籍画像は amazon ページ より) 追記:整数問題を練習できるオンライン教材 本記事に準拠した、整数アルゴリズムを学べるオンライン教材を作ってみました。素数判定から始めて、段階的に学べる教材としました。 整数問題などのオンライン練習問題集 1 問 1 問は下図のような構成になっています。各問題に対して、ユーザが実装したプログラムを提出すると、その場でサーバー上で実行し、正しく挙
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く