【TypeScript】いまさら入門してABSを解く

alphabets close up computer connection
Photo by Pixabay on Pexels.com

今更ながら、TypeScriptに入門することになりました。
仕事柄、特に扱う必要もないんですが一昨年くらいからかなり人気があるので触ってみたいと思います。

TypeScriptって?

簡単に言うとJavaScriptの強化版です。(語弊を招いたらすみません)
JavaScriptは動的型付けなのですが、TypeScriptでは、明示的に型付けができる概念が追加されています。

定義できる型については、非常に詳しいQiitaがありますのでそちらを御覧ください。
https://qiita.com/uhyo/items/e2fdef2d3236b9bfe74a

小規模開発では動的型付けで問題ない場面が多いと思いますが、規模が大きくなってくると未定義のプロパティまみれになって辛い問題があります。静的型付けができるメリットはそのあたりにあると思います。

とりあえず触ってみたい!って方には、プレイグラウンドが用意されているのでそちらで触ってみてください。(Swiftとかにもある実際に試して遊べるサイトです)
https://www.typescriptlang.org/play

AtCoder Begineers Selection (ABS)

言語に入門するときは、やはりオライリーの本を買って、AtCoder社のコンテスト(ABC)を解くのが一番ですね(?)

プログラミングスクールとかに通っている人をよく見ますが、大枚叩いて通うくらいのやる気があれば独学でもいい気はしてます。 分からなくてもとりあえず競プロ、は選択肢としてアリだと思ってます。

https://atcoder.jp/contests/abs

では早速解いてみます。(とりあえず3問)

PracticeA - Welcome to AtCoder

import * as fs from "fs"

const input = fs.readFileSync("/dev/stdin", "utf8").split(/ |\n/g)
const a :number = +input[0]
const b :number = +input[1]
const c :number = +input[2]
const s :string = input[3]

const ans = a + b + c
console.log(`${ans} ${s}`)

ABC086A - Product

import * as fs from "fs"

const input = fs.readFileSync("/dev/stdin", "utf8").split(/ |\n/g)
const a :number = +input[0]
const b :number = +input[1]

console.log(a * b % 2 == 0 ? "Even" : "Odd")

ABC081A - Placing Marbles

import * as fs from "fs"

const input = fs.readFileSync("/dev/stdin", "utf8").split(/ |\n/g)
const s :string = input[0]

console.log(s.split("1").length - 1)

一応明示的に型指定をしてみました。
・・・今回の問題ではJavaScriptと大差無かったので、面白そうな問題があれば追記します。

記事をシェア頂けると嬉しいです!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です