JS10 Day 5: Template Literals

개요[ | ]

JS10 Day 5: Template Literals
해커랭크 10 Days of Javascript
# 문제 비고
4-5 Day e
12 JS10 Day 4: Create a Rectangle Object
13 JS10 Day 4: Count Objects
14 JS10 Day 4: Classes
15 JS10 Day 5: Inheritance
16 JS10 Day 5: Template Literals
17 JS10 Day 5: Arrow Functions

'use strict';

process.stdin.resume();
process.stdin.setEncoding('utf-8');

let inputString = '';
let currentLine = 0;

process.stdin.on('data', inputStdin => {
    inputString += inputStdin;
});

process.stdin.on('end', _ => {
    inputString = inputString.trim().split('\n').map(string => {
        return string.trim();
    });
    
    main();    
});

function readLine() {
    return inputString[currentLine++];
}
/*
 * Determine the original side lengths and return an array:
 * - The first element is the length of the shorter side
 * - The second element is the length of the longer side
 * 
 * Parameter(s):
 * literals: The tagged template literal's array of strings.
 * expressions: The tagged template literal's array of expression values (i.e., [area, perimeter]).
 */
function sides(literals, ...expressions) {
    var a = expressions[0];
    var p = expressions[1];
    var s1 = ( p + Math.sqrt( p**2 - 16*a ) ) / 4;
    var s2 = ( p - Math.sqrt( p**2 - 16*a ) ) / 4;
    return [s2, s1];
}
function main() {
    let s1 = +(readLine());
    let s2 = +(readLine());
    
    [s1, s2] = [s1, s2].sort();
    
    const [x, y] = sides`The area is: ${s1 * s2}.\nThe perimeter is: ${2 * (s1 + s2)}.`;
    
    console.log((s1 === x) ? s1 : -1);
    console.log((s2 === y) ? s2 : -1);
}
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}