2017年4月21日金曜日

開発環境

Think Perl 6: How to Think Like a Computer Scientist (Laurent Rosenfeld(著)、Allen B. Downey(著)、Oreilly & Associates Inc)のPart 1(Starting with the basics)、Chapter 3(Functions)のExercises 3-1、2、3.を JavaScript で取り組んでみる。

Exercises 8-2.

コード(Emacs)

HTML5

<pre id="output0"></pre>
<button id="run0">run</button>
<button id="clear0">clear</button>

<script src="sample1.js"></script>

JavaScript

let btn0 = document.querySelector('#run0'),
    btn1 = document.querySelector('#clear0'),
    pre0 = document.querySelector('#output0'),
    p = (x) => pre0.textContent += x + '\n';

let rightJustify = (inputString) => {
    p(`${new Array(70 - inputString.length + 1).join(' ')}${inputString}`);
};

let doTwice = (fn) => {
    fn();
    fn();
};
let greet = () => {
    p('Hello World!');
};
let doTwice1 = (fn, val) => {
    fn(val);fn(val);
};
let printTwice = (val) => {
    p(val);
    p(val);
};
let doFour = (fn, val) => {
    doTwice1(fn, val);
    doTwice1(fn, val);
};
let grid = () => {
    p(`+${new Array(5).join('-')}+${new Array(5).join('-')}+`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`+${new Array(5).join('-')}+${new Array(5).join('-')}+`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`+${new Array(5).join('-')}+${new Array(5).join('-')}+`);
};
let grid1 = () => {
    p(`+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|${new Array(5).join(' ')}|`);
    p(`+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+${new Array(5).join('-')}+`);
};

let output = () => {
    p('1.');
    rightJustify('Larry Wall');
    
    p('2-1.');
    doTwice(greet);
    
    p('2-2.');
    p('2-3.');
    p('2-4.');
    doTwice1(printTwice, 'Hello World!');

    p('2-5.');
    doFour(printTwice, 'Hello world!');

    p('3-1.');
    grid();

    p('3-2.');
    grid1();
};
    

btn0.onclick = output;
btn1.onclick = () => pre0.textContent = '';

output();















						

0 コメント:

コメントを投稿