yucatio@システムエンジニア

趣味で作ったものいろいろ

2019-01-01から1年間の記事一覧

JavaScriptで転置を実装する (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com ピースの回転、反転を行うために2次元配列の転置を行います。転置を行う理由については以下の記事を参照してください。 yucatio.hatenablog.com 各spinは0番を始めとして以下の順番で生成します。 はじめに0番目のスピン…

最終的に出来上がる配列の確認と関数の準備 (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com 前回、もととなるピースの配列を作成しました。 ここから各ピースを転置・反転したものを作成していきます。 現在各ピースは、 [ [1, 1, 1, 0], [0, 0, 1, 1] ] のように2次元配列で表現されています。これを最終的には(…

もととなるペンタミノのピースの準備 (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com ではプログラムを書いていきます。 はじめにディレクトリとhtmlファイルを用意しましょう。 ファイルとディレクトリの準備 KATAMINO-SOLVERという名前のフォルダを作成し、その下に KATAMINO-SOLVER-preparationという名…

ペンタミノの回転、反転をするためのアルゴリズム (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com KATAMINOのピース(ペンタミノ)は以下の12種類です。 KATAMINOを解いていくときに、それぞれのピースを回転させたり裏返したりする必要があります。 この時の方針として、 あらかじめ回転させたり裏返したりしたものを用…

データ構造を考える (KATAMINOを解くプログラムを作成する)

★前回の記事 yucatio.hatenablog.com 具体的なプログラミングに入る前に、データ構造を考えておきましょう。 KATAMINOを解くのに必要なものは、KATAMINOを入れるフィールドとKATAMINOのピースです。 フィールドのデータ構造 フィールドは 5 x {ピースの数} …

KATAMINOを解くアルゴリズム (KATAMINOを解くプログラムを作成する)

KATAMINOとは KATAMINOとは、Gigamic社が発売するパズルゲームです。 ペンタミノという、5個の正方形をつなげてできる形をしたピースを使い、 長方形の枠にぴったり収まるように組み合わせて遊ぶゲームです。 【ポイント11倍】Gigamic(ギガミック)社 カタ…

KATAMINOを解くプログラムを作成する【目次】

KATAMINOとは KATAMINOとは、Gigamic社が発売するパズルゲームです。 ペンタミノという、5個の正方形をつなげてできる形をしたピースを使い、 長方形の枠にぴったり収まるように組み合わせて遊ぶゲームです。 【ポイント11倍】Gigamic(ギガミック)社 カタ…

カレンダー作成問題の解答

前回に引き続き、こちらの記事を見てみて、面白そうな問題がいくつかあったので、プログラミング初心者ではないですが解きました。元記事では、解答を見ないで解くこととなっていましたが、ある程度自分で考えた後に他の人の解答を見ました。それでもオリジ…

連続した文字を抽出する正規表現とガラケー文字入力問題(応用)の解答

前回の記事の問題を解いている過程で、"連続した数字を取り出さなければ"と思い、凝った正規表現を作ってしまったので、それを使える問題を作成しました。 ★前回の記事 yucatio.hatenablog.com こちらの記事のガラケー文字入力問題の応用編を作成しました。 …

ガラケー文字入力問題の解答

前回に引き続き、こちらの記事を見てみて、面白そうな問題がいくつかあったので、プログラミング初心者ではないですが解きました。 blog.jnito.com ガラケー文字入力問題 英語のガラケーでは「2」キーを2回押すと「b」になり、「3」キーを3回押すと「f」にな…

電話帳作成問題の解答

前回に引き続き、こちらの記事を見てみて、面白そうな問題がいくつかあったので、プログラミング初心者ではないですが解きました。 blog.jnito.com 電話帳作成問題 カタカナ文字列の配列を渡すと、ア段の音別にグループ分けした配列を返すプログラムを作成す…

国民の祝日.csv パースプログラムの解答

前回に引き続き、こちらの記事を見てみて、面白そうな問題がいくつかあったので、プログラミング初心者ではないですが解きました。 blog.jnito.com 国民の祝日.csv パースプログラム その昔、「国民の祝日.csv」という扱いづらいCSVが話題になっていました。…

ボーナスドリンク問題の解答

こちらの記事を見てみて、面白そうな問題がいくつかあったので、プログラミング初心者ではないですが解きました。 blog.jnito.com ボーナスドリンク問題 「ある駄菓子屋で飲み物を買うと、空き瓶3本で新しい飲み物を1本プレゼントしてくれる。最初に100本購…

JavaScriptのnew Array(n)をmapしたいとき fillをはさむ理由

経緯 配列をオブジェクトで初期化したい場合、 new Array(3).fill({foo: "ふう", bar:"ばあ"}) というコードだと、全てのインデックスが同じオブジェクトを指してしまうので、 調べたら new Array(3).fill().map(() => ({foo: "ふう", bar: "ばあ"})) という…

「5と8を使った和で表すことができない最大の整数を求めよ」を解いてみる

小2が「5と8を使った和で表すことができない最大の整数を求めよ」という大学入試レベルの算数を教えてと聞いてきた togetter.com この問題が面白いなと思って自分なりに解いて見たので書いてみます。数学は専門ではないので厳密さに欠けることは先に記してお…

RSpecでsubjectを使用して配列を検査時、配列の長さを取得する

RSpecでsubjectを使用して、配列を subject { user.errors[:name] } # user.errors[:name] は配列 このように検査時、配列の長さを取得する方法が分からなかったので調べました。 結論 rspec-itsのitsを使用する。 its(:size) { is_expected.to eq 3 } のよ…

正規表現間違い探しクイズ その3

正規表現間違い探しクイズシリーズです。 正規表現は単体テストを書いている場合でもバグを発見しづらいものです。そのため、自身での検証が欠かせません。 今回は仕事中に見つけたものでなく、個人開発中にネットで見つけた間違いのうち印象的だったものを…

正規表現間違い探しクイズ その2

正規表現間違い探しクイズシリーズです。 正規表現は単体テストを書いている場合でもバグを発見しづらいものです。 そのためレビューの時には注意深く見るようにしています。そんな中見つけた間違いのうち印象的だったものを紹介します。 問題編 仕様 Linkモ…

正規表現間違い探しクイズ その1

正規表現間違い探しクイズシリーズです。 正規表現のバグは単体テストを書いている場合でも発見しづらいものです。 そのためレビューの時には注意深く見るようにしています。そんな中見つけた間違いのうち印象的だったものを紹介します。 問題編 仕様 ユーザ…