入力された文字列をチェーンケース・スネークケース・アッパーキャメルケース・ローワーキャメルケースに変換する関数を作成せよ
入力された文字列を文字列をチェーンケース・スネークケース・アッパーキャメルケース・ローワーキャメルケースに変換する関数を作成せよ
ただし、チェーンケース・スネークケースに関しては、大文字は小文字に変換されるものとする。(Aaa_Bbbとはしない)
function toChainCase(str){
}
function toSnakeCase(str){
}
function toUpperCamelCase(str){
}
function toLowerCamelCase(str){
}
const args = process.argv.slice(2);
for (let i = 0; i < args.length; i++) {
const arg = args[i];
console.log(toChainCase(arg));
console.log(toSnakeCase(arg));
console.log(toUpperCamelCase(arg));
console.log(toLowerCamelCase(arg));
}
node main.js aaa-bbb-ccc AaaBbbCcc aaaBbbCcc aaa_bbb_ccc
出力結果
aaa-bbb-ccc aaa_bbb_ccc AaaBbbCcc aaaBbbCcc aaa-bbb-ccc aaa_bbb_ccc AaaBbbCcc aaaBbbCcc aaa-bbb-ccc aaa_bbb_ccc AaaBbbCcc aaaBbbCcc aaa-bbb-ccc aaa_bbb_ccc AaaBbbCcc aaaBbbCcc
解答例
function splitWords(str) {
let ret = str.split("-");
if (ret.length === 1) {
ret = str.split("_");
}
if (ret.length === 1) {
ret = str.split("_");
}
if (ret.length === 1) {
ret = [];
let word = "";
for (let i = 0; i < str.length; i++) {
if (str[i].match(/[A-Z]/) && word.length > 0) {
ret.push(word);
word = "";
}
word += str[i];
}
ret.push(word);
}
// 一旦全部小文字に変換
for (let i = 0; i < ret.length; i++) {
ret[i] = ret[i].toLowerCase();
}
return ret;
}
function toChainCase(str) {
const words = splitWords(str);
return words.join("-");
}
function toSnakeCase(str) {
const words = splitWords(str);
return words.join("_");
}
function toUpperCamelCase(str) {
const words = splitWords(str);
for (let i = 0; i < words.length; i++) {
words[i] = words[i][0].toUpperCase() + words[i].slice(1);
}
return words.join("");
}
function toLowerCamelCase(str) {
const words = splitWords(str);
for (let i = 1; i < words.length; i++) {
words[i] = words[i][0].toUpperCase() + words[i].slice(1);
}
return words.join("");
}
const args = process.argv.slice(2);
for (let i = 0; i < args.length; i++) {
const arg = args[i];
console.log(toChainCase(arg));
console.log(toSnakeCase(arg));
console.log(toUpperCamelCase(arg));
console.log(toLowerCamelCase(arg));
}
6ek068l4pw
小数を切り捨て、切り上げ、四捨五入する関数を作成せよ
コマンドライン引き数で渡された、2つの整数 x , y の x / y の計算結果を小数点以下で①切り捨て②切り上げ③四捨五入するプログラムを作成せよ。 ただしMath.floor等の関数の使用を禁止する。
function floor(num) {
}
function round(num) {
}
function ceil(num) {
}
const a = process.argv[2]
const b = process.argv[3]
console.log(a / b)
console.log(floor(a / b))
console.log(round(a / b))
console.log(ceil(a / b))
解答例
function floor(num) {
let n = num
while (true) {
if (n < 1) {
return num - n
}
n -= 1
}
}
function round(num) {
return (num - floor(num)) < 0.5 ? floor(num) : floor(num) + 1
}
function ceil(num) {
return (num - floor(num)) > 0 ? floor(num) + 1 : floor(num)
}
const a = process.argv[2]
const b = process.argv[3]
console.log(a / b)
console.log(floor(a / b))
console.log(round(a / b))
console.log(ceil(a / b))
与えられた数値を2進数に変換するメソッドを作成せよ
与えられた数値(Number型)を2進数(String型)に変換する関数 numToBin() を作成せよ
ただし、JavaScriptの標準関数(toString()等)の使用を禁止する。Math.floor()はOK
function numToBin(num) {
return "文字列"
}
console.log(numToBin(Number(process.argv[2])))
解答例
function numToBin(num) {
let ret = ""
do {
ret = (num % 2 ? "1" : "0") + ret
num = Math.floor(num / 2)
} while (num > 0)
return ret
}
console.log(numToBin(Number(process.argv[2])))
void intToBin(int num, char* buf, size_t buf_size){
if(num > 0){
intToBin(num >> 1, buf, buf_size);
strlcat(buf, num & 1 ? "1" : "0", buf_size);
}
}
文字列を比較する関数strcmp()を作成せよ
文字列を比較する関数strcmp(str1,str2)を作成せよ。
str1とstr2が等しいならば0、 str1>str2ならば1、 str1<str2ならば-1を返す。
ただし1文字ずつ比較するアルゴリズムにすること。
function strcmp(str1,str2) {
}
const a = process.argv[2]
const b = process.argv[3]
console.log(strcmp(a, b) === a.localeCompare(b))
以下全てがtrueとなるように
node main.js aaa aaa node main.js aaa bbb node main.js aaa ccc node main.js ccc aaa node main.js aaa aaaa node main.js aaaa aaa
解答例
function strcmp(a, b) {
const length = Math.max(a.length, b.length)
for (let i = 0; i < length; i++) {
if (a[i] === undefined || a[i] < b[i]) {
return -1
} else if (b[i] === undefined || a[i] > b[i]) {
return 1
}
}
return 0
}
console.log(strcmp(process.argv[2], process.argv[3]))
文字列の長さを返す関数strlen()を作成せよ
文字列の長さを返す関数strlen(str)を作成せよ
ただし、文字列のプロパティlengthの使用を禁止し、ループはwhile(true)のみを使用するとする
function strlen(str) {
}
console.log(strlen(process.argv[2]))
node main.js aaa 3
node main.js a,b,c 5
解答例
function strlen(str) {
let ret = 0
while (true) {
if (str[ret] === undefined) {
break
}
ret++
}
return ret
}
console.log(strlen(process.argv[2]))
プログラミングを始める前に
プログラミングとは?
そもそもプログラミングってなんなのか?今後、ずーっと大事になる概念です。忘れてしまったらもう一度、ここに立ち返り見直してください。
まず、結論から。
プログラミングとは「コンピュータを働かせる命令を作ること」です。
なぜプログラミング?
では何のためにプログラミングするのか?
現在、まだAIが人間の能力を超えるといわれるシンギュラリティは来ていないので、まだまだコンピュータよりも人間の方が賢いです。
ただし、コンピュータが人間よりも勝っている部分があります。
それは、
- コンピューターは計算がめちゃくちゃ速い
- コンピューターは疲れない
- データに物質的質量がない ということです。
なぜプログラミングをするのか?というのは、これらのコンピュータの利点を生かして、
人間に喜び(便利・楽しい等)を与えることです。
アプリーケーションとは?
アプリケーションとは、入力(Input)を受け付けて、結果を出力(Output)するものです。すべてのアプリケーションこのI(nput)/0(utoput)があります。
課題:身近なアプリケーションのINPUTとOUTPUTを考えてみよう
課題:INPUTデバイスを5種類を挙げみよう
課題:OUTPUTデバイスを5種類を挙げてみよう
効率的な学習方法
プログラミング学習を始める前にこれを見よう
与えられた2次元配列の縦・横・斜めが与えられた値で揃っているかを返す関数を作成せよ
上記isFilledArray()を使い、与えられた2次元配列の縦・横・斜めが与えられた値で揃っているかを返す関数isBingo(arr, val)を作成せよ
const arr0 = [ [0,0,0], [0,0,0], [0,0,0], ] const arr1 = [ [0,0,0], [1,1,1], [0,0,0], ] const arr2 = [ [0,0,1], [0,0,1], [0,0,1], ] const arr3 = [ [1,0,0], [0,1,0], [0,0,1], ] const arr4 = [ [0,0,1], [0,1,0], [1,0,0], ] console.log(isBingo(arr0, 1)) console.log(isBingo(arr0, 1)) console.log(isBingo(arr1, 1)) console.log(isBingo(arr1, -1)) console.log(isBingo(arr2, 1)) console.log(isBingo(arr2, -1)) console.log(isBingo(arr3, 1)) console.log(isBingo(arr3, -1)) console.log(isBingo(arr4, 1)) console.log(isBingo(arr4, -1))
false false true false true false true false true false
解答例
function isFilledArray(arr, val) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== val) {
return false
}
}
return true
}
const arr0 = [
[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
]
const arr1 = [
[0, 0, 0],
[1, 1, 1],
[0, 0, 0],
]
const arr2 = [
[0, 0, 1],
[0, 0, 1],
[0, 0, 1],
]
const arr3 = [
[1, 0, 0],
[0, 1, 0],
[0, 0, 1],
]
const arr4 = [
[0, 0, 1],
[0, 1, 0],
[1, 0, 0],
]
function isBingo(arr, val) {
if (arr.length !== arr[0].length) {
console.error('this is not square')
return false
}
const length = arr.length
let check = []
for (let a = 0; a < length; a++) {
check = []
for (let b = 0; b < length; b++) {
check.push(arr[a][b])
}
if (isFilledArray(check, val)) {
return true
}
}
for (let a = 0; a < length; a++) {
check = []
for (let b = 0; b < length; b++) {
check.push(arr[b][a])
}
if (isFilledArray(check, val)) {
return true
}
}
check = []
for (let i = 0; i < length; i++) {
check.push(arr[i][i])
}
if (isFilledArray(check, val)) {
return true
}
check = []
for (let i = 0; i < length; i++) {
check.push(arr[length - i - 1][i])
}
if (isFilledArray(check, val)) {
return true
}
return false
}
console.log(isBingo(arr0, 1))
console.log(isBingo(arr0, 1))
console.log(isBingo(arr1, 1))
console.log(isBingo(arr1, -1))
console.log(isBingo(arr2, 1))
console.log(isBingo(arr2, -1))
console.log(isBingo(arr3, 1))
console.log(isBingo(arr3, -1))
console.log(isBingo(arr4, 1))
console.log(isBingo(arr4, -1))