A問題の解き方 色々(ABC151 A - Next Alphabet)
備忘録
問題
回答1
"use strict" function Main(input) { input = input.trim(); const arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] let ret = 0; arr.map((val, index) => { if(val === input){ ret = index + 1; } }) console.log(arr[ret]); } Main(require("fs").readFileSync("/dev/stdin", "utf8"));
競プロ初心者(私)が考えがちな回答。
愚直にアルファベットの配列とつくって、input
文字のインデックスをループで探る回答。
回答はできるが、書くのに時間がかかる。
回答2
"use strict" function Main(input) { input = input.trim(); const arr = 'abcdefghijklmnopqrstuvwxyz'.split(''); console.log(arr[arr.indexOf(input)+1]) } Main(require("fs").readFileSync("/dev/stdin", "utf8"));
アルファベットの文字列からsplit
で配列にして、
indexOf
でinput
文字の位置を探る回答。
ぱっと見、わかりやすいし、コードも少なく綺麗。
回答3
"use strict" function Main(input) { input = input.trim(); console.log(String.fromCharCode(input.charCodeAt() + 1)) } Main(require("fs").readFileSync("/dev/stdin", "utf8"));
input
文字を文字コードに変換し、変換された値に+1
をして、
再度、文字コードの数値を文字に変換する回答。
競プロerっぽい、かっこいい。
普通に回答1で答えた後、書くのに数分時間を要したため少し他の方の回答を覗いたところ、
回答2や回答3で答えている方がいらっしゃたため、参考にさせていただきました。
ABCのA問題と言えど、他の方の回答コードを読むのめちゃくちゃ大切だと実感。