做codewars题目的一些想法。 目前是kyu4。逻辑题偶尔可以做做kyu4的,算法题最多可以做做kyu5的(还经常做不出来)。 主要是javascript,有时会乱入python。新手适合,请高手多提意见多修改。在下感激。
function diamond(n){
if( n<=0 || n%2=== 0 ){
return null;
}
var str = ''; //这是中间一行上面的字符串
var str2 = ''; //下面的字符串
var lines = (n-1)/2; //这是上面或者下面的总行数。比如如果n=7,则上下各有三行。
//每一行都是一定规则的字符串拼接的
for(var i = 0;i < lines;i++){
str += ' '.repeat(lines-i) + '*'.repeat( i*2 + 1 ) + '\n';
str2 += ' '.repeat(i+1) + '*'.repeat( n-i*2-2 ) + '\n';
}
console.log(str + '*'.repeat(n) + '\n' + str2);
return str + '*'.repeat(n) + '\n' + str2;
}
function array_diff(a, b) {
if(b.length === 0){
return a;
}
return a.filter(function(item){
return b.indexOf(item) === -1;
});
}
// 这个代码啰嗦了。
function array_diff(a, b) {
if (a.length < 1) {
return [];
}
if (b.length < 1) {
return a;
}
const returnArr = a.filter((items) => {
return b.join('').indexOf(items) === -1;
});
return returnArr;
}
function sortArray(array) {
// Return a sorted array.
const sortArr = array;
let count = -1;
let temp;
if (sortArr.length < 1) {
return [];
}
const oddArr = sortArr.filter((items) => {
return items % 2 !== 0;
}).sort(function(a, b) {
return a - b;
});
sortArr.forEach((element, index) => {
if (sortArr[index] % 2 !== 0) {
count = count + 1;
oddArr.forEach(item => {
sortArr[index] = oddArr[count];
});
}
});
return sortArr;
}
function count (string) {
// The function code should be here
let obj = {};
if (string.length < 1) {
obj = {};
}
string.split('').forEach((element) => {
if (!obj[element]) {
obj[element] = 1;
} else {
obj[element] ++;
}
});
return obj;
}
String.prototype.camelCase=function(){
//your code here
return this.split(' ').map(item => {
const itemArr = item.split('');
const replaceChar = item.slice(0, 1).toUpperCase();
itemArr.splice(0,1,replaceChar);
return itemArr.join('');
}).join('');
}
// javascript
function list(names){
//your code here
const nameArr = [];
names.forEach((item) => {
nameArr.push(item.name);
});
const nameStr = nameArr.join(', ');
const index = nameArr.join(', ').lastIndexOf(', ');
const nameStrArr = nameStr.split('');
index > 0 ? nameStrArr.splice(index, 1, ' &') : nameStrArr;
return nameStrArr.join('');
}
// python
def namelist(names):
#your code here
nameList = list()
for i in range(0, len(names)):
nameList.append(names[i].get('name'))
nameStr = ', '.join(nameList)
strIndex = nameStr.rfind(', ')
if strIndex > -1:
return nameStr[:strIndex] + ' &' + nameStr[strIndex+1:]
else:
return nameStr
function inArray(array1,array2){
const resultArr = [];
array1.forEach(function(element) {
array2.forEach(function(item) {
if (item.indexOf(element) >= 0) {
resultArr.push(element);
}
});
});
return Array.from(new Set(resultArr)).sort();
}
// js
function tribonacci(array,num){
if(array.length>=num){
array = array.slice(0,num);
}
for( ;array.length<num; ){
array.push(array[array.length-1]+array[array.length-2]+array[array.length-3]);
}
return array;
}
// py
def tribonacci(signature, n):
#your code here
if n <= len(signature):
return signature[:n]
finalist=[]
finalist=signature
for i in range(len(finalist),n):
finalist.append(finalist[i-1]+finalist[i-2]+finalist[i-3])
return finalist
// py
def reverse_words(str):
strList=str.split(' ')
otherList=list()
for i in range(0,len(strList)):
otherList.append((strList[i])[::-1])
return ' '.join(otherList)