開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- JavaScript (プログラミング言語)
- Node.js, Safari(JavaScript エンジン)
- Learning JavaScript [邦訳](参考書籍)
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 コメント:
コメントを投稿