推奨CK 008|職業群(javascript)
28844 ワード
質問する
🔗 Weekly Challenge第4週|推薦職業群
開発者が使用する言語と言語の好みを入力すると、対応する職業群を推奨するアルゴリズムを開発します.
次の表に、5つの共通言語(5つの職業ごと)の職業言語スコアを示します.
...
パラメータは、職業群の言語スコアを整理した文字列テーブル、開発者が使用する言語を含む文字列配列言語、および言語の好みを持つ整数配列プリファレンスを含む文字列配列言語プリファレンスです.開発者が使用する言語嗜好度x職業群言語点数の総和が最も高い職業群は、解関数を完了してください.複数の職業群の合計が同じ場合は、名前の辞書順に最速の職業群を返します.
せいげんじょうけん
私が書いたコード function solution(table, languages, preference) {
var answer = ''
let result = {}
table = table.map(v => v.split(" "))
preference = languages.map((e,i) => {
return [e, preference[i]]
})
var pref = {}
preference.map((v) => {
pref[v[0]] = v[1]
})
table.forEach((column) => {
let scores = []
for(let i=1; i < column.length; i++) {
if(languages.includes(column[i])) {
scores.push((column.length - i) * pref[column[i]])
}
}
result[column[0]] = scores.reduce((sum, cv) => {
return sum + cv
}, 0)
})
var sortedResult = {}
Object.keys(result).sort().forEach((key)=> {
sortedResult[key] = result[key]
})
let max = Math.max(...Object.values(sortedResult))
return getKeyByValue(sortedResult, max)
}
function getKeyByValue(object, value) {
return Object.keys(object).find(key => object[key] === value);
}
前に解いた問題では,単語を習うが適用された.
function solution(table, languages, preference) {
var answer = ''
let result = {}
table = table.map(v => v.split(" "))
preference = languages.map((e,i) => {
return [e, preference[i]]
})
var pref = {}
preference.map((v) => {
pref[v[0]] = v[1]
})
table.forEach((column) => {
let scores = []
for(let i=1; i < column.length; i++) {
if(languages.includes(column[i])) {
scores.push((column.length - i) * pref[column[i]])
}
}
result[column[0]] = scores.reduce((sum, cv) => {
return sum + cv
}, 0)
})
var sortedResult = {}
Object.keys(result).sort().forEach((key)=> {
sortedResult[key] = result[key]
})
let max = Math.max(...Object.values(sortedResult))
return getKeyByValue(sortedResult, max)
}
function getKeyByValue(object, value) {
return Object.keys(object).find(key => object[key] === value);
}
table = table.map(v => v.split(" "))
개발자가 선호하는 언어
:언어 선호도
生成対象var pref = {}
preference.map((v) => {
pref[v[0]] = v[1]
})
언어
:언어 선호도
*직업군 언어 점수
としてresultオブジェクトに含めます.table.forEach((column) => {
let scores = []
for(let i=1; i < column.length; i++) {
if(languages.includes(column[i])) {
scores.push((column.length - i) * pref[column[i]])
}
}
result[column[0]] = scores.reduce((sum, cv) => {
return sum + cv
}, 0)
})
var sortedResult = {}
Object.keys(result).sort().forEach((key)=> {
sortedResult[key] = result[key]
})
let max = Math.max(...Object.values(sortedResult))
return getKeyByValue(sortedResult, max)
function getKeyByValue(object, value) {
return Object.keys(object).find(key => object[key] === value);
}
他人の解答 function solution(table, languages, preference) {
return table.map((r) => r.split(' '))
.map((t) => [...t.splice(0, 1), t])
.map(([t, arr]) => [t,
languages.reduce((acc, l, i)=> {
acc += (5 - (arr.indexOf(l) === -1 ? 5 : arr.indexOf(l)))
* preference[i];
return acc;
}, 0)])
.sort((a, b) => b[1] - a[1] - (a[0] < b[0]))[0][0]
}
function solution(table, languages, preference) {
var answer = '', max = 0;
table.forEach(row => {
const [category, ...ranks] = row.split(' ');
let sum = 0;
for(let i=0; i<languages.length; i++) {
const rank = ranks.findIndex(lang => lang === languages[i]);
if(rank === -1) continue;
sum += (ranks.length - rank) * preference[i];
}
if(max < sum) {
max = sum;
answer = category;
} else if(max === sum) {
answer = [answer, category].sort()[0];
}
});
return answer;
}
3週目の車は触ることすらできませんでしたが、事前に学習グループのメンバーが4週目の車が運転できるようだと言っていたので、1回運転しました.2時間ほどかかりましたが...
どこに置いても恥ずかしい...私のコードですが、発展の気持ちでcodekataを書きます!私もいつかたくさんのいいねを受け取るでしょう.その日まで勉強に励む:)
Reference
この問題について(推奨CK 008|職業群(javascript)), 我々は、より多くの情報をここで見つけました
https://velog.io/@thisisemptyyy/CK-008-직업군-추천하기javaScript
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
function solution(table, languages, preference) {
return table.map((r) => r.split(' '))
.map((t) => [...t.splice(0, 1), t])
.map(([t, arr]) => [t,
languages.reduce((acc, l, i)=> {
acc += (5 - (arr.indexOf(l) === -1 ? 5 : arr.indexOf(l)))
* preference[i];
return acc;
}, 0)])
.sort((a, b) => b[1] - a[1] - (a[0] < b[0]))[0][0]
}
function solution(table, languages, preference) {
var answer = '', max = 0;
table.forEach(row => {
const [category, ...ranks] = row.split(' ');
let sum = 0;
for(let i=0; i<languages.length; i++) {
const rank = ranks.findIndex(lang => lang === languages[i]);
if(rank === -1) continue;
sum += (ranks.length - rank) * preference[i];
}
if(max < sum) {
max = sum;
answer = category;
} else if(max === sum) {
answer = [answer, category].sort()[0];
}
});
return answer;
}
Reference
この問題について(推奨CK 008|職業群(javascript)), 我々は、より多くの情報をここで見つけました https://velog.io/@thisisemptyyy/CK-008-직업군-추천하기javaScriptテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol