ウェブフロント
- angular
- corewebvitals
- editorconfig
- gatsby
- hls
- html
- javascript
querySelectorAllで取得した要素は配列ではないらしい
JavaScript 配列内のオブジェクトの更新ってどうする?
デバッグ関数とかnullチェック関数をutil/index.tsにおいとけば楽なことに今頃気づいた。
ブラウザからジャイロセンサーを使ってみる
JS 画像のアップロード、プレビュー機能を実装
「数値から各桁の値を取り出す処理」って言われたら数学的な処理が一番に思い浮かぶけど、JSならそんなことなかった。
Callback時代の関数をPromise化する
個人的実装されてほしいECMA Script Proposal
JavaScriptのprototypeを使う
音声をなみなみさせる
AudioWorkletとAudioWorkletProcessorを使って音声のビジュアライゼーション
- next
- nuxt
- playwright
- prettier
- react
- reactnative
- tensorflowjs
- tools
- typescript
- wasm
- websocket
- ポエム
- 開発環境
サーバー
その他
TypeScript JavaScriptでAtCoderする
競プロをすることで取得できる言語に対する知識ってあるよね
ってことでTypeScriptで競プロをやってみました.
入力
C++やC以外で競プロをするときに気になるのはやはり入力の仕方です.
C++やCの場合は都度入力ができるのですが、TypeScriptの場合は最初に全ての入力を受け取り、それをパースして変数として使っていくっていう形になります.
多分一番ここが面倒くさいです.
実際のコードは、
C++やCの場合は都度入力ができるのですが、TypeScriptの場合は最初に全ての入力を受け取り、それをパースして変数として使っていくっていう形になります.
多分一番ここが面倒くさいです.
実際のコードは、
import * as fs from "fs";
const input = fs.readFileSync("/dev/stdin", "utf8").trim();
これで入力がinput変数に文字列として入ります. trimメソッドを使っているのは最後に謎の空文字が入ったりしたので取り除くためです.
このinput内の文字列を、例えば
split(' ')
で空白ごとに分割したり、
split('\n')
で改行ごとに分割したりと工夫して入力として使用します.出力
出力は
console.log()
でOKです.ABC167 A問題
例えばこちらの問題
https://atcoder.jp/contests/abc167/tasks/abc167_a
ではこのようなコードになります.
import * as fs from "fs";
const input = fs.readFileSync("/dev/stdin", "utf8").trim().split("\n");
const output = (x: any) => console.log(x);
const [S, T] = input;
S === T.slice(0, -1) ? output("Yes") : output("No");
入力を改行ごとに分割します.
配列の分割代入を用いて、 SとTの変数に代入するとスッキリと書くことができます.
配列の分割代入を用いて、 SとTの変数に代入するとスッキリと書くことができます.
ローカル環境での実行
C++, Cのときと同様にローカル環境でも実行できます.
例えば
ただ注意点として入力がおわったら
これを忘れて「実行できねーーーーーーなんでーーーーーーー」って一時間ぐらいなってました。はい。
例えば
npx ts-node A.ts
という感じです.ただ注意点として入力がおわったら
Ctrl+D
をしないといけません.これを忘れて「実行できねーーーーーーなんでーーーーーーー」って一時間ぐらいなってました。はい。
考察
TypeScriptで解くメリットとデメリットについてです.
メリットは
メリットは
- TypeScriptで解ける!!(それはそう)
- WebStorm等のIDEを使える
デメリットは - やっぱり入力が面倒くさい
- 実行時間が気になる
という感じです.
TypeScriptで解くのが目的なのでメリットはそれに他ならないです.
あと個人的にWebStormが使えるっていうのがとても高評価でIDEによる補完も効くしデバッグも簡単っていうのが良いです.
デメリットの入力はまぁガチ勢じゃない僕は丁寧丁寧にやってけばいいだけなんですけど、どうしてもリアタイとかで参加するとなると時間をとるなーと思います. 例えばABC166 B問題
あと個人的にWebStormが使えるっていうのがとても高評価でIDEによる補完も効くしデバッグも簡単っていうのが良いです.
デメリットの入力はまぁガチ勢じゃない僕は丁寧丁寧にやってけばいいだけなんですけど、どうしてもリアタイとかで参加するとなると時間をとるなーと思います. 例えばABC166 B問題
https://atcoder.jp/contests/abc166/tasks/abc166_b
B問題なので簡単なんですけど、この手の入力が多い問題はTypeScriptだと地獄です。はい。
いろいろ工夫しながらパースしていかないといけないですね.
あとコンパイル言語に比べると実行時間が遅い(当たり前)なのでオーダーが重いと致命的かなあと思います。
いろいろ工夫しながらパースしていかないといけないですね.
あとコンパイル言語に比べると実行時間が遅い(当たり前)なのでオーダーが重いと致命的かなあと思います。
おわりに
楽しいのでみんなもTSでやって
Thanks you for reading.