第99回【JavaScript】昇順ソート、降順ソート
現在取り組んでいるのは、paiza ラーニング問題集「Cランクレベルアップメニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
JavaScript をゼロから勉強してみよう、のコーナー 99 回目です。
某社から頂くカレンダーの 1 枚が、香川県のエンジェルロードでした。昨年、LeoLuna(夫婦)で訪れた小豆島のあの道です。なかなか面白かったので、また訪れてみたい場所の一つになっています。
それでは、今日も頑張ってみようと思います。
昇順ソート (paizaランク D 相当)
n 個の数 a_1, … , a_n が与えられます。与えられた数を小さい順に改行区切りで出力してください。
入力される値
n
a_1
...
a_n
1 行目に正整数 n が、 2 行目から (n + 1) 行目には整数 a_1, …, a_n が改行区切りで与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
a_1, …, a_n を小さい順に並べ替え、改行区切りで n 行、順に出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・ 1 ≤ n, a_i ≤ 50 (1 ≤ i ≤ n)
入力例
2
4
3
出力例
3
4
JavaScript の数値のソートはひと手間いるので、いつもあれ、どうだっけ、と不安になってしまう。
JavaScript
process.stdin.resume();
process.stdin.setEncoding('utf8');
var lines = [];
var reader = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
reader.on('line', (line) => {
lines.push(line);
});
reader.on('close', () => {
const n = Number(lines[0]);
const A = [];
for (let i = 1; i <= n; i++) {
A.push(Number(lines[i]));
}
A.sort((a,b) => a - b);
for (let a of A) {
console.log(a);
}
});
Python
N = int(input())
A = [int(input()) for _ in range(N)]
for a in sorted(A):
print(a)
降順ソート (paizaランク D 相当)
n 個の数 a_1, …, a_n が与えられます。与えられた数を大きい順に改行区切りで出力してください。
入力される値
n
a_1
...
a_n
1 行目に正整数 n が、 2 行目から (n + 1) 行目には整数 a_1, …, a_n が改行区切りで与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
a_1, …, a_n を大きい順に並べ替え、改行区切りで n 行、順に出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・ 1 ≤ n , a_i ≤ 50 (1 ≤ i ≤ n)
入力例
2
4
3
出力例
4
3
さっきと逆にするだけの簡単な作業です。
JavaScript
process.stdin.resume();
process.stdin.setEncoding('utf8');
var lines = [];
var reader = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
reader.on('line', (line) => {
lines.push(line);
});
reader.on('close', () => {
const n = Number(lines[0]);
const A = [];
for (let i = 1; i <= n; i++) {
A.push(Number(lines[i]));
}
A.sort((a,b) => b - a);
for (let a of A) {
console.log(a);
}
});
Python
N = int(input())
A = [int(input()) for _ in range(N)]
for a in sorted(A,reverse=True):
print(a)
最後に
sort というメソッド一つでどうにか出来るわけではないところが JavaScript の難いところ。さすがに覚えたし慣れたけれども、やっぱり不安に駆られてしまう。
あんまり数列を sort する機会がないからでしょうか。しかし、Lambda で Python を利用していろいろ作っていると、使う機会は「ある」印象です。JavaScript で書き直してみたい気もしますが、まだまだ実力が伴いません。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません