6時だョ!!全員集合!!

Rails・JavaScrictを中心にアウトプットします。

2022年5月12日 アルゴ式 番外編

Ryuji's answer

TypeScript

import * as fs from 'fs'
const input       = fs.readFileSync("/dev/stdin", "utf8")
const [nv, alist] = input.split("\n")

const [n,v,..._]  = nv.split(" ").map(Number)
const list        = alist.split(" ").map(Number)

type PlusNumber = {
    (array: number[]): number;
};

const plusNumber: PlusNumber = (array) => {
    const result = array.filter(word => word > 0);
    return result.length;
};

console.log(plusNumber(list));
  • 前回関数を使わずに実装していて、今回は型エイリアスと関数を使ってやると決めて取り組みました。

Yano's answer

Math.sign() - JavaScript | MDN

import * as fs from 'fs'
const input       = fs.readFileSync("/dev/stdin", "utf8")
const [nv, alist] = input.split("\n")

const [n]         = nv.split(" ").map(Number)
const list        = alist.split(" ").map(Number)

type CountNaturalNumber = {
    (numArray: number[]): number;
}

const countNaturalNumber: CountNaturalNumber = (numArray) => {
    return numArray.filter(num => Math.sign(num) === 1).length;
}

console.log(countNaturalNumber(list));
  • Math.sign()は引数に渡した数字が自然数の場合に1を返します。
        (マイナスの場合は戻り値が-1になります。)
  • 利点としては0 < num とする場合は小数点を含めて判定しますが、こちらの場合は整数のみを判定します。
  • デメリットは、Math.sign()のメソッドの性質が分からないと読みにくいコードであることです。
  • エイリアスと関数式の後にセミコロンが抜けていました。

Yui's answer

import * as fs from 'fs'
const input       = fs.readFileSync("/dev/stdin", "utf8")
const [nv, alist] = input.split("\n")

const [n,v,..._]  = nv.split(" ").map(Number)
const list        = alist.split(" ").map(Number)


const listNumber = (list: number[]): number => { 
    return list.filter( num => num > 0).length;
};

console.log(listNumber(list));

Yuki's answer

import * as fs from 'fs'
const input = fs.readFileSync("/dev/stdin", "utf8")
const [nv, alist] = input.split("\n")

const [n, ..._] = nv.split(" ").map(Number)
const list = alist.split(" ").map(Number)

const findNumThanZero = (list: number[]): number => {
  return list.filter((num) => num > 0).length;
};

console.log(findNumThanZero(list));

参考

アルゴ式