2:00am, Writing code

Roughly coding. Posted from Berlin.

Javascript

AtCoder Beginner Contest072に参加してみたので感想とか

最近アルゴリズムとデータ構造の勉強の一環として競技プログラミングに興味が出てきたので少し試してみたりしている。AtCoderでほぼ毎週プログラミングコンテスト(プロコン)が開催されているということだったので、参加してみた感想を参加記録代わりに残して…

BubbleSort in Javascript

特筆すべきところはないがプログラミング手習いとしてのバブルソート。一応お作法として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でスタックを実装する

Javascriptには組み込みのデータ構造としてスタックが実装されていないので実装してみる。とはいえスタックに必要な基本操作はArrayに実装されているので、実質的にはスタック風のラッパーを被せるだけで事足りる。 実際のコードは以下のようになる。 class …

Javascriptで非破壊ソートを実装する

Javascriptで数値配列をソートする - 2:00am, Writing codeでも少し触れたが、JavascriptのArray.sortは破壊的なソートなので、配列そのものの値を変更してしまう。 それでも問題ない場合も多いかもしれないが、うっかり配列を破壊してしまうことにより問題…

Javascriptで数値配列をソートする

Javascriptには標準でArray.sortおよびArray.reverseが実装されているのでお手軽にソートを実行できる。と思いきやこいつらは数値配列をソートする場合は意図しない結果となることがあるので注意が必要である。 Array.sortは文字列比較 JavascriptのArray.so…

Javascriptで数値を2進数/8進数/16進数に変換する

プログラミング問題でありがちな「数値を2進数に変換してごにょごにょする」という処理をJavascriptでやる方法。検索してみても意外と日本語のまとまった情報が見つけられなかったので一通りまとめておく。 基数変換はNumber.toStringを使う 基本的にはNumbe…

FizzBuzz in Javascript

みんな大好きFizzBuzzをJavascriptで書いてみる。とはいえJavascript固有の処理は関数のデフォルト引数ぐらいしかないので他の言語でも99%応用できる。 function fizzBuzz(begin = 1, end = 100) { for (let i = begin; i <= end; i++) { const isFizz = i %…

Javascriptで文字列中に出現する各文字を数える

プログラミング問題などでありがちな、ある文字列内の任意の文字の出現数をカウントするという課題。Javascriptだとこんな感じに書ける。 function countCharInStr(str, chara) { const counts = {}; for (let c of str) { counts[c] = c in counts ? counts…

Javascriptでアルファベット配列をスマートに定義する

プログラミングコンテスト(プロコン)やオンラインのプログラミング学習サイトなどの問題を解く時、アルファベット配列が必要になる場合がある(気がする)。 JavascriptにはRubyやPythonなどのように範囲指定子がないので自力で定義してやる必要があるが、どう…