Académique Documents
Professionnel Documents
Culture Documents
Exemples
Entrée : "coderbyte"
Sortie : etybredoc
function FirstReverse(str) {
return newString ;
}
function FirstReverse(str) {
// le code va ici
return str.split('').reverse().join('') ;
Exemples
Entrée : 4
Sortie : 24
Entrée : 8
Sortie : 40320
function FirstFactorial(num) {
let factorial = 1 ;
retourner factorielle ;
function FirstFactorial(num) {
// le code va ici
if (num < 0) return NaN ;
return (num > 1) ? PremierFactoriel(num - 1) * num : 1 ;
function FirstFactorial(num) {
let answer = 1 ;
for (let index = 1 ; index <= num ; index++) {
answer *= index ;
}
Retourner la réponse ;
Exemples
function LongestWord(sen) {
sen = sen.trim() ;
sen = sen.replace(/[^a-zA-Zsd]/g, '') ;
return arr.shift() ;
// le code va ici
return sen ;
let validCharacters =
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' ;
let maxLength = 0 ;
let longestWord = '' ;
}
}
return longestWord ;
function LongestWord(sen) {
var trimmed = sen.replace(/[^\w]/g, ' ') ;
var words = trimmed.split(/\s+/) ;
var longestWord = words.sort(function(a, b) {return b.length - a.length;})[0] ;
return longestWord ;
}
Exemples
Entrée : "hello*3"
Sortie : Ifmmp*3
Entrée : "fun times !"
Sortie : gvO Ujnft !
function LetterChanges(str) {
str = str.trim().toLowerCase() ;
var len = str.length ;
var newStr = '' ;
function LetterChanges(str) {
return finalString ;
function LetterChanges(str) {
str = str.replace(/[a-zA-Z]/g, function(ch) {
si (ch === 'z') retourner 'a' ;
else if (ch === 'Z') return 'A' ;
else return String.fromCharCode(ch.charCodeAt(0) + 1) ;
});
Exemples
Entrée : 12
Sortie : 78
Entrée : 140
Sortie : 9870
function SimpleAdding(num) {
if (num === 1) {
retour 1 ;
}
else {
return num + SimpleAdding(num -1) ;
}
}
function SimpleAdding(num) {
let sum = 0 ;
for (i = 1 ; i <= num ; i++) {
sum += i ;
}
retourner la somme ;
function SimpleAdding(num) {
// le code va ici
if (num < 1) return NaN ;
else if (num === 1) return 1 ;
return SimpleAdding(num - 1) + num ;
}
Lettre en majuscule
Exemples
function LetterCapitalize(str) {
return str ;
function LetterCapitalize(str) {
return newString ;
}
function LetterCapitalize(str) {
// le code va ici
return str.split(/s+/).map(function(word) {
return word[0].toUpperCase() + word.slice(1) ;
}).join(' ') ;
}
Symboles simples
Exemples
Entrée : "+d+=3=+s+"
Sortie : true
Entrée : "f++d+"
Sortie : false
function SimpleSymbols(str) {
if (/^[a-zA-Z]/.test(str) || /[a-zA-Z]$/.test(str)) {
retourner faux ;
}
else if (/[^+][a-zA-Z]/.test(str) || /[a-zA-Z][^+]/.test(str)) {
retourner faux ;
}
else {
retourner vrai ;
}
function SimpleSymbols(str) {
// le code va ici
if (str.match(/[^+][A-Za-z][^+]/g)) return false ;
else if (str.match(/[+][A-Za-z][^+]/g)) return false ;
else if (str.match(/[^+][A-Za-z][+]/g)) return false ;
retourner vrai ;
}
Exemples
VIEW CHALLENGE
function CheckNums(num1,num2) {
if (num1 == num2) {
retourner "-1" ;
}
else {
return (num2 > num1) ;
}
}
function CheckNums(num1,num2) {
if (num2 > num1) {
retourner vrai ;
} else if (num1 === num2) {
retourner '-1' ;
} else {
retourner faux ;
}
function CheckNums(num1,num2) {
// le code va ici
si ((num1 - num2) < 0) retourner vrai ;
else if ((num1 - num2) > 0) return false ;
sinon, retournez -1 ;
}
Convertir le temps
Exemples
Entrée : 126
Sortie : 2:6
Entrée : 45
Sortie : 0:45
function TimeConvert(num) {
var hours = Math.floor(num/60) ;
var minutes = num % 60 ;
var str = heures + " :" + minutes ;
return str ;
}
// garder cet appel de fonction ici
// pour voir comment saisir des arguments en JavaScript, faites défiler vers le bas
TimeConvert(readline()) ;
function TimeConvert(num) {
function TimeConvert(num) {
// le code va ici
return Math.floor(num / 60) + ':' + (num % 60) ;
Soupe à l'alphabet
Exemples
Entrée : "coderbyte"
Sortie : bcdeeorty
Entrée : "hooplah"
Sortie : ahhloop
function AlphabetSoup(str) {
function AlphabetSoup(str) {
function AlphabetSoup(str) {
// le code va ici
return str.split('').sort(function(ch1, ch2) {
return ch1.charCodeAt(0) - ch2.charCodeAt(0) ;
}).join('') ;
}
Contrôle AB
La fonctionABCheck(str) prend le paramètrestr qui lui est passé et renvoie la chaîne true si les
caractèresa etb sont séparés par exactement 3 positions n'importe où dans la chaîne au moins une
fois(par exemple,"lane borrowed" renverrait true car il y a exactement trois caractères entre a etb).
Sinon, il renvoie la chaîne de caractères false.
Exemples
patt = /(a...b|b...a)/
return patt.test(str) ;
function ABCheck(str) {
if (str.length < 5) {
retourner faux ;
}
console.log(str.length) ;
retourner faux ;
function ABCheck(str) {
// le code va ici
Exemples
Entrée : "hello"
Sortie : 2
Entrée : "coderbyte"
Sortie : 3
function VowelCount(str) {
if (arr == null) {
retour 0 ;
}
else {
return arr.length ;
}
}
function VowelCount(str) {
function VowelCount(str) {
// le code va ici
return str.split('').filter(function(ch) {
return ['a', 'e', 'i', 'o', 'u'].indexOf(ch.toLowerCase()) > -1 ;
}).length ;
Nombre de mots
Exemples
Retourner la réponse ;
function WordCount(str) {
return str.split(' ').length ;
}
function WordCount(str) {
// le code va ici
return str.split(' ').length ;
}
Ex Oh
La fonctionExOh(str) prend le paramètrestr qui lui est passé et renvoie la chaînetrue s'il y a un
nombre égal dex et deo, sinon elle renvoie la chaînefalse. Seules ces deux lettres seront saisies dans la
chaîne, sans ponctuation ni chiffres. Par exemple : sistr est "xooxxxxooxo", la sortie doit renvoyerfalse
car il y a 6 x et 5 o.
Exemples
Entrée : "xooxxo"
Sortie : true
Entrée : "x"
Sortie : false
function ExOh(str) {
var regExPatternX = /x/gi ;
var regExPatternO = /o/gi ;
function ExOh(str) {
let xCount = 0 ;
let oCount = 0 ;
function ExOh(str) {
// le code va ici
var letters = str.split('') ;
var numOfEx = letters.filter(function(ch) {
return ch === 'x' ;
}).length ;
var numOfOh = letters.filter(function(ch) {
return ch === 'o' ;
}).length ;
Palindrome
Exemples
Entrée : "eye"
Sortie : true
function Palindrome(str) {
modified = str.replace(/W/g,"") ;
function Palindrome(str) {
function Palindrome(str) {
Arith Geo
Exemples
Entrée : [5,10,15]
Sortie : Arithmétique
Entrée : [2,4,16,24]
Sortie : -1
function ArithGeo(arr) {
var len = arr.length ;
var arithK = arr[1] - arr[0] ;
var geoK = arr[1] / arr[0] ;
retourner -1 ;
}
function ArithGeo(arr) {
if (arithmetic) {
return 'Arithmetic' ;
}
if (geometric) {
return 'Géométrique' ;
}
retourner -1 ;
function ArithGeo(arr) {
// le code va ici
var isArith = function(arr) {
if (arr.length < 2) return -1 ;
var difference = arr[1] - arr[0] ;
for (var i = 1 ; i < arr.length - 1 ; i++) {
si (arr[i + 1] - arr[i] !== différence) retournez faux ;
}
retourner vrai ;
};
Exemples
Entrée : [5,7,16,1,2]
Sortie : false
Entrée : [3,5,-1,8,12]
Sortie : true
function ArrayAdditionI(arr) {
var target ;
var addArr = arrayPrep(arr) ;
var len = addArr.length ;
var permNum = Math.pow(2, len) ;
console.log('test0 ', permNum, target, addArr) ;
function arrayPrep(arr2) {
arr.sort(function(a, b){
retourner a - b
});
cible = arr2.pop()
retour arr2
}
}
function ArrayAdditionI(arr) {
let combos = [] ;
let size = arr.length ;
let sum = 0 ;
for (let j = 0 ; j < combos[i].length ; j++) {
if (combos[i][j] === '1') {
sum += arr[j] ;
}
}
function ArrayAdditionI(arr) {
// le code va ici
vartedArr = arr.sort(function(a,b) {return a-b;}) ;
var largest = sortedArr.pop() ;
var sums = [] ;
Compte de lettres I
Exemples
if (newarr[0][1] == 1) {
retourner -1 ;
}
else {
return newarr[0][0] ;
}
}
function LetterCountI(str) {
let bestCount = 0 ;
let bestWord = '' ;
function LetterCountI(str) {
// le code va ici
var words = str.replace(/[^A-Za-zs]/g, '').split(/s+/) ;
Exemples
function lonely(arr) {
var len = arr.length ;
var testobj = {} ;
var output = [] ;
var count = 0 ;
for (var i = 0 ; i < len ; i++) {
var holder = arr[i] ;
if (!testobj[holder]) {
testobj[holder] = true ;
output[count++] = holder ;
}
}
retour de la sortie
}
}
function SecondGreatLow(arr) {
function SecondGreatLow(arr) {
// le code va ici
sorted = arr.sort(function(a,b){return a-b;}) ;
var greatest = sorted[sorted.length - 1] ;
var lowest = sorted[0] ;
var secondGreatest, secondLowest ;
Division Stringified
Exemples
if (numleng > 3) {
var arr = string.split("") ;
for (var i= numleng - 3 ; i > 0 ; i = i - 3) {
arr.splice(i, 0, ",") ;
}
var newstring = arr.join("") ;
}
function DivisionStringified(num1,num2) {
function DivisionStringified(num1,num2) {
// le code va ici
var format = function(num) {
var result = '' ;
var whole = Math.round(num) ;
retourner le résultat ;
}
Que la fonctionCountingMinutesI(str) prenne le paramètrestr qui lui est passé et qui sera deux
heures (chacune correctement formatée avec deux points et am ou pm) séparées par un trait d'union et
renvoie le nombre total de minutes entre les deux heures. L'heure est indiquée au format 12 heures. Par
exemple : sistr est9:00am-10:00am, la sortie doit être 60. Sistr est13h00-11h00, le résultat doit
être1320.
Exemples
Entrée : "12:30pm-12:00am"
Sortie : 690
Entrée : "1:23am-1:08am"
Sortie : 1425
Solutions pour Compter les minutes I
JAVASCRIPT
VIEW CHALLENGE
function CountingMinutesI(str) {
var seps = str.split("-") ;
var col1 = seps[0].indexOf(" :") ;
var col2 = seps[1].indexOf(" :") ;
var hour1 = parseInt(seps [0].slice(0, col1)) ;
var hour2 = parseInt(seps[1].slice(0, col2)) ;
var min1 = parseInt(seps[0].slice(col1+1, col1+3)) ;
var min2 = parseInt(seps[1].slice(col2+1, col2+3)) ;
var ampm1 = seps[0].slice(-2) ;
var ampm2 = seps[1].slice(-2) ;
if (ampm1 == "pm" && hour1 != 12) {
heure1 = heure1 + 12 ;
}
if (ampm2 == "pm" && hour2 != 12) {
heure2 = heure2 + 12 ;
}
if (hour1 == 12 && ampm1 == "am") {
heure1 = 0 ;
}
if (hour2 == 12 && ampm2 == "am") {
heure2 = 0 ;
}
var time1 = (hour1*60) + min1 ;
var time2 = (hour2*60) + min2 ;
if (diff < 0) {
diff = diff + (60 * 24) ;
}
retour diff ;
function CountingMinutesI(str) {
function CountingMinutesI(str) {
// le code va ici
var times = str.split('-') ;
var from = times[0], to = times[1] ;
function parseMinutes(timeStr) {
var time = timeStr.match(/d+/g) ;
var hour = parseInt(time[0]), minute = parseInt(time[1]) ;
var ampm = (timeStr.match(/[a|p]m/g)[0] === 'am') ? 0 : 1 ;
si (heure === 12) heure = 0 ;
Exemples
Entrée : [1, 2, 3]
Sortie : 0
Entrée : [4, 4, 4, 6, 2]
Sortie : 1
function MeanMode(arr) {
len = arr.length
//Étape 1 : déterminer la moyenne - explicite
function mean(arr) {
var count = 0 ;
for (var i = 0 ; i < len ; i++) {
count += arr[i]
}
console.log (count / len)
return count / len
}
//Etape 2 : déterminer le mode. Nous devons compter combien il y a de chaque type
dans le tableau. Une alternative consiste à maintenir un compteur, à trier le
tableau et à compter jusqu'à ce qu'un élément change, en gardant trace du nombre
maximum et de la valeur associée. La méthode suivante est beaucoup plus simple, en
supposant que l'on ait une connaissance de base des objets javascript. Il attribue
une clé à chaque nouvelle entrée et tient le compte du nombre d'entrées, puis crée un
tableau des paires clé-valeur créées.
function mode(arr) {
var obj = {} ;
for (var i = 0, len = arr.length ; i < len ; i++) {
if (obj[arr[i]] === undefined) {
obj[arr[i]] = 1 ;
}
else {
obj[arr[i]]++ ;
}
}
var objarr = [] ;
for (x in obj) {
objarr.push([x, obj[x]]) ;
}
objarr.sort(function(a, b) {return b[1] - a[1]}) ;
console.log(objarr[0][0]) ;
return objarr[0][0] ;
}
//Comparer la moyenne et le mode
return mode(arr) == mean(arr) ? 1 : 0 ;
}
function MeanMode(arr) {
// Mode recherche
let mostOccurances = 0 ;
let mode = 0 ;
for (let i = 0 ; i < arr.length ; i++) {
let marco = arr[i] ;
for (let j = i+1, count = 0 ; j < arr.length ; j++) {
if (marco === arr[j]) {
// match !
compter++ ;
if (count > mostOccurances) {
mostOccurances = count ;
mode = arr[j] ;
}
}
}
}
// Trouver la moyenne
laissez moyenne = 0 ;
for (let i = 0 ; i < arr.length ; i++) {
mean += arr[i] ;
}
mean = Math.round(mean/arr.length) ;
function MeanMode(arr) {
// le code va ici
function mode(arr) {
var counts = [], mode, maxCount = 0 ;
for (num of arr) {
num = num + ' ' ;
if (counts[num]) counts[num]++ ;
else counts[num] = 1 ;
}
function mean(arr) {
return arr.reduce(function(a,b) {return a+b;}, 0) / arr.length ;
}
La fonctionDashInsert(str) insère des tirets ('-') entre les deux nombres impairs destr. Par
exemple : sistr est454793, la sortie devrait être4547-9-3. Ne comptez pas le zéro comme un nombre
impair.
Exemples
Entrée : 99946
Sortie : 9-9-946
Entrée : 56730
Sortie : 567-30
function DashInsert(num) {
var strnum = num.toString() ;
var arr = strnum.split("") ;
retourner x ;
function DashInsert(str) {
function DashInsert(str) {
// le code va ici
chiffres = str.split('') ;
function isOdd(n) {
return parseInt(n) % 2 === 1 ;
}
Exemples
Entrée : "Hello-LOL"
Sortie : hELLO-lol
function SwapCase(str) {
function SwapCase(str) {
// le code va ici
return str.split('').map(function(letter) {
if (letter === letter.toLowerCase()) return letter.toUpperCase() ;
else if (letter === letter.toUpperCase()) return letter.toLowerCase() ;
sinon renvoyer la lettre ;
}).join('') ;
}
Exemples
Entrée : "75Nombre9"
Sortie : 84
retour ans
}
// garder cet appel de fonction ici
// pour voir comment saisir des arguments en JavaScript, faites défiler vers le bas
NumberAddition(readline()) ;
function NumberAddition(str) {
if (!DIGITS.includes(str[i])) {
if (number !== '') {
nombres.push(nombre) ;
}
nombre = '' ;
} else {
number += str[i] ;
let sum = 0 ;
for (let i = 0 ; i < numbers.length ; i++) {
sum += parseInt(numbers[i]) ;
}
retourner la somme ;
}
function NumberAddition(str) {
var numbers = str.match(/\d+/g) || [] ;
return numbers.reduce(function(sum, number) {return sum + Number(number)}, 0) ;
}
Exemples
function ThirdGreatest(strArr) {
return strArr[2] ;
function ThirdGreatest(strArr) {
// le code va ici
return strArr.sort(function(a, b) {
return (b.length - a.length) ;
})[2];
La fonctionPowersofTwo(num) prend le paramètrenum qui lui est passé, qui sera un entier, et
renvoie la chaînetrue s'il s'agit d'une puissance de deux. Si ce n'est pas le cas, la chaîne de
caractèresfalse est renvoyée. Par exemple, si l'entrée est 16, votre programme doit renvoyer la chaîne
true, mais si l'entrée est 22, la sortie doit être la chaîne false.
Exemples
Entrée : 4
Sortie : vrai
Entrée : 124
Sortie : faux
function PowersofTwo(num) {
else {
while (num >= 2){
var test = num%2 ;
if (test == 0){
num = num/2
ans = "true";}
else{
num = 0 ;
ans = "false"}
}
}
// le code va ici
retourner ans ;
function PowersofTwo(num) {
function PowersofTwo(num) {
// le code va ici
si (num === 1) retourner vrai ;
else {
return (num % 2 === 0) ? PowersofTwo(num / 2) : false ;
}
}
Exemples
Entrée : 4
Sortie : 0
Entrée : 19
Sortie : 2
VIEW CHALLENGE
function AdditivePersistence(num) {
function arrprep(numb) {
var numstr = numb.toString() ;
var arr = numstr.split('') ;
var numarr = arr.map(function(val) {
return parseInt(val)
})
retour numarr
}
function addup(arr) {
var redux = arr.reduce(function(a, b){
return a + b })
retour redux
}
var count = 0 ;
Retourner le compte
function AdditivePersistence(num) {
num = num.toString() ;
laissez count = 0 ;
}
retourner le compte ;
}
function AdditivePersistence(num) {
// le code va ici
function addDigits(num) {
return num.toString().split('').map(function(num) {
return parseInt(num) ;
}).reduce(function(a, b) {return a + b;}, 0) ;
}
Persistance multiplicative
Exemples
Entrée : 4
Sortie : 0
Entrée : 25
Sortie : 2
function MultiplicativePersistence(num) {
function numprep(num) {
var strnum = num.toString() ;
var arr = strnum.split('') ;
var numarr = arr.map(function(val) {
return parseInt(val)}) ;
retour numarr
}
function multnums(arr) {
var newnum = arr.reduce(function(a, b) {
return a * b})
retour du nouveau numéro
}
// le code va ici
var count = 0 ;
function MultiplicativePersistence(num) {
num = num.toString() ;
laissez count = 0 ;
while(1) {
if (num.length === 1) {
pause ;
}
compter++ ;
let sum = 1 ;
for (let i = 0 ; i < num.length ; i++) {
sum *= parseInt(num[i]) ;
}
num = sum.toString() ;
}
retourner le compte ;
function MultiplicativePersistence(num) {
// le code va ici
function multiplyDigits(num) {
return num.toString().split('').map(function(num) {
return parseInt(num) ;
}).reduce(function(a, b) {return a * b;}, 1) ;
}
Exemples
Entrée : ["1", "2", "E", "E", "3"]
Sortie : 1,2
Entrée : ["4", "E", "1", "E", "2", "E", "3", "E"]
Sortie : 4,1,2,3
function OffLineMinimum(strArr) {
var len = strArr.length ;
var count = 0 ;
var holdArr = [] ;
var ans = [] ;
function OffLineMinimum(strArr) {
let result = [] ;
for (let i = 0 ; i < strArr.length ; i++) {
if (strArr[i] === 'E') {
result.push(removeSmallest(strArr, i)) ;
else if (strArr[i] === 'R') {
// ne rien faire
} else {
// le numéro ne fait rien
}
}
strArr[smallestIndex] = 'R' ;
return smallestNumber ;
}
return result.join(',') ;
function OffLineMinimum(strArr) {
// le code va ici
var arr = [], result = [] ;
var log = "" ;
for (item of strArr) {
if (item === 'E') {
result.push(arr.shift()) ;
} else {
arr.push(parseInt(item)) ;
arr = arr.sort(function(a, b) {return a - b}) ;
}
}
return result.join(',') ;
}
Exemples
l'indice de retour ;
}
function ChangingSequence(arr) {
function ChangingSequence(arr) {
if (arr.length < 2) return -1 ;
var increasing = arr[0] < arr[1] ;
retourner -1 ;
}
Exemples
Entrée : [5,11,1,5,1]
Sortie : true
Entrée : [1,8,2,4,4]
Sortie : false
function OverlappingRanges(arr) {
var target = arr.pop() ;
var MaxLowerBound = Math.max(arr[0], arr[2]) ;
var MinUpperBound = Math.min(arr[1], arr[3]) ;
function OverlappingRanges(arr) {
laissez count = 0 ;
for (let i = arr[0] ; i <= arr[1] ; i++) {
if (i >= arr[2] && i <= arr[3]) {
compter++ ;
}
}
return (count >= arr[4]) ? true : false ;
}
function OverlappingRanges(arr) {
var range1 = [arr[0], arr[1]] ; // (a, b)
var range2 = [arr[2], arr[3]] ; // (c, d)
var minimumOverlap = arr[4] - 1 ;
Super-augmentation
Exemples
Entrée : [1,2,3,4]
Sortie : false
Entrée : [1,2,5,10]
Sortie : true
function Superincreasing(arr) {
var maxInd = arr.length - 1 ;
var target ;
var sum ;
}
Superincreasing(readline()) ;
function Superincreasing(arr) {
function Superincreasing(arr) {
if (arr.length < 2) return false ;
if (arr.length === 2) return arr[0] < arr[1] ;
si (arr[0] >= arr[1]) retournez faux ;
Distance de Hamming
Exemples
laissez count = 0 ;
for (let i = 0 ; i < strArr[0].length ; i++) {
if (strArr[0][i] !== strArr[1][i]) {
count++
}
}
retourner le compte ;
}
function HammingDistance(strArr) {
var word1 = strArr[0],
word2 = strArr[1],
len = word1.length,
compte = 0 ;
function HammingDistance(strArr) {
var hammingDistance = 0 ;
for (var i = 0 ; i < strArr[0].length ; i++) {
if (strArr[0][i] !== strArr[1][i]) {
hammingDistance++ ;
}
}
return hammingDistance ;
}
Surface du rectangle
Solution pour les utilisateurs les mieux notés
function RectangleArea(strArr) {
var obj = {} ;
obj.x1 = parseInt(strArr[0].match(/((-*d+)/)[1], 10) ;
obj.y1 = parseInt(strArr[0].match(/(-*d+))/)[1], 10) ;
function RectangleArea(strArr) {
let deltaX = 0 ;
let deltaY = 0 ;
coords.forEach(function(val){
if (x === val[0]) {
deltaY = Math.abs(val[1] - y) ;
}
if (y === val[1]) {
deltaX = Math.abs(val[0] - x) ;
}
});
function RectangleArea(strArr) {
var points = strArr.map(str => str.match(/\d+/g)) ;
var minX = points.map(point => point[0]).sort()[0] ;
var minY = points.map(point => point[1]).sort()[0] ;
var maxX = points.map(point => point[0]).sort().reverse()[0] ;
var maxY = points.map(point => point[1]).sort().reverse()[0] ;
Bitwise One
Exemples
return newStr ;
}
function BitwiseOne(strArr) {
Autres produits
Exemples
Entrée : [1,4,3]
Sortie : 12-3-4
Entrée : [3,1,2,6]
Sortie : 12-36-18-6
function OtherProducts(arr) {
let holdArray = [] ;
arr.forEach((val, ind, theArray) => {
newArray = Array.from(theArray)
newArray.splice(ind,1)
return holdArray.join('-') ;
}
function OtherProducts(arr) {
let results = [] ;
for (let i = 0 ; i < arr.length ; i++) {
let product = 1 ;
for (let j = 0 ; j < arr.length ; j++) {
if (i !== j) {
product *= arr[j] ;
}
}
results.push(product) ;
}
return results.join('-') ;
}
function product(arr) {
return arr.reduce((a,b) => a * b) ;
}
function OtherProducts(arr) {
var products = [] ;
for (var i = 0 ; i < arr.length ; i++) {
var other = arr.slice(0, i).concat(arr.slice(i + 1)) ;
produits.push(produit(autre)) ;
}
return products.join('-') ;
}
Exemples
Entrée : [0, 1, 2, 4, 1, 1, 1]
Sortie : false
function WaveSorting(arr) {
arr = arr.sort((a,b) => a - b).reverse() ;
newArr = [] ;
newArr = [] ;
function WaveSorting(arr) {
// tant que l'on peut mettre un autre nombre entre le même nombre, cela
fonctionne
return mostFrequent(arr) < (arr.length / 2) ;
}
Si les deux tableaux n'ont pas le même nombre d'éléments, il suffit d'ajouter les éléments restants au
nouveau tableau (exemple ci-dessous). Les deux tableaux auront le format suivant : [e1, e2, e3, ...] : [e1,
e2, e3, ...] où au moins un élément existera dans chaque tableau.
Exemples
function ArrayMatching(strArr) {
strArr = strArr.map(val => val.replace(/[[]]/g, '')
.split(/s*,s*/).map(val1 => parseInt(val1, 10))) ;
let resArr = [] ;
let arr1 = strArr[0] ;
let arr2 = strArr[1] ;
let length = Math.max(arr1.length, arr2.length) ;
function ArrayMatching(strArr) {
let results = [] ;
return results.join('-') ;
}
function ArrayMatching(strArr) {
arr1 = strArr[0].match(/\d+/g).map(Number) ;
arr2 = strArr[1].match(/\d+/g).map(Number) ;
Renversement binaire
Exemples
Entrée : "213"
Sortie : 171
Entrée : "4567"
Sortie : 60296
function BinaryReversal(str) {
//ajoute des zéros en tête pour que le nombre soit un nombre entier d'octets
let byteString = `${'0'.repeat(length % 8 === 0 ? 0 : 8 - length % 8)}${num}` ;
function BinaryReversal(str) {
return parseInt(newString, 2) ;
}
function toBinary(str) {
result = Number(str).toString(2) ;
// le tampon à gauche avec des 0 en tête pour en faire un multiple de 8
chiffres...
if (result.length % 8 !== 0)
return new Array(8 - (result.length % 8)).fill(0).join('') + result ;
else return result ;
}
function toDecimal(str) {
return parseInt(str, 2) ;
}
function BinaryReversal(str) {
//return toBinary(str) ;
var reverse = toBinary(str).split('').reverse().join('') ;
return toDecimal(reverse) ;
}
Entrée : [9, 9, 4, 2]
Sortie : 1
Entrée : [10, 22, 9, 33, 21, 50, 41, 60, 22, 68, 90]
Sortie : 7
function LongestIncreasingSequence(arr) {
let len = arr.length ;
let arrHolder = [] ;
//supprimez tous les tableaux qui ne sont pas ascendants (utilisez la fonction
ascend() pour le déterminer)
arrHolder = arrHolder.filter(val => ascend(val)) ;
function ascend(inputArr) {
let arrlen = inputArr.length ;
return inputArr.every((val, ind) => {
if (ind < arrlen - 1) {
return val < inputArr[ind + 1] ;
}
retourner vrai ;
});
}
// https://stackoverflow.com/questions/2631726/how-to-determine-the-longest-
increasing-subsequence-using-dynamic-programming
// Algorithme utilisé à partir d'ici
function LongestIncreasingSequence(arr) {
return lis.length ;
function increasing(arr) {
return arr.every(function(value, index, arr) {
var prev = (index === 0) ? 0 : arr[index - 1] ;
return prev < valeur ;
});
}
function LongestIncreasingSequence(arr) {
var longest = 0 ;
Paires paires
Exemples
Entrée : "3gy41d216"
Sortie : true
Entrée : "f09r27i8e67"
Sortie : false
function EvenPairs(str) {
return regEx.test(str) ;
function EvenPairs(str) {
let numberGroups = [] ;
}
}
function EvenPairs(str) {
var numbers = str.match(/\d+/g) ;
for (var number of numbers) {
si (hasEvenPairs(number)) retournez vrai ;
}
retourner faux ;
}
Prochain palindrome
La fonctionNextPalindrome(num) prend le paramètrenum qui lui est passé et renvoie le plus grand
nombre palindromique suivant. L'entrée peut être n'importe quel nombre entier positif. Par exemple :
sinum est 24, votre programme doit renvoyer33 car c'est le plus grand nombre suivant qui est un
palindrome.
Exemples
Entrée : 2
Sortie : 3
Entrée : 180
Sortie : 181
function NextPalindrome(num) {
while (true) {
numString = count.toString() ;
revString = numString.split('')
.reverse()
.join('') ;
if (revString === numString) return parseInt(numString, 10) ;
compter++ ;
}
}
function NextPalindrome(num) {
function isPalindrome(str) {
for (let i = 0, max = Math.floor(str.length/2) ; i < max ; i++) {
if (str[i] !== str[str.length-1-i]) {
retourner faux ;
}
}
retourner vrai ;
}
}
function isPalindrome(num) {
var numStr = num.toString() ;
return numStr.split('').reverse().join('') === numStr ;
}
function NextPalindrome(num) {
var nextNum = num + 1 ;
while (!isPalindrome(nextNum)) {
nextNum++ ;
}
return nextNum ;
}
Exemples
Entrée : 453857
Sortie : 85
Entrée : 363223311
Sortie : 63
function LargestPair(num) {
function LargestPair(num) {
num = num.toString() ;
let largestNum = 0 ;
for (let i = 1 ; i < num.length ; i++) {
let testNum = parseInt(num[i-1] + num[i]) ;
if (testNum > largestNum) {
largestNum = testNum ;
}
}
return largestNum ;
}
// garder cet appel de fonction ici
LargestPair(readline()) ;
function LargestPair(num) {
var max = 0 ;
var numStr = num.toString() ;
Exemples
Entrée : "abcdef"
Sortie : a
function NonrepeatingCharacter(str) {
function NonrepeatingCharacter(str) {
str = str.replace(/\s+/g, '') ;
var counts = {} ;
S'il n'y a pas deux nombres dont la somme est égale au premier élément du tableau, le programme
renverrait-1.
Exemples
function TwoSum(arr) {
arr.forEach(item => {
const compliment = réponse - item ;
if (history.has(compliment)) {
matches.push([item, compliment]) ;
} else {
history.add(item) ;
}
});
// Les correspondances ont été placées dans le tableau dans l'ordre inverse, donc
// nous devons maintenant les inverser.
matches.reverse() ;
function TwoSum(arr) {
var paires = [] ;
var sum = arr[0] ;
var rest = arr.slice(1) ;
paires = findPairs(rest, sum) ;
Exemples
function BitwiseTwo(strArr) {
function BitwiseTwo(strArr) {
var result = '' ;
for (var i = 0 ; i < strArr[0].length ; i++) {
if (strArr[0][i] === '1' && strArr[1][i] === '1') {
result += '1' ;
} else {
result += '0' ;
}
}
retourner le résultat ;
}
[]
[1]
[2]
[3]
[1, 2]
[1, 3]
[2, 3]
[1, 2, 3]
Vous pouvez voir ci-dessus que tous les ensembles possibles, ainsi que l'ensemble vide, sont générés.
Par conséquent, pour cette entrée, votre programme doit renvoyer8.
Exemples
Entrée : [1, 2, 3, 4]
Sortie : 16
Entrée : [5, 6]
Sortie : 4
function PowerSetCount(arr) {
let len = arr.length ;
return Math.pow(2, len) ;
}
// garder cet appel de fonction ici
PowerSetCount(readline()) ;
function PowerSetCount(arr) {
return Math.pow(2, arr.length) ;
}
function PowerSetCount(arr) {
return Math.pow(2, arr.length) ;
}
Chiffres du produit
Exemples
Entrée : 6
Sortie : 2
Entrée : 23
Sortie : 3
function ProductDigits(num) {
let pivot = Math.sqrt(num) ;
let value = num.toString().length + 1 ;
for (let i = 1 ; i <= pivot ; i++) {
if (num % i === 0) {
let maxFactor = i ;
maxCompFactor = num / maxFactor ;
maxFactorString = maxFactor.toString() ;
maxCompFactorString = maxCompFactor.toString() ;
let totalLength = maxFactorString.length +
maxCompFactorString.length ;
if (totalLength < value) {
valeur = longueur totale ;
}
}
}
valeur de retour ;
}
function ProductDigits(num) {
let pf = primeFactors(num) ;
if (pf.length === 1) {
return pf[0].toString().length + 1 ;
}
let facteurs = [] ;
function primeFactors(num) {
si (num === 1) retourner 1 ;
let pf = [] ;
function getDivisors(num) {
var divisors = [1] ;
for (var i = 2 ; i <= num / 2 ; i++) {
if (num % i === 0) {
diviseurs.push(i) ;
}
}
diviseurs.push(num) ;
return divisors ;
}
function ProductDigits(num) {
var divisors = getDivisors(num) ;
var paires = [] ;
Créateur de palindromes
La fonctionPalindromeCreator(str) prend le paramètrestr qui lui est passé et détermine s'il est
possible de créer une chaîne palindromique d'unelongueur minimale de 3 caractères en supprimant 1
ou 2 caractères. Par exemple : sistr est "abjchba", vous pouvez supprimer les caractèresjc pour obtenir
"abhba", qui est un palindrome. Pour cet exemple, votre programme doit renvoyer les deux caractères
qui ont été supprimés sans délimiteur et dans l'ordre où ils apparaissent dans la chaîne, donc jc. Si 1 ou 2
caractères ne peuvent pas être supprimés pour produire un palindrome, la chaîne de caractères
"impossible" est renvoyée. Si la chaîne d'entrée est déjà un palindrome, votre programme doit renvoyer
la chaînepalindrome.
L'entrée ne contiendra que des caractères alphabétiques minuscules. Votre programme doit toujours
tenter de créer la sous-chaîne palindromique la plus longue en supprimant 1 ou 2 caractères (voir le
deuxième exemple de test). Les 2 caractères que vous supprimez ne doivent pas nécessairement être
adjacents dans la chaîne.
Exemples
Entrée : "mmop"
Sortie : impossible
Entrée : "kjjjhjj"
Sortie : k
function PalindromeCreator(str) {
let len = str.length ;
//test pour voir si c'est déjà un palindrome
if (isPalindrome(str)) {
return 'palindrome' ;
}
for (let i = 0 ; i < len ; i++) {
let testArray = str.split('') ;
let res = testArray.splice(i, 1) ;
let newString = testArray.join('') ;
if (isPalindrome(newString)) {
console.log('un') ;
return res.join('') ;
}
}
for (let i = 0 ; i < len ; i++) {
let res = [] ;
for (let j = i ; j < len - 1 ; j++) {
let testArray = str.split('') ;
res[0] = testArray.splice(i, 1) ;
res[1] = testArray.splice(j, 1) ;
let newString = testArray.join('') ;
if(isPalindrome(newString)) {
return res.join('') ;
}
}
}
renvoie "pas possible" ;
}
//----------------helpers---------------------------
function isPalindrome(str) {
let newStr = str.split('').reverse().join('') ;
if (newStr === str) {
retourner vrai ;
}
retourner faux ;
}
function PalindromeCreator(str) {
if (isPalindrome(str)) {
return 'palindrome' ;
}
let palindromeCombos = [] ;
if (palindromeCombos.length === 0) {
renvoie "pas possible" ;
}
// Trier de manière à ce que les deux premières lettres trouvées soient renvoyées
en premier pour le cas où
// il y a plusieurs valeurs
palindromeCombos.sort(function(a,b){
return parseInt(a,2) < parseInt(b,2) ;
});
retourner le résultat ;
function isPalindrome(str) {
return (str === str.split('').reverse().join('')) ? true : false ;
}
function isPalindrome(str) {
return str === str.split('').reverse().join('') ;
}
function PalindromeCreator(str) {
if (isPalindrome(str)) return 'palindrome' ;
La fonctionBasicRomanNumerals(str) doit lirestr qui sera une chaîne de chiffres romains. Les
chiffres utilisés sont :I pour 1,V pour 5,X pour 10,L pour 50,C pour 100,D pour 500 etM pour 1000. En
chiffres romains, pour créer un nombre comme 11, il suffit d'ajouter un 1 après le 10, ce qui donne XI.
Mais pour créer un nombre comme 19, vous utilisez lanotation par soustraction qui consiste à ajouter un
I devant un X ou un V (ou à ajouter un X devant un L ou un C). Ainsi, 19 en chiffres romains est XIX.
Le but de votre programme est de retourner l'équivalent décimal du chiffre romain donné. Par exemple :
sistr est "XXIV", votre programme doit renvoyer24
Exemples
Entrée : "IV"
Sortie : 4
Entrée : "XLVI"
Sortie : 46
function BasicRomanNumerals(str) {
let letterObj = {
I : 1,
V : 5,
X : 10,
L : 50,
C : 100,
D : 500,
M : 1000
}
let res = 0 ;
let len = str.length ;
for (let i = 0 ; i < len ; i++) {
if (!letterObj[str[i + 1]] || letterObj[str[i]] >= letterObj[str[i +
1]]) {
res += letterObj[str[i]] ;
} else {
res += (letterObj[str[i + 1]] - letterObj[str[i]]) ;
i++ ;
}
}
return res ;
}
function BasicRomanNumerals(str) {
/*
Symbole I V X L C D M
Valeur 1 5 10 50 100 500 1,000
*/
const ROMAN_I = 1 ;
const ROMAN_V = 5 ;
const ROMAN_X = 10 ;
const ROMAN_L = 50 ;
const ROMAN_C = 100 ;
const ROMAN_D = 500 ;
const ROMAN_M = 1000 ;
let sum = 0 ;
switch(symbole) {
cas 'I' :
if (nextSymbol === 'V') {
sum += ROMAN_V - ROMAN_I ;
i++ ;
} else if (nextSymbol === 'X') {
sum += ROMAN_X - ROMAN_I ;
i++ ;
} else {
sum += ROMAN_I ;
}
pause ;
cas 'V' :
sum += ROMAN_V ;
pause ;
cas 'X' :
if (nextSymbol === 'L') {
sum += ROMAN_L - ROMAN_X ;
i++ ;
else if (nextSymbol === 'C') {
sum += ROMAN_C - ROMAN_X ;
i++ ;
} else {
sum += ROMAN_X ;
}
pause ;
cas 'L' :
sum += ROMAN_L ;
pause ;
cas 'C' :
if (nextSymbol === 'D') {
sum += ROMAN_D - ROMAN_C ;
i++ ;
else if (nextSymbol === 'M') {
sum += ROMAN_M - ROMAN_C ;
i++ ;
} else {
sum += ROMAN_C ;
}
pause ;
cas 'D' :
sum += ROMAN_D ;
pause ;
cas 'M' :
sum += ROMAN_M ;
pause ;
par défaut :
// Caractère ou espace illégal
pause ;
}
}
retourner la somme ;
}
function BasicRomanNumerals(str) {
var decimals = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1] ;
var romans = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV',
'I'] ;
var output = 0 ;
Autre exemple : siarr est [4, 5, 2, 3, 1, 0], vous pouvez distribuer les sandwichs dans l'ordre suivant :
[3, 0, 1, 0, 0], ce qui fait que tous les niveaux de faim sont les suivants : [2, 2, 2, 1, 0] : [2, 2, 2, 1, 0].
Les différences entre chaque paire de personnes sont maintenant : 0, 0, 1, 1 et votre programme devrait
donc renvoyer la différence finale minimisée de2.
Exemples
Entrée : [5, 2, 3, 4, 5]
Sortie : 1
Entrée : [3, 2, 1, 0, 4, 1, 0]
Sortie : 4
function FoodDistribution(arr) {
let treats = arr.shift() ;
let myArray = arr.slice(0) ;
let arrMin = arr.sort((val1, val2) => val2 - val1).pop()
let len = myArray.length ;
//vérifie si nous avons assez de friandises pour que tout le monde atteigne le
meilleur niveau actuel
let testCount = myArray.reduce((val1, val2) => {
retour val1 + val2 - arrMin ;
}, 0);
if (testCount <= treats) {
retour 0 ;
}
laissez count = 0 ;
for (let i = 0, len = valQuantArr.length ; i < len - 1 ; i++) {
count += Math.abs(valQuantArr[i].value - valQuantArr[i + 1].value) ;
}
retourner le compte ;
}
//-----------------helpers-----------------------
flattenMid = (arr, treats, q) => {
let index = 0 ;
while (treats > 0 && index > -1) {
index = arr.findIndex((val, ind) => {
return val.quant <= q && ind >= 1 && ind < arr.length - 1 &&
val.value > arr[ind - 1].value && val.value > arr[ind + 1].value ;
});
if (index >= 0) {
arr[index].value -- ;
les friandises -= q ;
}
}
return [objectify(arr), treats] ;
}
function FoodDistribution(arr) {
// Trop de sandwichs
if (comboSum > sandwiches) {
continuer ;
}
return lowestHungerDifference ;
function getHungerDifference(arr){
let diff = 0 ;
for (let i = 1 ; i < arr.length ; i++) {
diff += Math.abs(arr[i] - arr[i-1]) ;
}
retour diff ;
}
function FoodDistribution(arr) {
var N = arr[0] ;
var hungerLevels = arr.slice(1) ;
while (N > 0) {
var maxDifference = 0 ;
// l'index pour le sandwich suivant
var mostNeeded = -1 ;
for (var i = 0 ; i < hungerLevels.length - 1 ; i++) {
var difference = Math.abs(hungerLevels[i + 1] - hungerLevels[i]) ;
if (difference > maxDifference) {
maxDifference = différence ;
mostNeeded = (hungerLevels[i + 1] > hungerLevels[i]) ? (i + 1) : i ;
}
}
// Maintenant, nous savons qui a tant besoin de ce sandwich, et nous le
distribuons.
if (mostNeeded === -1) {
// les différences adjacentes sont toutes des 0, alors arrêtez de donner
les sandwiches
retour 0 ;
} else {
hungerLevels[mostNeeded] -= 1 ;
N-- ;
}
}
return sumOfDifferences ;
}
Trois Sommes
Exemples
function ThreeSum(arr) {
if (digitsSum !== 3) {
continuer ;
}
function ThreeSum(arr) {
var sum = arr[0] ;
var numbers = arr.slice(1) ;
for (var i = 0 ; i < numbers.length ; i++) {
for (var j = i + 1 ; j < numbers.length ; j++) {
for (var k = j + 1 ; k < numbers.length ; k++) {
if (nombres[i] + nombres[j] + nombres[k] === sum) {
retourner 'true' ;
}
}
}
}
retourner "false" ;
}
Chemin correct
Par exemple : sistr est "r?d?drdd", votre programme doit produire la chaîne correcte finale qui
permettra de former un chemin depuis le coin supérieur gauche d'une grille 5x5 jusqu'au coin inférieur
droit. Pour cette entrée, votre programme devrait donc renvoyer la chaînerrdrdrdrdd. Il n'y aura jamais
qu'un seul chemin correct et il y aura toujours au moins un point d'interrogation dans la chaîne d'entrée.
Exemples
//nous allons essayer chaque possibilité jusqu'à ce que nous en trouvions une
qui fonctionne, ce qui représente 4^num permutations
let total = Math.pow(4, num) ;
function CorrectPath(str) {
let goodPaths = [] ;
commutateur (direction) {
cas '0' : // droite
tryPath += 'r' ;
pause ;
case '1' : // vers le bas
tryPath += 'd' ;
pause ;
case '2' : // gauche
tryPath += 'l' ;
pause ;
cas '3' : // up
tryPath += 'u' ;
pause ;
par défaut :
// Ne devrait jamais se produire
pause ;
}
} else {
tryPath += str[i] ;
}
}
if (pathGood(tryPath)) {
goodPaths.push(tryPath) ;
}
});
let grid = [
[1,0,0,0,0],
[0,0,0,0,0],
[0,0,0,0,0],
[0,0,0,0,0],
[0,0,0,0,0]
] ; // but 4,4
}
}
function findMissingChars(str) {
// d'abord, générer tous les cas possibles : remplacer ? par des directions
var permutations = [''] ;
for (var i = 0 ; i < str.length ; i++) {
if (str[i] === '?') {
var newPermutations = [] ;
permutations.forEach(function(permutation) {
newPermutations.push(permutation + 'u') ;
newPermutations.push(permutation + 'd') ;
newPermutations.push(permutation + 'l') ;
newPermutations.push(permutation + 'r') ;
});
permutations = newPermutations ;
} else {
permutations = permutations.map(permutation => permutation + str[i]) ;
}
}
function CorrectPath(str) {
var validPaths = findMissingChars(str) ;
Il n'y aura jamais qu'une seule solution et la liste des poids disponibles ne sera pas vide. Il est également
possible d'ajouter deux poids d'un seul côté de la balance pour l'équilibrer. S'il n'est pas possible
d'équilibrer la balance, votre programme doit renvoyer la chaîne de caractères not possible.
Exemples
function ScaleBalancing(strArr) {
/*
Générer toutes les combinaisons possibles de poids ET les permutations
gauche/droite - 3^n temps
0 - Poids non utilisé
1 - Poids sur le côté gauche
2 - Poids sur le côté droit
*/
let combos = [] ;
for (let i = 0, max = Math.pow(3, weights.length) ; i < max ; i++) {
let combo = i.toString(3) ;
let numWeights = combo.split('').reduce((a,v) => a + (parseInt(v) > 0 | 0),
0) ;
// Tampon
while (combo.length < weights.length) {
combo = '0' + combo ;
}
combos.push(combo) ;
}
// console.log(combos) ;
// Tester les combos
let goodCombos = [] ;
combos.forEach(function(combo){
let left = objets[0] ;
let right = objets[1] ;
if (goodCombos.length === 0) {
renvoie "pas possible" ;
}
// Trier d'abord par le nombre de poids physiques utilisés, puis par le poids
total s'il y a plusieurs ensembles.
goodCombos.sort(function(a, b){
let aCount = a.split('').reduce((ac,v) => ac + (parseInt(v) > 0 | 0), 0) ;
let bCount = b.split('').reduce((ac,v) => ac + (parseInt(v) > 0 | 0), 0) ;
function ScaleBalancing(strArr) {
var weights = strArr[1].match(/\d+/g).map(Number) ;
var weightsOnScale = strArr[0].match(/\d+/g).map(Number) ;
var leftWeight = weightsOnScale[0] ;
var rightWeight = weightsOnScale[1] ;
// pas de solution
renvoie "pas possible" ;
}
Exemples
words.forEach(function(word){
let nombres = 0 ;
let threeAdjacent = false ;
let usedDigits = '' ;
for (let i = 0 ; i < word.length ; i++) {
// Vérifier si des chiffres ont été utilisés
if (usedDigits.includes(word[i])) {
// utilisé ! échec
résultat = faux ;
}
if (DIGITS.includes(word[i])) {
numéros++ ;
usedDigits += word[i] ;
if (numbers === 3) {
if (DIGITS.includes(word[i-1]) && DIGITS.includes(word[i-2])) {
threeAdjacent = true ;
}
}
}
// Vérifier la présence de 3 chiffres adjacents précédents
}
} else {
résultat = faux ;
}
});
retourner le résultat ;
}
function ThreeNumbers(str) {
var words = str.split(' ') ;
var numbersOfWords = words.map(word => word.match(/\d+/g)) ;
retourner vrai ;
}
function ThreeNumbers(str) {
Exemples
Entrée : "abcdefghijklmnopqrstuvwxyyyy"
Sortie : false
Entrée : "abc123456kmo"
Sortie : false
function AlphabetSearching(str) {
str = str.toLowerCase() ;
for (let i = 97 ; i < 97 + 26 ; i++) {
let char = String.fromCharCode(i) ;
if (!str.includes(char)) {
retourner faux ;
}
}
retourner vrai ;
}
function AlphabetSearching(str) {
function isAlpha(char) {
return /[A-Za-z]/.test(char) ;
}
function AlphabetSearching(str) {
var foundLetters = [] ;
for (var i = 0 ; i < str.length ; i++) {
if ( isAlpha(str[i]) && (foundLetters.indexOf(str[i]) === -1) ) ) {
foundLetters.push(str[i]) ;
}
}
return foundLetters.length === 26 ;
}
Exemples
function TimeDifference(strArr) {
//times contiendra nos différences de temps
let times = [] ;
let newStrArr = strArr.map (val => {
let matches = val.match(/^(\d+) :(\d+)([ap]m)$/) ;
let hours = parseInt(matches[1], 10) ;
let minutes = parseInt(matches[2], 10) ;
let half = matches[3] ;
if (half === 'am' && hours === 12) {
heures = 0 ;
}
if (half === 'pm' && hours !== 12) {
heures += 12 ;
}
retour (heures * 60 + minutes) ;
})
.sort((a, b) => { return a - b}) ;
//tricky - le deuxième exemple montre qu'il faut tenir compte de l'heure la plus
proche à la fois le jour 0 et le jour 1.
newStrArr.push(newStrArr[0] + 24 * 60) ;
let timesInSeconds = [] ;
strArr.forEach(function(strTime){
let pair = strTime.split(':') ;
let hours = (pair[1][2] === 'a') ? parseInt(pair[0]) % 12 : parseInt(pair[0])
% 12 + 12 ;
let seconds = parseInt(pair[1].substr(0,2)) ;
let totalSeconds = heures * 60 + secondes ;
timesInSeconds.push(totalSeconds) ;
});
return smallestDifference ;
}
function TimeDifference(strArr) {
let array = strArr.map(value => {
let matches = value.match(/^(\d+) :(\d+)([ap]m)$/) ;
let h = parseInt(matches[1], 10) ;
let m = parseInt(matches[2], 10) ;
if (matches[3] === 'am' && h === 12) {
h = 0 ;
else if (matches[3] === 'pm' && h !== 12) {
h += 12 ;
}
retour (60 * h + m) ;
}).sort(function(a, b) {
retourner a - b ;
});
array.push(array[0] + 24 * 60) ;
let times = [] ;
for (let i = 0 ; i < array.length - 1 ; i++) {
times.push(array[i+1] - array[i]) ;
}
return Math.min(...times) ;
}
// garder cet appel de fonction ici
TimeDifference(readline()) ;
Rangée de triangles
Exemples
Entrée : 1
Sortie : 2
Entrée : 2
Sortie : 4
function TriangleRow(num) {
return Math.pow(2, num) ;
}
console.log(TriangleRow(5)) ;
function TriangleRow(num) {
let triangle = [] ;
for (let row = 0 ; row <= num ; row++) {
let rowArr = [] ;
for (let i = 0 ; i <= row ; i++) {
if (i === 0) {
rowArr.push(1) ;
continuer ;
}
let delta = (i < triangle[row-1].length) ? triangle[row-1][i] : 0 ;
rowArr.push(triangle[row-1][i-1] + delta) ;
}
triangle.push(rowArr) ;
}
}
// garder cet appel de fonction ici
TriangleRow(readline()) ;
function TriangleRow(num) {
// la réponse facile - la somme est toujours égale à n^2
//retourne num * num ;
// la manière forte
var rowSum = 0 ;
for (k = 0 ; k <= num ; k++) {
result = pascalTriangle(num, k) ;
rowSum += result ;
}
return rowSum ;
}
Carré vocalique
Par exemple :strArr est ["abcd", "eikr", "oufj"] alors cette matrice ressemble à ce qui suit : ab c d ei k r o
u f jDans cette matrice, il y a un carré 2x2 de voyelles commençant à la deuxième ligne et à la première
colonne, à savoir ei, ou. Si un carré de 2x2 voyelles est trouvé, votre programme doit renvoyer la
position supérieure gauche (ligne-colonne) du carré, donc pour cet exemple, votre programme doit
renvoyer1-0. S'il n'existe pas de carré 2x2 de voyelles, la chaînenon trouvée est renvoyée. S'il y a
plusieurs carrés de voyelles, il renvoie celui qui se trouve à la position la plus en haut à gauche de toute
la matrice. La matrice d'entrée sera au moins de taille 2x2.
Exemples
function VowelSquare(strArr) {
function isVowel(letter) {
const VOWELS = 'aeiou' ;
return VOWELS.includes(letter) ;
}
}
function VowelSquare(strArr) {
var matrix = strArr.map(row => row.split('')) ;
Exemples
Entrée : [1, 0, 0, 0, 2, 2, 2]
Sortie : 4
Entrée : [2, 0, 0, 0, 2, 2, 1, 0]
Sortie : 1
function ClosestEnemy(arr) {
if (!arr.includes(2)) {
retour 0 ;
}
loc1 = arr.findIndex(val => {
return val === 1 ;
});
function ClosestEnemy(arr) {
let hero = -1 ;
for (let i = 0 ; i < arr.length ; i++) {
if (arr[i] === 1) { // Trouvé le héros
héros = i ;
}
}
// Rechercher à droite
let deltaRight = undefined ;
for (let i = hero+1 ; i < arr.length ; i++) {
if (arr[i] === 2) { // L'ennemi a été trouvé
deltaRight = i - hero ;
pause ;
}
}
// Recherche à gauche
let deltaLeft = undefined ;
for (let i = hero-1 ; i >= 0 ; i--) {
if (arr[i] === 2) { // L'ennemi a été trouvé
deltaLeft = hero - i ;
pause ;
}
}
function ClosestEnemy(arr) {
// indice de 1
var me = arr.indexOf(1) ;
var minimumDistance = arr.length ;
0 0 0 0 10 0 0
0 0 02
0 0 0
2
Pour cette entrée, votre programme devrait renvoyer2 car l'ennemi le plus proche (2) se trouve à 2
espaces du 1 en se déplaçant vers la gauche pour passer de l'autre côté, puis en se déplaçant vers le bas
une fois. Le tableau contiendra un nombre quelconque de 0 et de 2, mais un seul 1. Il se peut également
qu'il ne contienne aucun 2, auquel cas votre programme devrait renvoyer un 0.
Exemples
function ClosestEnemyII(strArr) {
/première étape - renvoyer 0 s'il n'y a pas de 2 dans le tableau
let twosies = strArr.filter(val => {
return val.includes("2") ;
});
if (!twosies.length) {
retour 0 ;
}
/deuxième étape - obtenir les coordonnées du 1 (cibleX, cibleY)
targetY = strArr.findIndex(val => {
return val.includes('1') ;
});
targetX = strArr[targetY].search(/1/) ;
/troisième étape : trouver le plus petit chemin vers a 2
let res = strArr.length * strArr[0].length ;
//--------------------helpers----------------------
//malgré le nom, à utiliser pour la distance entre les colonnes et les lignes
function rowDist(y, x, len) {
return Math.min(Math.abs(x - y), Math.abs(y - x + len)) ;
}
function ClosestEnemyII(strArr) {
// Trouver le héros
let heroY = -1 ;
let heroX = -1 ;
for (let i = 0 ; i < strArr.length ; i++) {
let result = strArr[i].indexOf(1) ;
if (result > -1) {
heroX = result ;
heroY = i ;
}
}
if (enemies.length === 0) {
retour 0 ;
}
//console.log(enemies) ;
return closestDistance ;
// trouver la distance entre deux éléments dont les indices [ligne, colonne] sont
donnés
function getDistance(matrixSize, indices1, indices2) {
var rowDistance = Math.min(Math.abs(indices2[0] - indices1[0]),
Math.abs(indices1[0] - (indices2[0] - matrixSize)) ;)
var columnDistance = Math.min(Math.abs(indices2[1] - indices1[1]),
Math.abs(indices1[1] - (indices2[1] - matrixSize)) ;)
return rowDistance + columnDistance ;
}
function ClosestEnemyII(strArr) {
var matrix = strArr.map(line => line.split('').map(Number)) ;
var minDistance = matrix.length * 2 ;
// emplacement du moi : 1
var meIndices ;
// emplacements des ennemis : 2
var enemiesIndices = [] ;
Exemples
Entrée : "5556293383563665"
Sortie : false
Entrée : "5788888888882339999"
Sortie : true
function NumberStream(str) {
for (let i = 2 ; i < 10 ; i++) {
let iChar = i.toString() ;
let needle = iChar.repeat(i) ;
if (str.indexOf(needle) !== -1) {
retourner vrai ;
}
}
// le code va ici
retourner faux ;
function NumberStream(str) {
function NumberStream(str) {
// génère d'abord des motifs
var patterns = [] ;
for (var i = 1 ; i < 10 ; i++) {
patterns.push(String(i).repeat(i)) ;
}
Exemples
Entrée : [0, 0, 2, 3, 7, 1]
Sortie : 13
function LargestFour(arr) {
let newArr = arr.sort((val1, val2) => {
retour val2 - val1 ;
})
.splice(0, 4) ;
return newArr.reduce((val1, val2) => {
retourner val1 + val2 ;
}, 0);
}
// garder cet appel de fonction ici
LargestFour(readline()) ;
function LargestFour(arr) {
function LargestFour(arr) {
return arr.sort((a, b) => a < b).slice(0, 4).reduce((sum, v) => sum + v, 0) ;
}
Caractères distincts
Exemples
Entrée : "12334bbmma:=6"
Sortie : true
Entrée : "eeeemmmmmmm1000"
Sortie : false
function DistinctCharacters(str) {
let mySet = new Set(str.split('')) ;
return mySet.size >= 10 ? true : false
}
function DistinctCharacters(str) {
let charCodes = [] ;
for (let i = 0 ; i < str.length ; i++) {
if (!charCodes.includes(str.charCodeAt(i))) {
charCodes.push(str.charCodeAt(i)) ;
}
}
return (charCodes.length >= 10) ? true : false ;
function DistinctCharacters(str) {
var distincts = {} ;
Questions Marques
Par exemple : sistr est "arrb6???4xxbl5???eee5", votre programme doit renvoyertrue car il y a
exactement 3 points d'interrogation entre 6 et 4, et 3 points d'interrogation entre 5 et 5 à la fin de la
chaîne.
Exemples
Entrée : "aa6?9"
Sortie : false
Entrée : "acc?7??sss?3rr1??????5"
Sortie : true
function QuestionsMarks(str) {
let numPlaces = [] ;
//présomption de faux, jusqu'à ce que le drapeau devienne vrai
let flag = false ;
Mallette Camel
Faire en sorte que la fonctionCamelCase(str) prenne le paramètrestr qui lui est passé et le renvoie
dans un format camel case correct où la première lettre de chaque mot est en majuscule (à l'exception de
la première lettre). La chaîne ne contiendra que des lettres et une combinaison de caractères de
ponctuation séparant chaque mot.
Par exemple : sistr est "BOB aime le codage", votre programme doit renvoyer la
chaînebobLovesCoding.
Exemples
return strArr.join('') ;
}
Conversion ASCII
Exemples
La fonctionSimpleEvens(num) doit vérifier si tous les nombres du paramètre passé sont pairs. Si
c'est le cas, il renvoie la chaînetrue, sinon il renvoie la chaînefalse. Par exemple : sinum est 4602225,
votre programme doit renvoyer la chaînefalse car 5 n'est pas un nombre pair.
Exemples
Entrée : 2222220222
Sortie : true
Entrée : 20864646452
Sortie : false
function SimpleEvens(num) {
return num.toString(10).search(/[13579]/) === -1 ? 'true' : 'false' ;
}
SimpleEvens(readline()) ;
Affaire du serpent
Faire en sorte que la fonctionSnakeCase(str) prenne le paramètrestr qui lui est passé et le renvoie
dans un format snake case approprié où chaque mot est en minuscule et séparé des mots adjacents par un
trait de soulignement. La chaîne ne contiendra que des lettres et une combinaison de caractères de
ponctuation séparant chaque mot.
Par exemple : sistr est "BOB aime le codage", votre programme doit renvoyer la
chaînebob_loves_coding.
Exemples
SnakeCase(readline()) ;
Trouver l'intersection
Par exemple : sistrArr contient ["1, 3, 4, 7, 13", "1, 2, 4, 13, 15"], la sortie devrait renvoyer "1,4,13"
car ces nombres apparaissent dans les deux chaînes. Le tableau fourni ne sera pas vide, et chaque chaîne
à l'intérieur du tableau sera composée de nombres triés par ordre croissant et pourra contenir des
nombres négatifs.
Exemples
const resultMap = {} ;
const result = [] ;
Exemples
Entrée : [2, 2, 2, 2, 4, 1]
Sortie : false
Fusion de chaînes
La fonctionStringMerge(str) doit lire le paramètrestr qui lui est transmis et qui contient une
grande chaîne de caractères alphanumériques avec un seul caractère astérisque qui sépare la chaîne en
deux chaînes distinctes. Votre objectif est de renvoyer une nouvelle chaîne en associant les caractères
situés aux emplacements correspondants dans les deux chaînes. Par exemple : si str est "abc1*kyoo",
votre programme devrait renvoyer la chaîneakbyco1o parce que a va de pair avec k, b va de pair avec y,
etc. La chaîne sera toujours divisée de manière égale avec l'astérisque au centre.
Exemples
Entrée : "aaa*bbb"
Sortie : ababab
Entrée : "123hg*aaabb"
Sortie : 1a2a3ahbgb
function StringMerge(str) {
const cleanString = str.replace(/[^\w*]/g, '') ;
const len = (cleanString.length - 1) / 2 ;
let newString = '' ;
const arr = str.split('*') ;
Un décrémenté
Exemples
Entrée : "56"
Sortie : 0
Entrée : "9876541110"
Sortie : 6
function OneDecremented(num) {
let counter = 0 ;
let arr = num.toString().split('') ;
arr.forEach((val, ind) => {
if (parseInt(val, 10) - parseInt(arr[ind + 1], 10) === 1) {
contre++ ;
}
})
retourner le compteur ;
}
Exemples
Entrée : [1, 1, 1, 2]
Sortie : 1
function ElementMerger(arr) {
if (arr.length === 1) {
return arr[0] ;
} else {
newArr = [] ;
arr.forEach((val, ind) => {
if (ind < arr.length - 1) {
newArr.push(Math.abs(val - arr[ind + 1])) ;
}
})
return ElementMerger(newArr) ;
}
}
ElementMerger(readline()) ;
GCF
Exemples
Entrée : [1, 6]
Sortie : 1
Numéro de série
La fonctionSerialNumber(str) prend le paramètrestr qui lui est transmis et détermine s'il s'agit
d'un numéro de série valide avec les contraintes suivantes :
1. Il doit contenir trois séries de trois chiffres (de 1 à 9) séparées par un point.
2. La première série de chiffres doit être un nombre pair.
3. La deuxième série de chiffres doit être un nombre impair.
4. Le dernier chiffre de chaque série doit être plus grand que les deux chiffres précédents de la même
série.
Si toutes les contraintes ci-dessus sont respectées dans la chaîne, votre programme doit renvoyer la
chaînetrue, sinon votre programme doit renvoyer la chaînefalse. Par exemple : sistr est "224.315.218",
votre programme doit renvoyer "true".
Exemples
Entrée : "11.124.667"
Sortie : false
Entrée : "114.568.112"
Sortie : true
function SerialNumber(str) {
//vérifier le format de la chaîne
let goal = /^\d{3}\\N- \d{3}\N- \N- \N- \N$/
if (!goal.test(str)) {
retourner "false" ;
}
Périodes de la chaîne
Par exemple : sistr est "abcababcababcab", votre programme doit renvoyerabcab car il s'agit de la plus
longue sous-chaîne répétée trois fois pour créer la chaîne finale. Autre exemple : si str est
"abababababab", votre programme doit renvoyerababab car il s'agit de la sous-chaîne la plus longue. Si
la chaîne d'entrée ne contient qu'un seul caractère, votre programme doit renvoyer la chaîne -1.
Exemples
Entrée : "abcxabc"
Sortie : -1
Entrée : "affedaaffed"
Sortie : -1
function StringPeriods(str) {
// nous n'utiliserons que les longueurs des sous-chaînes qui se divisent
uniformément en str.
const len = str.length ;
const pivot = Math.max(Math.trunc(Math.sqrt(len)), len) ;
for (let i = 2 ; i <= pivot ; i++) {
if (len % i === 0) {
const block = str.slice(0, len / i) ;
if (block.repeat(i) === str) {
bloc de retour ;
}
}
}
retourner -1 ;
}
Échangeur de palindromes
Exemples
Entrée : "anna"
Sortie : anna
Entrée : "kyaak"
Sortie : kayak
function PalindromeSwapper(str) {
let inputArray = str.split('') ;
let strLen = inputArray.length ;
let palTester = function(arr) {
let len = arr.length ;
for (let i = 0 ; i < len ; i++) {
if (arr[i] !== arr[len - (1 + i)]) {
retourner faux ;
}
}
retourner vrai ;
}
for (let i = 0 ; i < strLen - 1 ; i++) {
let newArray = Array.from(inputArray) ;
newArray.splice(i, 2, newArray[i + 1], newArray[i]) ;
if (palTester(newArray)) {
return newArray.join('') ;
}
}
retourner -1 ;
}
Exemples
Entrée : "(())(((("
Sortie : 3
Entrée : "(()("
Sortie : 2
function RemoveBrackets(str) {
let throwouts = 0 ;
let counter = 0 ;
let arr = str.split('') ;
let len = arr.length ;
les renvois ;
}
// garder cet appel de fonction ici
RemoveBrackets(readline()) ;
Ligne de commande
Par exemple, sistr est : "SampleNumber=3234 provider=Dr. Welby patient=John Smith priority=High",
votre fonction devrait renvoyer la chaîne "12=4 8=12 7=10 8=4" car "SampleNumber" est un jeton de 12
caractères avec une valeur de 4 caractères ("3234") suivi de "provider" qui est un jeton de 8 caractères
suivi d'une valeur de 12 caractères ("Dr. M. Welby"), etc.
Exemples
La fonctionStarRating(str) prend le paramètrestr qui lui est transmis et qui sera une note
moyenne comprise entre 0,00 et 5,00, et convertit cette note en une liste de 5 noms d'images à afficher
dans une interface utilisateur pour représenter la note sous la forme d'une liste d'étoiles et de demi-
étoiles. Les notes doivent être arrondies à la moitié la plus proche. Trois noms de fichier image sont
disponibles : "full.jpg", "half.jpg", "empty.jpg". Le résultat sera le nom des 5 images (sans l'extension),
de gauche à droite, séparées par des espaces. Par exemple : sistr est "2.36", cela devrait être affiché par
l'image suivante :
Votre programme devrait donc renvoyer la chaîne "full full half empty empty".
Exemples
Entrée : "0.38"
Sortie : demi-vide vide vide vide
Entrée : "4.5"
Sortie : pleine pleine pleine pleine moitié
function StarRating(str) {
let num = (Math.round(parseFloat(str) * 2)) / 2 ;
let starString = '' ;
let half = !(Math.trunc(num) === num) ;