[8 kyu] Freudian translator
You probably know that number 42 is "the answer to life, the universe and everything" according to Douglas Adams' "The Hitchhiker's Guide to the Galaxy". For Freud, the answer was quite different...
In the society he lived in, people - women in particular - had to repress their sexual needs and desires. This was simply how the society was at the time. Freud then wanted to study the illnesses created by this, and so he digged to the root of their desires. This led to some of the most important psychoanalytic theories to this day, Freud being the father of psychoanalysis.
Now, basically, when a person hears about Freud, s/he hears "sex" because for Freud, everything was related to, and explained by sex.
In this kata, the function will take a string as its argument, and return a string with every word replaced by the explanation to everything, according to Freud. Note that an empty string, or no arguments, should return an empty string.
解:
function toFreud(string) {
return string.replace(/\S+/g, 'sex');
[7 kyu] Nth Smallest Element (Array Series #4)
Task
Given an array/list of integers, find the Nth smallest element in the array.
Notes
- Array/list size is at least 3.
- Array/list's numbers could be a mixture of positives , negatives and zeros.
- Repetition in array/list's numbers could occur, so don't remove duplications.
Input >> Output Examples
arr=[3,1,2] n=2 ==> return 2
arr=[15,20,7,10,4,3] n=3 ==> return 7
arr=[2,169,13,-5,0,-1] n=4 ==> return 2
arr=[2,1,3,3,1,2], n=3 ==> return 2
翻译:
给定一个数组/整数列表,找出数组中第N个最小的元素。
笔记
数组/列表大小至少为3。
数组/列表的数字可以是正数、负数和零的混合。
数组/列表的编号可能会重复,因此不要删除重复项。
解一:
function nthSmallest(arr, pos){
for(let i=1;i<pos;i++)
arr.splice(arr.indexOf(Math.min(...arr)),1);
return Math.min(...arr);
}
解二:
function nthSmallest(arr, pos){
return arr.sort((a,b)=>a-b)[pos-1]
}
[7 kyu] Sort Out The Men From Boys
Task
Given an array/list [] of n integers , Separate The even numbers from the odds , or Separate the men from the boys.
Input >> Output Examples:
menFromBoys ({7, 3 , 14 , 17}) ==> return ({14, 17, 7, 3})
menFromBoys ({-94, -99 , -100 , -99 , -96 , -99 }) ==> return ({-100 , -96 , -94 , -99})
翻译:
给定n个整数的数组/列表[],将偶数与奇数分开,返回一个数组/列表,其中偶数先于奇数,偶数按升序排列,奇数按降序排列
解:
function menFromBoys(arr){
let even = Array.from(new Set(arr.filter(x => x % 2 == 0).sort((a, b) => a - b)))
let odd = Array.from(new Set(arr.filter(x => x % 2 != 0).sort((a, b) => b - a)))
return even.concat(odd)
}
[8 kyu] Removing Elements
Take an array and remove every second element from the array. Always keep the first element and start removing with the next element.
Example:
["Keep", "Remove", "Keep", "Remove", "Keep", ...] --> ["Keep", "Keep", "Keep", ...]
None of the arrays will be empty, so you don't have to worry about that!
翻译:
取一个数组并从数组中删除每一个元素。始终保留第一个元素,然后开始移除下一个元素。
解:
function removeEveryOther(arr){
return arr.filter((x,index)=> index%2==0);
}
[7 kyu] Folding your way to the moon
Have you heard about the myth that if you fold a paper enough times, you can reach the moon with it? Sure you have, but exactly how many? Maybe it's time to write a program to figure it out.
You know that a piece of paper has a thickness of 0.0001m
. Given distance
in units of meters, calculate how many times you have to fold the paper to make the paper reach this distance.
(If you're not familiar with the concept of folding a paper: Each fold doubles its total thickness.)
Note: Of course you can't do half a fold. You should know what this means ;P
Also, if somebody is giving you a negative distance, it's clearly bogus and you should yell at them by returning null
(or whatever equivalent in your language). In Shell please return None
. In C and COBOL please return -1
.
翻译:
你听说过这样一个神话:如果你把一张纸叠够多次,你就能用它到达月球吗?当然有,但具体有多少?也许是时候编写一个程序来解决这个问题了。
你知道一张纸的厚度是0.0001米。给定以米为单位的距离,计算您需要折叠纸张多少次才能使纸张达到该距离。
(如果你不熟悉折叠纸的概念:每次折叠都会使总厚度加倍。)
注:当然你不能做半折。你应该知道这意味着什么;
此外,如果有人给你一个负距离,这显然是假的,你应该通过返回null(或你的语言中的任何等价物)来对他们大喊大叫。在Shell中,请返回“无”。在C和COBOL中,请返回-1。
解:
function foldTo(distance) {
if (distance < 0)
return null
let res = 0
while (distance > 0.0001) {
distance /= 2
res++
}
return res
}
[7 kyu] Even numbers in an array
Given an array of numbers, return a new array of length number containing the last even numbers from the original array (in the same order). The original array will be not empty and will contain at least "number" even numbers.
For example:
([1, 2, 3, 4, 5, 6, 7, 8, 9], 3) => [4, 6, 8]
([-22, 5, 3, 11, 26, -6, -7, -8, -9, -8, 26], 2) => [-8, 26]
([6, -25, 3, 7, 5, 5, 7, -3, 23], 1) => [6]
翻译:
给定一个数字数组,返回一个新的长度数字数组,其中包含原始数组中的最后偶数(顺序相同)。原始数组将不为空,并且至少包含“number”个偶数。
解:
const evenNumbers = (array, number) => array.filter(item => item % 2 === 0).slice(-number);