Javascript
最近アルゴリズムとデータ構造の勉強の一環として競技プログラミングに興味が出てきたので少し試してみたりしている。AtCoderでほぼ毎週プログラミングコンテスト(プロコン)が開催されているということだったので、参加してみた感想を参加記録代わりに残して…
特筆すべきところはないがプログラミング手習いとしてのバブルソート。一応お作法としてObject.assignを用いた非破壊的なソートにしている。 const a = [20, 1, 13, 2, 5, 3, 32, 11, 21]; console.log(bubbleSort(a)); // [ 1, 2, 3, 5, 11, 13, 20, 21, 32…
前回の記事はこちら。 今回は前回から引き続きスタックの活用方法を見ていく。スタックの活用方法の例題としてよく挙げられるのが「逆ポーランド記法の数式を計算する」という課題である1。ということで実際にJavascriptでスタックを使って上記の処理を実装…
Javascriptには組み込みのデータ構造としてスタックが実装されていないので実装してみる。とはいえスタックに必要な基本操作はArrayに実装されているので、実質的にはスタック風のラッパーを被せるだけで事足りる。 実際のコードは以下のようになる。 class …
Javascriptで数値配列をソートする - 2:00am, Writing codeでも少し触れたが、JavascriptのArray.sortは破壊的なソートなので、配列そのものの値を変更してしまう。 それでも問題ない場合も多いかもしれないが、うっかり配列を破壊してしまうことにより問題…
Javascriptには標準でArray.sortおよびArray.reverseが実装されているのでお手軽にソートを実行できる。と思いきやこいつらは数値配列をソートする場合は意図しない結果となることがあるので注意が必要である。 Array.sortは文字列比較 JavascriptのArray.so…
プログラミング問題でありがちな「数値を2進数に変換してごにょごにょする」という処理をJavascriptでやる方法。検索してみても意外と日本語のまとまった情報が見つけられなかったので一通りまとめておく。 基数変換はNumber.toStringを使う 基本的にはNumbe…
みんな大好きFizzBuzzをJavascriptで書いてみる。とはいえJavascript固有の処理は関数のデフォルト引数ぐらいしかないので他の言語でも99%応用できる。 function fizzBuzz(begin = 1, end = 100) { for (let i = begin; i <= end; i++) { const isFizz = i %…
プログラミング問題などでありがちな、ある文字列内の任意の文字の出現数をカウントするという課題。Javascriptだとこんな感じに書ける。 function countCharInStr(str, chara) { const counts = {}; for (let c of str) { counts[c] = c in counts ? counts…
プログラミングコンテスト(プロコン)やオンラインのプログラミング学習サイトなどの問題を解く時、アルファベット配列が必要になる場合がある(気がする)。 JavascriptにはRubyやPythonなどのように範囲指定子がないので自力で定義してやる必要があるが、どう…