Minta fungsi FirstReverse( str ) ambil parameter str yang diteruskan dan kembalikan string
dalam urutan terbalik. Sebagai contoh: jika input string adalah "Hello World and Coders" maka program
Anda harus mengembalikan string sredoC dna dlroW olleH .
Contoh
Masukan: "coderbyte"
Keluaran: etybredoc
fungsi FirstReverse(str) {
fungsi FirstReverse(str) {
// kode di sini
return str.split('').reverse().join('');
Apakah fungsi FirstFactorial( num ) mengambil parameter num yang diteruskan dan
mengembalikan faktorialnya. Misalnya: jika num = 4, maka program Anda harus mengembalikan (4 * 3
* 2 * 1) = 24. Untuk kasus uji, kisarannya antara 1 dan 18 dan masukannya akan selalu berupa bilangan
bulat.
Contoh
Masukan: 4
Keluaran: 24
Masukan: 8
Keluaran: 40320
fungsi FaktorPertama(bil) {
misalkan faktorial = 1;
kembali faktorial;
fungsi FaktorPertama(bil) {
// kode di sini
jika (num < 0) kembalikan NaN;
kembali (bil > 1) ? FirstFaktorial(bil - 1) * num : 1;
biarkan jawaban = 1;
for (biarkan indeks = 1; indeks <= num; indeks++) {
jawaban *= indeks;
}
kembali jawaban;
Kata Terpanjang
Mintalah fungsi LongestWord( sen ) ambil parameter sen yang diteruskan dan kembalikan kata
terbesar dalam string. Jika ada dua kata atau lebih yang memiliki panjang yang sama, kembalikan kata
pertama dari string dengan panjang tersebut. Abaikan tanda baca dan anggap sen tidak akan kosong.
Contoh
sen = sen.trim();
sen = sen.ganti(/[^a-zA-Zsd]/g, '');
return arr.shift();
// kode di sini
sen kembali;
let validCharacters =
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
biarkan maxLength = 0;
biarkan kata terpanjang = '';
}
}
Mintalah fungsi LetterChanges( str ) mengambil parameter str yang diteruskan dan
memodifikasinya menggunakan algoritme berikut. Ganti setiap huruf dalam string dengan huruf yang
mengikutinya dalam alfabet ( mis. c menjadi d, z menjadi a). Kemudian gunakan huruf kapital setiap
vokal dalam string baru ini (a, e, i, o, u) dan akhirnya kembalikan string yang dimodifikasi ini.
Contoh
Masukan: "halo*3"
Keluaran: Ifmmp*3
Masukan: "waktu yang menyenangkan!"
Keluaran: gvO Ujnft!
str = str.trim().toLowerCase();
var len = str.panjang;
var newStr = '';
// kapitalisasi vokal
for (biarkan i = 0; i < newString.length; i++) {
if (vokal.termasuk(newString[i])) {
finalString += newString[i].toUpperCase();
} kalau tidak {
finalString += newString[i];
}
}
Miliki fungsi SimpleAdding( num ) menjumlahkan semua angka dari 1 hingga num . Misalnya: jika
inputnya 4 maka program Anda harus mengembalikan 10 karena 1 + 2 + 3 + 4 = 10. Untuk kasus uji,
parameter num akan berupa angka dari 1 hingga 1000.
Contoh
Masukan: 12
Keluaran: 78
Masukan: 140
Keluaran: 9870
function SimpleAdding(num) {
jika (bil === 1) {
kembali 1;
}
kalau tidak {
return num + SimpleAdding(num -1);
}
}
function SimpleAdding(num) {
biarkan jumlah = 0;
untuk (i = 1; i <= num; i++) {
jumlah += saya;
}
jumlah pengembalian;
function SimpleAdding(num) {
// kode di sini
if (num < 1) kembalikan NaN;
lain jika (bil === 1) kembalikan 1;
return SimpleAdding(bil - 1) + num;
}
Huruf Kapital
Memiliki fungsi LetterCapitalize( str ) ambil parameter str yang diteruskan dan huruf besar
huruf pertama dari setiap kata. Kata-kata akan dipisahkan hanya dengan satu spasi.
Contoh
function LetterCapitalize(str) {
kembali str;
function LetterCapitalize(str) {
function LetterCapitalize(str) {
// kode di sini
return str.split(/s+/).peta(fungsi(kata) {
kembalikan kata[0].toUpperCase() + kata.slice(1);
}).bergabung(' ');
}
Simbol Sederhana
Mintalah fungsi SimpleSymbols( str ) mengambil parameter str yang diteruskan dan menentukan
apakah itu urutan yang dapat diterima dengan mengembalikan string true atau false . Parameter str
akan terdiri dari simbol + dan = dengan beberapa karakter di antaranya ( mis. ++d+===+c++==a) dan
agar string benar, setiap huruf harus dikelilingi oleh simbol + . Jadi string ke kiri akan salah. String tidak
akan kosong dan akan memiliki setidaknya satu huruf.
Contoh
Masukan: "+d+=3=+s+"
Keluaran: benar
Masukan: "f++d+"
Keluaran: salah
function SimpleSymbols(str) {
if (/^[a-zA-Z]/.test(str) || /[a-zA-Z]$/.test(str)) {
kembali salah;
}
lain jika (/[^+][a-zA-Z]/.test(str) || /[a-zA-Z][^+]/.test(str)) {
kembali salah;
}
kalau tidak {
kembali benar;
}
function SimpleSymbols(str) {
// kode di sini
if (str.match(/[^+][A-Za-z][^+]/g)) return false;
lain jika (str.match(/[+][A-Za-z][^+]/g)) return false;
lain jika (str.match(/[^+][A-Za-z][+]/g)) return false;
kembali benar;
}
Periksa Angka
Minta fungsi CheckNums( num1 , num2 ) ambil kedua parameter yang diteruskan dan kembalikan
string true jika num2 lebih besar dari num1 , jika tidak kembalikan string false . Jika nilai parameter
sama satu sama lain maka kembalikan string -1 .
Contoh
LIHAT TANTANGAN
fungsi CheckNums(num1,num2) {
fungsi CheckNums(num1,num2) {
jika (bil2 > bilangan1) {
kembali benar;
} lain jika (num1 === num2) {
kembali '-1';
} kalau tidak {
kembali salah;
}
fungsi CheckNums(num1,num2) {
// kode di sini
if ((num1 - num2) < 0) return true;
lain jika ((num1 - num2) > 0) return false;
selain itu kembalikan -1;
}
Konversi Waktu
Minta fungsi TimeConvert( num ) ambil parameter num yang diteruskan dan kembalikan jumlah
jam dan menit yang diubah parameter menjadi ( mis. jika num = 63 maka hasilnya harus 1:3). Pisahkan
jumlah jam dan menit dengan titik dua.
Contoh
Masukan: 126
Keluaran: 2:6
Masukan: 45
Keluaran: 0:45
fungsi TimeConvert(num) {
var jam = Math.floor(num/60);
var menit = num % 60;
var str = jam + ":" + menit;
kembali str;
}
// pertahankan panggilan fungsi ini di sini
// untuk melihat cara memasukkan argumen dalam JavaScript gulir ke bawah
TimeConvert(readline());
fungsi TimeConvert(num) {
fungsi TimeConvert(num) {
// kode di sini
return Math.floor(num / 60) + ':' + (num % 60);
Sup alfabet
Miliki fungsi AlphabetSoup( str ) ambil parameter string str yang diteruskan dan kembalikan
string dengan huruf dalam urutan abjad ( mis. halo menjadi ehllo). Asumsikan angka dan simbol tanda
baca tidak akan disertakan dalam string.
Contoh
Masukan: "coderbyte"
Keluaran: bcdeeorty
Masukan: "hooplah"
Keluaran: ahhloop
function AlphabetSoup(str) {
function AlphabetSoup(str) {
function AlphabetSoup(str) {
// kode di sini
kembali str.split('').sort(fungsi(ch1, ch2) {
kembalikan ch1.charCodeAt(0) - ch2.charCodeAt(0);
}).bergabung('');
}
Pemeriksaan AB
Mintalah fungsi ABCheck( str ) ambil parameter str yang diteruskan dan kembalikan string dengan
benar jika karakter a dan b dipisahkan tepat 3 tempat di mana pun dalam string setidaknya sekali ( yaitu
"jalur yang dipinjam" akan menghasilkan true karena ada tepat tiga karakter antara a dan b ). Kalau
tidak, kembalikan string salah.
Contoh
pat = /(a...b|b...a)/
return patt.test(str);
fungsi ABCheck(str) {
if (str.panjang < 5) {
kembali salah;
}
console.log(str.length);
kembali salah;
fungsi ABCheck(str) {
// kode di sini
Miliki fungsi VowelCount( str ) ambil parameter string str yang diteruskan dan kembalikan
jumlah vokal yang dikandung string ( mis. "Semua sapi makan rumput dan moo" akan mengembalikan
8). Jangan menghitung y sebagai vokal untuk tantangan ini.
Contoh
Masukan: "halo"
Keluaran: 2
Masukan: "coderbyte"
Keluaran: 3
fungsi Jumlah Vokal(str) {
Jumlah kata
Miliki fungsi WordCount( str ) ambil parameter string str yang diteruskan dan kembalikan jumlah
kata yang dikandung string ( misalnya "Jangan pernah makan gandum atau kue suwir" akan
mengembalikan 6). Kata-kata akan dipisahkan oleh spasi tunggal.
Contoh
kembali jawaban;
// kode di sini
return str.split(' ').panjang;
}
Mantan Oh
Memiliki fungsi ExOh( str ) ambil parameter str yang diteruskan dan kembalikan string true jika
ada jumlah x dan o yang sama, jika tidak, kembalikan string false . Hanya dua huruf ini yang akan
dimasukkan dalam string, tanpa tanda baca atau angka. Sebagai contoh: jika str adalah "xooxxxxooxo"
maka hasilnya harus kembali salah karena ada 6 x dan 5 o.
Contoh
Masukan: "xooxxo"
Keluaran: benar
Masukan: "x"
Keluaran: salah
fungsi ExOh(str) {
var regExPatternX = /x/gi;
var regExPatternO = /o/gi;
fungsi ExOh(str) {
biarkan xhitung = 0;
biarkan oHitung = 0;
fungsi ExOh(str) {
// kode di sini
var huruf = str.split('');
var numOfEx = huruf.filter(fungsi(ch) {
return ch === 'x';
}).panjang;
var numOfOh = huruf.filter(fungsi(ch) {
return ch === 'o';
}).panjang;
Palindrom
Miliki fungsi Palindrome( str ) ambil parameter str yang diteruskan dan kembalikan string true
jika parameternya adalah palindrome, (stringnya maju sama seperti mundur) jika tidak, kembalikan
string false . Misalnya: "mobil balap" juga "mobil balap" mundur. Tanda baca dan angka tidak akan
menjadi bagian dari string.
Contoh
Masukan: "mata"
Keluaran: benar
fungsi Palindrom(str) {
dimodifikasi = str.replace(/W/g,"");
fungsi Palindrom(str) {
fungsi Palindrom(str) {
Arith Geo
Miliki fungsi ArithGeo( arr ) ambil larik angka yang disimpan di arr dan kembalikan string
"Aritmatika" jika urutannya mengikuti pola aritmatika atau kembalikan "Geometris" jika mengikuti
pola geometris. Jika urutan tidak mengikuti salah satu pola, kembalikan -1 . Barisan aritmatika adalah
barisan yang selisih antara setiap bilangan tetap, sedangkan dalam barisan geometri, setiap suku setelah
suku pertama dikalikan dengan rasio konstan atau umum. Contoh aritmatika: [2, 4, 6, 8] dan Contoh
geometri: [2, 6, 18, 54]. Angka negatif dapat dimasukkan sebagai parameter, 0 tidak akan dimasukkan,
dan tidak ada larik yang berisi semua elemen yang sama.
Contoh
Masukan: [5,10,15]
Keluaran: Aritmatika
Masukan: [2,4,16,24]
Keluaran: -1
fungsi ArithGeo(arr) {
var len = arr.panjang;
var arithK = arr[1] - arr[0];
var geoK = arr[1] / arr[0];
kembali -1;
}
fungsi ArithGeo(arr) {
jika (aritmatika) {
mengembalikan 'Aritmatika';
}
jika (geometris) {
kembali 'Geometris';
}
kembali -1;
fungsi ArithGeo(arr) {
// kode di sini
var isArith = function(arr) {
if (arr.panjang < 2) return -1;
var perbedaan = arr[1] - arr[0];
untuk (var i = 1; i < arr.panjang - 1; i++) {
if (arr[i + 1] - arr[i] !== perbedaan) return false;
}
kembali benar;
};
Penambahan ArrayI
Miliki fungsi ArrayAdditionI( arr ) ambil larik angka yang disimpan dalam arr dan kembalikan
string benar jika ada kombinasi angka dalam larik (tidak termasuk angka terbesar) dapat ditambahkan
hingga sama dengan angka terbesar dalam larik, jika tidak kembalikan string salah . Sebagai contoh:
jika arr berisi [4, 6, 23, 10, 1, 3] keluaran harus benar karena 4 + 6 + 10 + 3 = 23. Larik tidak akan
kosong, tidak akan berisi semua elemen yang sama, dan mungkin berisi angka negatif.
Contoh
Masukan: [5,7,16,1,2]
Keluaran: salah
Masukan: [3,5,-1,8,12]
Keluaran: benar
function ArrayAdditionI(arr) {
target var;
var addArr = arrayPrep(arr);
var len = addArr.panjang;
var permNum = Math.pow(2, len);
console.log('test0 ', permNum, target, addArr);
fungsi arrayPrep(arr2) {
arr.sort(fungsi(a, b){
kembali a - b
});
target = arr2.pop()
kembali arr2
}
}
// pertahankan panggilan fungsi ini di sini
// untuk melihat cara memasukkan argumen dalam JavaScript gulir ke bawah
ArrayAdditionI(readline());
function ArrayAdditionI(arr) {
biarkan jumlah = 0;
for (biarkan j = 0; j < kombo[i].panjang; j++) {
if (kombo[i][j] === '1') {
jumlah += arr[j];
}
}
function ArrayAdditionI(arr) {
// kode di sini
var sortArr = arr.sort(fungsi(a,b) {return ab;});
var terbesar = sortArr.pop();
var jumlah = [];
Jumlah Surat I
Mintalah fungsi LetterCountI( str ) ambil parameter str yang diteruskan dan kembalikan kata
pertama dengan jumlah huruf berulang terbanyak. Misalnya: "Hari ini, adalah hari terbesar yang pernah
ada!" harus mengembalikan terbesar karena memiliki 2 e (dan 2 t) dan datang sebelumnya yang juga
memiliki 2 e. Jika tidak ada kata dengan huruf berulang, kembalikan -1 . Kata-kata akan dipisahkan oleh
spasi.
Contoh
if (baru[0][1] == 1) {
kembali -1;
}
kalau tidak {
return newarr[0][0];
}
}
biarkan bestCount = 0;
biarkan kataterbaik = '';
// kode di sini
var kata = str.replace(/[^A-Za-zs]/g, '').split(/s+/);
Miliki fungsi SecondGreatLow( arr ) ambil larik angka yang disimpan di arr dan kembalikan
angka terendah kedua dan terbesar kedua, masing-masing, dipisahkan oleh spasi. Misalnya: jika arr
berisi [7, 7, 12, 98, 106] hasilnya harus 12 98 . Larik tidak akan kosong dan akan berisi setidaknya 2
angka. Ini bisa menjadi rumit jika hanya ada dua angka!
Contoh
fungsi kesepian(arr) {
var len = arr.panjang;
var testobj = {};
var keluaran = [];
jumlah var = 0;
untuk (var i = 0; i < len; i++) {
var pemegang = arr[i];
if (!testobj[pemegang]) {
testobj[pemegang] = true;
keluaran[hitung++] = pemegang;
}
}
keluaran kembali
}
}
fungsi SecondGreatLow(arr) {
fungsi SecondGreatLow(arr) {
// kode di sini
var diurutkan = arr.sort(fungsi(a,b){return ab;});
var terbesar = diurutkan[diurutkan.panjang - 1];
var terendah = diurutkan[0];
var detikTerbesar, detikTerendah;
Divisi Dirangkai
Miliki fungsi DivisionStringified( num1 , num2 ) ambil kedua parameter yang diteruskan,
bagi num1 dengan num2 , dan kembalikan hasilnya sebagai string dengan koma yang diformat dengan
benar. Jika jawaban hanya terdiri dari 3 digit, kembalikan angka tanpa koma ( mis. 2/3 harus
menghasilkan "1"). Misalnya: jika num1 adalah 123456789 dan num2 adalah 10000 , hasilnya harus
"12,346" .
Contoh
if (numleng > 3) {
var arr = string.split("");
for (var i= numleng - 3; i > 0; i = i - 3) {
arr.splice(i, 0, ",");
}
var string baru = arr.join("");
}
fungsi DivisiStringified(num1,num2) {
fungsi DivisiStringified(num1,num2) {
// kode di sini
var format = fungsi(bil) {
var hasil = '';
var keseluruhan = Math.round(num);
mengembalikan hasil;
}
Menghitung Menit I
Miliki fungsi CountingMinutesI( str ) ambil parameter str yang akan diteruskan dua kali
(masing-masing diformat dengan benar dengan titik dua dan am atau pm) dipisahkan oleh tanda hubung
dan kembalikan jumlah total menit antara dua kali. Waktu akan menggunakan format jam 12 jam.
Misalnya: jika str adalah 9:00-10:00 maka hasilnya harus 60 . Jika str adalah 13:00-11:00, hasilnya
harus 1320 .
Contoh
Masukan: "01:23-01:08"
Keluaran: 1425
Solusi Menghitung Menit I
JAVASCRIPT
LIHAT TANTANGAN
function CountingMinutesI(str) {
var seps = str.split("-");
var col1 = seps[0].indexOf(":");
var col2 = seps[1].indexOf(":");
var jam1 = parseInt(seps [0].slice(0, col1));
var jam2 = 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" && jam1 != 12) {
jam1 = jam1 + 12;
}
if (ampm2 == "pm" && jam2 != 12) {
jam2 = jam2 + 12;
}
if (jam1 == 12 && ampm1 == "pagi") {
jam1 = 0;
}
if (jam2 == 12 && ampm2 == "pagi") {
jam2 = 0;
}
var waktu1 = (jam1*60) + menit1;
var waktu2 = (jam2*60) + menit2;
kembali berbeda;
function CountingMinutesI(str) {
function CountingMinutesI(str) {
// kode di sini
var kali = str.split('-');
var dari = kali[0], ke = kali[1];
fungsi parseMinutes(timeStr) {
var waktu = timeStr.match(/d+/g);
var jam = parseInt(waktu[0]), menit = parseInt(waktu[1]);
var ampm = (timeStr.match(/[a|p]m/g)[0] === 'am') ? 0 : 1;
if (jam === 12) jam = 0;
Miliki fungsi MeanMode( arr ) ambil larik angka yang disimpan dalam arr dan kembalikan 1 jika
mode sama dengan mean , 0 jika tidak sama satu sama lain ( mis. [5, 3, 3, 3, 1] harus mengembalikan 1
karena modus (3) sama dengan mean (3)). Larik tidak akan kosong, hanya akan berisi bilangan bulat
positif, dan tidak akan berisi lebih dari satu mode.
Contoh
Masukan: [1, 2, 3]
Keluaran: 0
Masukan: [4, 4, 4, 6, 2]
Keluaran: 1
function MeanMode(arr) {
len = arr.panjang
//Langkah 1: tentukan rata-rata - cukup jelas
fungsi mean(arr) {
jumlah var = 0;
untuk (var i = 0; i < len; i++) {
hitung += arr[i]
}
console.log (hitung / len)
kembali hitungan / len
}
//Langkah 2: tentukan modusnya. Kita perlu menghitung berapa banyak dari setiap
tipe yang ada di dalam array. Salah satu alternatifnya adalah menjaga penghitung
tetap berjalan, mengurutkan larik, lalu menghitung hingga item berubah, melacak
jumlah maksimum dan nilai asosiasi. Berikut ini adalah cara yang jauh lebih mudah,
dengan asumsi bahwa seseorang memiliki keakraban dasar dengan objek javascript. Itu
membuat setiap entri baru menjadi kunci, dan menghitung berapa banyak dari masing-
masing entri yang ada, lalu membuat larik dari pasangan nilai kunci yang dibuat.
mode fungsi(arr) {
var obj = {};
for (var i = 0, len = arr.panjang; i < len; i++) {
if (obj[arr[i]] === tidak terdefinisi) {
obj[arr[i]] = 1;
}
kalau tidak {
obj[arr[i]]++;
}
}
var objarr = [];
untuk (x dalam obj) {
objarr.push([x, obj[x]]);
}
objarr.sort(fungsi(a, b) {return b[1] - a[1]});
console.log(objarr[0][0]);
return objarr[0][0];
}
//Bandingkan rata-rata dan modus
mode pengembalian(arr) == mean(arr)? 1: 0;
}
function MeanMode(arr) {
// Temukan mode
biarkan kebanyakanKejadian = 0;
biarkan mode = 0;
for (biarkan i = 0; i < arr.length; i++) {
biarkan marco = arr[i];
for (misalkan j = i+1, count = 0; j < arr.length; j++) {
if (marco === arr[j]) {
// cocok!
hitung++;
if (hitung > kebanyakan kejadian) {
kebanyakanKejadian = hitung;
modus = arr[j];
}
}
}
}
// Temukan rata-rata
misalkan = 0;
for (biarkan i = 0; i < arr.length; i++) {
rata-rata += arr[i];
}
rata-rata = Matematika.bulat(rata-rata/arr.panjang);
function MeanMode(arr) {
// kode di sini
mode fungsi(arr) {
var hitungan = [], mode, maxCount = 0;
untuk (jumlah arr) {
bilangan = bilangan + ' ';
if (jumlah[jumlah]) jumlah[jumlah]++;
selain itu jumlah[jumlah] = 1;
}
fungsi mean(arr) {
return arr.reduce(function(a,b) {return a+b;}, 0) / arr.length;
}
Sisipan Dash
Miliki fungsi DashInsert( str ) sisipkan tanda hubung ('-') di antara masing-masing dua angka
ganjil di str . Sebagai contoh: jika str adalah 454793 outputnya harus 4547-9-3 . Jangan menghitung
nol sebagai angka ganjil.
Contoh
Masukan: 99946
Keluaran: 9-9-946
Masukan: 56730
Keluaran: 567-30
fungsi DashInsert(num) {
var strnum = num.toString();
var arr = strnum.split("");
kembali x;
fungsi DashInsert(str) {
fungsi DashInsert(str) {
// kode di sini
var digit = str.split('');
fungsi isOdd(n) {
kembalikan parseInt(n) % 2 === 1;
}
Miliki fungsi SwapCase( str ) ambil parameter str dan tukar case dari setiap karakter. Sebagai
contoh: jika str adalah "Hello World", keluarannya adalah hELLO WORLD . Biarkan angka dan
simbol tetap seperti apa adanya.
Contoh
Masukan: "Halo-LOL"
Keluaran: halo-lol
fungsi SwapCase(str) {
fungsi SwapCase(str) {
// kode di sini
return str.split('').peta(fungsi(huruf) {
if (huruf === huruf.toLowerCase()) kembalikan huruf.toUpperCase();
lain jika (huruf === letter.toUpperCase()) return letter.toLowerCase();
lain surat balasan;
}).bergabung('');
}
Minta fungsi NumberSearch( str ) ambil parameter str , cari semua angka dalam string,
tambahkan semuanya, lalu kembalikan angka terakhir itu. Contoh: jika str adalah "88Hello 3World!"
outputnya harus 91 . Anda harus membedakan antara angka satu digit dan angka multi digit seperti pada
contoh di atas. Jadi "55Halo" dan "5Halo 5" harus mengembalikan dua jawaban yang berbeda. Setiap
string akan berisi setidaknya satu huruf atau simbol.
Contoh
Masukan: "75Number9"
Keluaran: 84
kembali ans
}
if (!DIGITS.includes(str[i])) {
jika (angka !== '') {
angka.push(angka);
}
angka = '';
} kalau tidak {
angka += str[i];
biarkan jumlah = 0;
for (biarkan i = 0; i < angka.panjang; i++) {
jumlah += parseInt(angka[i]);
}
jumlah pengembalian;
}
Terbesar Ketiga
Miliki fungsi ThirdGreatest( strArr ) ambil array string yang disimpan di strArr dan
kembalikan kata terbesar ketiga di dalamnya. Jadi misalnya: jika strArr adalah ["halo", "dunia",
"sebelum", "semua"] output Anda harus dunia karena "sebelum" panjangnya 6 huruf, dan "halo" dan
"dunia" keduanya 5, tetapi hasilnya harus dunia karena muncul sebagai kata 5 huruf terakhir dalam
larik. Jika strArr adalah ["halo", "dunia", "setelah", "semua"] output harus setelah karena tiga kata
pertama semuanya terdiri dari 5 huruf, jadi kembalikan yang terakhir. Array akan memiliki setidaknya
tiga string dan setiap string hanya akan berisi huruf.
Contoh
Masukan: ["abc","defg","z","hijk"]
Keluaran: abc
function ThirdGreatest(strArr) {
strArr.sort(function(a, b) {return b.length - a.length});
return strArr[2];
}
function ThirdGreatest(strArr) {
return strArr[2];
function ThirdGreatest(strArr) {
// kode di sini
return strArr.sort(fungsi(a, b) {
kembali (b.panjang - a.panjang);
})[2];
Minta fungsi PowersofTwo( num ) ambil parameter num yang diteruskan yang akan menjadi
bilangan bulat dan kembalikan string benar jika pangkat dua. Jika tidak mengembalikan string false .
Misalnya jika inputnya adalah 16 maka program Anda harus mengembalikan string yang benar tetapi
jika inputnya adalah 22 maka outputnya harus berupa string false.
Contoh
Masukan: 4
Keluaran: benar
Masukan: 124
Keluaran: salah
function PowersofTwo(num) {
kalau tidak {
while (bil >= 2){
uji var = num%2;
jika (tes == 0){
bilangan = bilangan/2
ans = "benar";}
kalau tidak{
bilangan = 0;
ans = "salah"}
}
}
// kode di sini
kembali dan;
function PowersofTwo(num) {
}
// pertahankan panggilan fungsi ini di sini
PowersofTwo(readline());
function PowersofTwo(num) {
// kode di sini
if (num === 1) return true;
kalau tidak {
kembali (num % 2 === 0) ? PowersofTwo(num / 2) : false;
}
}
Ketahanan Aditif
Apakah fungsi AdditivePersistence( num ) mengambil parameter num yang akan selalu berupa
bilangan bulat positif dan mengembalikan kegigihan aditifnya yang merupakan berapa kali Anda harus
menambahkan digit dalam num hingga Anda mencapai satu digit. Sebagai contoh: jika num adalah 2718
maka program Anda harus mengembalikan 2 karena 2 + 7 + 1 + 8 = 18 dan 1 + 8 = 9 dan Anda berhenti
di 9.
Contoh
Masukan: 4
Keluaran: 0
Masukan: 19
Keluaran: 2
LIHAT TANTANGAN
fungsi AdditivePersistence(num) {
penambahan fungsi(arr) {
var redux = arr.reduce(fungsi(a, b){
kembalikan a + b})
mengembalikan redux
}
jumlah var = 0;
menghitung pengembalian
fungsi AdditivePersistence(num) {
num = num.toString();
biarkan hitung = 0;
}
jumlah pengembalian;
}
fungsi AdditivePersistence(num) {
// kode di sini
fungsi addDigits(num) {
kembalikan num.toString().split('').map(function(num) {
kembalikan parseInt(bil);
}).mengurangi(fungsi(a, b) {mengembalikan a + b;}, 0);
}
Kegigihan Multiplikatif
Miliki fungsi MultiplicativePersistence( num ) ambil parameter num yang diteruskan yang
akan selalu berupa bilangan bulat positif dan kembalikan kegigihan perkaliannya yang merupakan
berapa kali Anda harus mengalikan digit dalam num hingga Anda mencapai satu digit. Misalnya: jika
num adalah 39 maka program Anda harus mengembalikan 3 karena 3 * 9 = 27 lalu 2 * 7 = 14 dan
terakhir 1 * 4 = 4 dan Anda berhenti di 4.
Contoh
Masukan: 4
Keluaran: 0
Masukan: 25
Keluaran: 2
function MultiplicativePersistence(num) {
fungsi numprep(bil) {
var strnum = num.toString();
var arr = strnum.split('');
var angkar = arr.peta(fungsi(val) {
return parseInt(val)});
mengembalikan angka
}
function mulnums(arr) {
var newnum = arr.reduce(fungsi(a, b) {
mengembalikan a * b})
mengembalikan nomor baru
}
// kode di sini
jumlah var = 0;
function MultiplicativePersistence(num) {
num = num.toString();
biarkan hitung = 0;
sementara(1) {
if (num.panjang === 1) {
merusak;
}
hitung++;
misalkan jumlah = 1;
for (biarkan i = 0; i < num.length; i++) {
jumlah *= parseInt(bil[i]);
}
num = jumlah.toString();
}
jumlah pengembalian;
function MultiplicativePersistence(num) {
// kode di sini
fungsi perkalianDigit(bil) {
kembalikan num.toString().split('').map(function(num) {
kembalikan parseInt(bil);
}).mengurangi(fungsi(a, b) {mengembalikan a * b;}, 1);
}
Minimal Offline
Miliki fungsi OffLineMinimum( strArr ) ambil parameter strArr yang akan diteruskan yang
akan menjadi larik bilangan bulat mulai dari 1...n dan huruf "E" dan kembalikan subset yang benar
berdasarkan aturan berikut. Inputnya akan dalam format berikut: ["I", "I", "E", "I",...,"E",...,"I"] di mana
I berdiri untuk bilangan bulat dan E berarti mengeluarkan bilangan bulat terkecil saat ini di seluruh
rangkaian. Setelah selesai, program Anda harus mengembalikan set baru itu dengan bilangan bulat yang
dipisahkan dengan koma. Sebagai contoh: jika strArr adalah ["5","4","6","E","1","7","E","E","3","2"]
maka program Anda harus mengembalikan 4,1,5 .
Contoh
Masukan: ["1","2","E","E","3"]
Keluaran: 1,2
Masukan: ["4","E","1","E","2","E","3","E"]
Keluaran: 4,1,2,3
function OffLineMinimum(strArr) {
var len = strArr.panjang;
jumlah var = 0;
var holdArr = [];
var ans = [];
function OffLineMinimum(strArr) {
strArr[smallestIndex] = 'R';
kembalikan angka terkecil;
}
kembalikan result.join(',');
function OffLineMinimum(strArr) {
// kode di sini
var arr = [], hasil = [];
var log = "";
untuk (item strArr) {
if (item === 'E') {
result.push(arr.shift());
} kalau tidak {
arr.push(parseInt(item));
arr = arr.sort(fungsi(a, b) {kembalikan a - b});
}
}
kembalikan result.join(',');
}
Miliki fungsi ChangingSequence( arr ) ambil larik angka yang disimpan di arr dan kembalikan
indeks di mana angka berhenti meningkat dan mulai menurun atau berhenti menurun dan mulai
meningkat. Sebagai contoh: jika arr adalah [1, 2, 4, 6, 4, 3, 1] maka program Anda harus
mengembalikan 3 karena 6 adalah titik terakhir dalam larik di mana angka bertambah dan angka
berikutnya memulai urutan menurun. Array akan berisi setidaknya 3 angka dan mungkin hanya berisi
satu urutan, naik atau turun. Jika hanya ada satu urutan dalam larik, maka program Anda harus
mengembalikan -1 . Pengindeksan harus dimulai dengan 0.
Contoh
indeks pengembalian;
}
function ChangingSequence(arr) {
function ChangingSequence(arr) {
if (arr.panjang < 2) return -1;
var meningkat = arr[0] < arr[1];
kembali -1;
}
Miliki fungsi OverlappingRanges( arr ) ambil larik angka yang disimpan dalam arr yang akan
berisi 5 bilangan bulat positif, dua yang pertama mewakili rentang angka (a hingga b), 2 berikutnya juga
mewakili rentang bilangan bulat lainnya (c hingga d) , dan elemen ke-5 terakhir (x) yang juga akan
menjadi bilangan bulat positif, dan mengembalikan string yang benar jika kedua rangkaian rentang
tumpang tindih dengan setidaknya x angka. Sebagai contoh: jika arr adalah [4, 10, 2, 6, 3] maka
program Anda harus mengembalikan string true . Rentang angka pertama adalah 4, 5, 6, 7, 8, 9, 10 dan
rentang angka kedua adalah 2, 3, 4, 5, 6. Elemen terakhir dalam larik adalah 3, dan ada 3 angka yang
tumpang tindih di antara kedua rentang: 4, 5, dan 6. Jika kedua rentang tidak tumpang tindih dengan
setidaknya x angka, maka program Anda harus mengembalikan string false .
Contoh
Masukan: [5,11,1,5,1]
Keluaran: benar
Masukan: [1,8,2,4,4]
Keluaran: salah
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) {
biarkan hitung = 0;
for (biarkan i = arr[0]; i <= arr[1]; i++) {
jika (i >= arr[2] && i <= arr[3]) {
hitung++;
}
}
return (hitung >= arr[4]) ? benar salah;
}
function OverlappingRanges(arr) {
var range1 = [arr[0], arr[1]]; // (a,b)
var range2 = [arr[2], arr[3]]; // (c, d)
var minimumTumpang tindih = arr[4] - 1;
Superincreating
Miliki fungsi Superincreasing( arr ) ambil larik angka yang disimpan di arr dan tentukan
apakah larik tersebut membentuk urutan supernaik di mana setiap elemen dalam larik lebih besar dari
jumlah semua elemen sebelumnya. Array hanya akan terdiri dari bilangan bulat positif. Sebagai contoh:
jika arr adalah [1, 3, 6, 13, 54] maka program Anda harus mengembalikan string "true" karena
membentuk urutan superincreasing. Jika urutan superincreasing tidak terbentuk, maka program Anda
harus mengembalikan string "false"
Contoh
Masukan: [1,2,3,4]
Keluaran: salah
Masukan: [1,2,5,10]
Keluaran: benar
function Superincreasing(arr) {
var maxInd = arr.panjang - 1;
target var;
var jumlah;
function Superincreasing(arr) {
function Superincreasing(arr) {
if (arr.length < 2) return false;
if (arr.panjang === 2) return arr[0] < arr[1];
if (arr[0] >= arr[1]) return false;
Jarak Hamming
Apakah fungsi HammingDistance( strArr ) mengambil larik string yang disimpan di strArr ,
yang hanya akan berisi dua string dengan panjang yang sama dan mengembalikan jarak Hamming di
antara keduanya. Jarak Hamming adalah jumlah posisi di mana karakter yang sesuai berbeda. Misalnya:
jika strArr adalah ["coder", "codec"] maka program Anda harus mengembalikan 1 . String akan selalu
memiliki panjang yang sama dan hanya berisi karakter huruf kecil dari alfabet dan angka.
Contoh
biarkan hitung = 0;
for (biarkan i = 0; i < strArr[0].length; i++) {
if (strArr[0][i] !== strArr[1][i]) {
menghitung++
}
}
jumlah pengembalian;
}
function HammingDistance(strArr) {
var kata1 = strArr[0],
kata2 = strArr[1],
len = kata1.panjang,
hitungan = 0;
function HammingDistance(strArr) {
var hammingJarak = 0;
for (var i = 0; i < strArr[0].length; i++) {
if (strArr[0][i] !== strArr[1][i]) {
hammingDistance++;
}
}
return hammingDistance;
}
function RectangleArea(strArr) {
biarkan deltaX = 0;
biarkan deltaY = 0;
coords.forEach(function(val){
jika (x === val[0]) {
deltaY = Math.abs(val[1] - y);
}
jika (y === val[1]) {
deltaX = Math.abs(val[0] - x);
}
});
Bitwise One
Memiliki fungsi BitwiseOne( strArr ) mengambil larik string yang disimpan di strArr , yang
hanya akan berisi dua string dengan panjang yang sama yang mewakili bilangan biner, dan
mengembalikan string biner terakhir yang melakukan operasi bitwise OR pada kedua string. Operasi
bitwise OR menempatkan 0 di string baru di mana ada nol di kedua string biner, jika tidak maka
menempatkan 1 di tempat itu. Sebagai contoh: jika strArr adalah ["1001", "0100"] maka program
Anda harus mengembalikan string "1101"
Contoh
function BitwiseOne(strArr) {
var keluaran = '';
for (var i = 0; i < strArr[0].length; i++) {
if (strArr[0][i] === '1' || strArr[1][i] === '1') {
keluaran += '1';
} kalau tidak {
keluaran += '0';
}
}
kembali keluaran;
}
function BitwiseOne(strArr) {
Produk-produk lain
Miliki fungsi OtherProducts( arr ) ambil larik angka yang disimpan di arr dan kembalikan
daftar produk baru dari semua angka lain dalam larik untuk setiap elemen. Misalnya: jika arr adalah [1,
2, 3, 4, 5] maka larik baru, di mana setiap lokasi dalam larik baru adalah produk dari semua elemen
lainnya , adalah [120, 60, 40, 30, 24]. Perhitungan berikut dilakukan untuk mendapatkan jawaban ini:
[(2*3*4*5), (1*3*4*5), (1*2*4*5), (1*2*3*5) , (1*2*3*4)]. Anda harus membuat larik baru ini dan
kemudian mengembalikan angka sebagai string yang digabungkan dengan tanda hubung: 120-60-40-30-
24 . Array akan berisi paling banyak 10 elemen dan setidaknya 1 elemen bilangan bulat positif saja.
Contoh
Masukan: [1,4,3]
Keluaran: 12-3-4
Masukan: [3,1,2,6]
Keluaran: 12-36-18-6
function OtherProducts(arr) {
biarkan holdArray = [];
kembali holdArray.join('-');
}
function OtherProducts(arr) {
fungsi produk(arr) {
return arr.reduce((a,b) => a * b);
}
function OtherProducts(arr) {
var produk = [];
for (var i = 0; i < arr.length; i++) {
var lainnya = arr.slice(0, i).concat(arr.slice(i + 1));
produk.push(produk(lainnya));
}
kembalikan produk.bergabung('-');
}
Miliki fungsi WaveSorting( arr ) ambil larik bilangan bulat positif yang disimpan dalam arr dan
kembalikan string dengan benar jika angka dapat diatur dalam pola gelombang: a1 > a2 < a3 > a4 < a5
> ... , jika tidak, kembalikan string salah . Misalnya, jika arr adalah: [0, 1, 2, 4, 1, 4], maka urutan
gelombang yang mungkin dari bilangan tersebut adalah: [2, 0, 4, 1, 4, 1]. Jadi untuk input ini, program
Anda harus mengembalikan string true . Array input akan selalu berisi setidaknya 2 elemen. Lebih
banyak contoh diberikan di bawah ini sebagai contoh kasus uji.
Contoh
Masukan: [0, 1, 2, 4, 1, 1, 1]
Keluaran: salah
// buat array dari hasil kita, sehingga kita dapat menemukan maks
biarkan countArr = [];
for (biarkan memasukkan countObj) {
countArr.push(countObj[key]);
}
newArr = [];
Pencocokan Array
Memiliki fungsi ArrayMatching( strArr ) membaca larik string yang disimpan di strArr yang
hanya akan berisi dua elemen, keduanya akan mewakili larik bilangan bulat positif. Misalnya: jika
strArr adalah ["[1, 2, 5, 6]", "[5, 2, 8, 11]"], maka kedua elemen dalam input mewakili dua larik
bilangan bulat, dan sasaran Anda untuk tantangan ini adalah untuk menambahkan elemen di lokasi yang
sesuai dari kedua larik. Untuk input contoh, program Anda harus melakukan penambahan berikut: [(1 +
5), (2 + 2), (5 + 8), (6 + 11)] yang kemudian sama dengan [6, 4, 13, 17] . Program Anda akhirnya harus
mengembalikan array yang dihasilkan ini dalam format string dengan setiap elemen dipisahkan oleh
tanda hubung: 6-4-13-17 .
Jika kedua larik tidak memiliki jumlah elemen yang sama, cukup tambahkan elemen yang tersisa ke larik
baru (contoh ditunjukkan di bawah). Kedua larik akan memiliki format: [e1, e2, e3, ...] di mana
setidaknya satu elemen akan ada di setiap larik.
Contoh
function ArrayMatching(strArr) {
strArr = strArr.peta(val => val.ganti(/[[]]/g, '')
.split(/s*,s*/).map(val1 => parseInt(val1, 10)));
function ArrayMatching(strArr) {
kembalikan hasil.bergabung('-');
}
function ArrayMatching(strArr) {
arr1 = strArr[0].match(/\d+/g).map(Angka);
arr2 = strArr[1].match(/\d+/g).map(Angka);
Pembalikan Biner
Memiliki fungsi BinaryReversal( str ) ambil parameter str yang diteruskan, yang akan menjadi
bilangan bulat positif, ambil representasi binernya (diisi ke N * 8 bit terdekat), balikkan string bit itu,
dan akhirnya kembalikan string terbalik baru dalam bentuk desimal. Sebagai contoh: jika str adalah
"47" maka versi biner dari bilangan bulat ini adalah 101111 tetapi kita padukan menjadi 00101111 .
Program Anda harus membalikkan string biner ini yang kemudian menjadi: 11110100 dan akhirnya
mengembalikan versi desimal dari string ini, yaitu 244 .
Contoh
Masukan: "213"
Keluaran: 171
Masukan: "4567"
Keluaran: 60296
function BinaryReversal(str) {
function BinaryReversal(str) {
fungsi toBinary(str) {
hasil = Angka(str).toString(2);
// pad kiri dengan awalan 0 untuk menjadikannya kelipatan 8 digit...
jika (hasil.panjang % 8 !== 0)
return new Array(8 - (result.length % 8)).fill(0).join('') + result;
lain mengembalikan hasil;
}
fungsi toDecimal(str) {
return parseInt(str, 2);
}
function BinaryReversal(str) {
//kembali keBinary(str);
var mundur = toBinary(str).split('').reverse().join('');
kembali keDesimal(terbalik);
}
Miliki fungsi LongestIncreasingSequence( arr ) mengambil larik bilangan bulat positif yang
disimpan di arr dan mengembalikan panjang urutan peningkatan terpanjang (LIS). LIS adalah
subhimpunan dari daftar asli di mana angka-angkanya diurutkan, dari terendah ke tertinggi, dan dalam
urutan meningkat. Urutannya tidak perlu berurutan atau unik, dan bisa terdapat beberapa urutan yang
berbeda. Misalnya: jika arr adalah [4, 3, 5, 1, 6] maka kemungkinan LIS adalah [3, 5, 6], dan yang
lainnya adalah [1, 6]. Untuk input ini, program Anda harus mengembalikan 3 karena itu adalah panjang
dari urutan peningkatan terpanjang.
Contoh
Masukan: [9, 9, 4, 2]
Keluaran: 1
Masukan: [10, 22, 9, 33, 21, 50, 41, 60, 22, 68, 90]
Keluaran: 7
function LongestIncreasingSequence(arr) {
biarkan len = arr.panjang;
biarkan arrHolder = [];
//keluarkan semua array yang tidak menaik (gunakan ascend() untuk menentukan)
arrHolder = arrHolder.filter(val => naik(val));
fungsi naik(inputArr) {
biarkan arrlen = inputArr.panjang;
kembalikan inputArr.every((val, ind) => {
if (ind < arrlen - 1) {
return val < inputArr[ind + 1];
}
kembali benar;
});
}
// https://stackoverflow.com/questions/2631726/how-to-determine-the-longest-
increasing-subsequence-using-dynamic-programming
// Digunakan algoritma dari sini
function LongestIncreasingSequence(arr) {
return lis.panjang;
fungsi meningkat(arr) {
return arr.setiap(fungsi(nilai, indeks, arr) {
var prev = (indeks === 0) ? 0: arr[indeks - 1];
kembali prev < nilai;
});
}
function LongestIncreasingSequence(arr) {
var terpanjang = 0;
Pasangan Genap
Miliki fungsi EvenPairs( str ) ambil parameter str yang diteruskan dan tentukan apakah sepasang
bilangan genap yang berdekatan ada di mana saja dalam string. Jika ada pasangan, kembalikan string
true , jika tidak kembalikan false . Sebagai contoh: jika str adalah "f178svg3k19k46" maka ada dua
angka genap di akhir string, "46" sehingga program Anda harus mengembalikan string true . Contoh
lain: jika str adalah "7r5gg812" maka pasangannya adalah "812" (8 dan 12) sehingga program Anda
harus mengembalikan string true .
Contoh
Masukan: "3gy41d216"
Keluaran: benar
Masukan: "f09r27i8e67"
Keluaran: salah
function EvenPairs(str) {
return regEx.test(str);
function EvenPairs(str) {
}
}
function EvenPairs(str) {
var angka = str.cocok(/\d+/g);
untuk (var jumlah angka) {
if (hasEvenPairs(number)) return true;
}
kembali salah;
}
Palindrom berikutnya
Minta fungsi NextPalindrome( num ) ambil parameter num yang diteruskan dan kembalikan
bilangan palindromik terbesar berikutnya. Input dapat berupa bilangan bulat positif apa pun. Sebagai
contoh: jika num adalah 24, maka program Anda harus mengembalikan 33 karena itu adalah angka
terbesar berikutnya yang merupakan palindrom.
Contoh
Masukan: 2
Keluaran: 3
Masukan: 180
Keluaran: 181
fungsi NextPalindrome(num) {
misalkan hitung = bil + 1;
sementara (benar) {
numString = count.toString();
revString = numString.split('')
.balik()
.bergabung('');
if (revString === numString) kembalikan parseInt(numString, 10);
hitung++;
}
}
fungsi NextPalindrome(num) {
function isPalindrome(str) {
for (biarkan i = 0, max = Math.floor(str.length/2); i < max; i++) {
if (str[i] !== str[str.panjang-1-i]) {
kembali salah;
}
}
kembali benar;
}
}
fungsi isPalindrom(bil) {
var numStr = num.toString();
return numStr.split('').reverse().join('') === numStr;
}
fungsi NextPalindrome(num) {
var nextNum = bil + 1;
while (!isPalindrome(nextNum)) {
nextNum++;
}
kembalikan nextNum;
}
Mintalah fungsi LargestPair( num ) ambil parameter num yang diteruskan dan tentukan angka dua
digit terbesar di dalam bilangan bulat. Sebagai contoh: jika num adalah 4759472 maka program Anda
harus mengembalikan 94 karena itu adalah angka dua digit terbesar. Input akan selalu berisi setidaknya
dua digit positif.
Contoh
Masukan: 453857
Keluaran: 85
Masukan: 363223311
Keluaran: 63
function LargestPair(num) {
function LargestPair(num) {
num = num.toString();
function LargestPair(num) {
var maks = 0;
var numStr = num.toString();
Miliki fungsi NonrepeatingCharacter( str ) ambil parameter str yang akan diteruskan, yang
hanya akan berisi karakter alfabet dan spasi, dan kembalikan karakter pertama yang tidak berulang.
Misalnya: jika str adalah "agettkgaeee" maka program Anda harus mengembalikan k . String akan
selalu berisi setidaknya satu karakter dan akan selalu ada setidaknya satu karakter yang tidak berulang.
Contoh
Masukan: "abcdef"
Keluaran:
function NonrepeatingCharacter(str) {
function NonrepeatingCharacter(str) {
str = str.ganti(/\s+/g, '');
jumlah var = {};
Mintalah fungsi TwoSum( arr ) mengambil larik bilangan bulat yang disimpan dalam arr , dan
tentukan apakah ada dua angka (tidak termasuk elemen pertama) dalam larik yang dapat menjumlahkan
elemen pertama dalam larik. Misalnya: jika arr adalah [7, 3, 5, 2, -4, 8, 11], maka sebenarnya ada dua
pasangan yang berjumlah 7: [5, 2] dan [-4, 11]. Program Anda harus mengembalikan semua pasangan,
dengan angka yang dipisahkan oleh koma, dalam urutan angka pertama yang muncul dalam larik.
Pasangan harus dipisahkan oleh spasi. Jadi untuk contoh di atas, program Anda akan mengembalikan:
5,2 -4,11
Jika tidak ada dua angka yang menjumlahkan elemen pertama dalam array, kembalikan -1
Contoh
function TwoSum(arr) {
arr.forEach(item => {
const pujian = jawaban - item;
if (history.has(pujian)) {
pertandingan.push([item, pujian]);
} kalau tidak {
history.add(item);
}
});
function TwoSum(arr) {
pasangan var = [];
var jumlah = arr[0];
var sisanya = arr.slice(1);
pasangan = findPairs(sisa, jumlah);
Bitwise Dua
Memiliki fungsi BitwiseTwo( strArr ) mengambil larik string yang disimpan di strArr , yang
hanya akan berisi dua string dengan panjang yang sama yang mewakili bilangan biner, dan
mengembalikan string biner terakhir yang melakukan operasi bitwise AND pada kedua string. Operasi
bitwise AND menempatkan 1 di string baru di mana ada 1 di kedua lokasi di string biner, jika tidak
maka menempatkan 0 di tempat itu. Sebagai contoh: jika strArr adalah ["10111", "01101"] maka
program Anda harus mengembalikan string "00101"
Contoh
fungsi BitwiseTwo(strArr) {
fungsi BitwiseTwo(strArr) {
var hasil = '';
for (var i = 0; i < strArr[0].length; i++) {
if (strArr[0][i] === '1' && strArr[1][i] === '1') {
hasil += '1';
} kalau tidak {
hasil += '0';
}
}
mengembalikan hasil;
}
Miliki fungsi PowerSetCount( arr ) ambil array bilangan bulat yang disimpan di arr , dan
kembalikan panjang set daya (jumlah semua kemungkinan set) yang dapat dihasilkan. Sebagai contoh:
jika arr adalah [1, 2, 3], maka himpunan berikut membentuk himpunan daya:
[]
[1]
[2]
[3]
[1, 2]
[1, 3]
[2, 3]
[1, 2, 3]
Anda dapat melihat di atas semua set yang mungkin, bersama dengan set kosong, dihasilkan. Oleh
karena itu, untuk masukan ini, program Anda harus mengembalikan 8 .
Contoh
Masukan: [1, 2, 3, 4]
Keluaran: 16
Masukan: [5, 6]
Keluaran: 4
fungsi PowerSetCount(arr) {
biarkan len = arr.panjang;
return Math.pow(2, len);
}
// pertahankan panggilan fungsi ini di sini
PowerSetCount(readline());
fungsi PowerSetCount(arr) {
return Math.pow(2, arr.panjang);
}
fungsi PowerSetCount(arr) {
return Math.pow(2, arr.panjang);
}
Digit Produk
Miliki fungsi ProductDigits( num ) ambil parameter num yang diteruskan yang akan menjadi
bilangan bulat positif, dan tentukan jumlah digit paling sedikit yang perlu Anda kalikan untuk
menghasilkannya. Contoh: jika num adalah 24 maka anda dapat mengalikan 8 dengan 3 yang
menghasilkan 24, maka program anda harus mengembalikan 2 karena total yang diperlukan hanya 2
digit. Contoh lain: jika num adalah 90, Anda dapat mengalikan 10 * 9, jadi dalam hal ini program Anda
harus menghasilkan 3 karena Anda tidak dapat mencapai 90 tanpa menggunakan total 3 digit dalam
perkalian Anda.
Contoh
Masukan: 6
Keluaran: 2
Masukan: 23
Keluaran: 3
function ProductDigits(num) {
biarkan pivot = Math.sqrt(num);
biarkan nilai = num.toString().panjang + 1;
for (biarkan i = 1; i <= pivot; i++) {
jika (bil % i === 0) {
biarkan maxFactor = i;
maxCompFactor = num / maxFactor;
maxFactorString = maxFactor.toString();
maxCompFactorString = maxCompFactor.toString();
biarkan totalLength = maxFactorString.length +
maxCompFactorString.length;
if (totalLength < nilai) {
nilai = totalPanjang;
}
}
}
mengembalikan nilai;
}
function ProductDigits(num) {
biarkan pf = primeFactors(num);
function primeFactors(num) {
jika (bil === 1) kembalikan 1;
biarkan pf = [];
fungsi getDivisors(num) {
var pembagi = [1];
untuk (var i = 2; i <= num / 2; i++) {
jika (bil % i === 0) {
pembagi.push(i);
}
}
pembagi.push(bil);
pembagi kembali;
}
function ProductDigits(num) {
var pembagi = getDivisors(num);
pasangan var = [];
Pencipta Palindrom
Mintalah fungsi PalindromeCreator( str ) ambil parameter str yang diteruskan dan tentukan
apakah mungkin untuk membuat string palindromik dengan panjang minimum 3 karakter dengan
menghapus 1 atau 2 karakter. Misalnya: jika str adalah "abjchba" maka Anda dapat menghapus
karakter jc untuk menghasilkan "abhba" yang merupakan palindrom. Untuk contoh ini, program Anda
harus mengembalikan dua karakter yang telah dihapus tanpa pembatas dan dalam urutan kemunculannya
dalam string, jadi jc . Jika 1 atau 2 karakter tidak dapat dihapus untuk menghasilkan palindrom, maka
kembalikan string not possible . Jika string input sudah menjadi palindrom, program Anda harus
mengembalikan string palindrom .
Input hanya akan berisi karakter alfabet huruf kecil. Program Anda harus selalu berusaha untuk membuat
substring palindromik terpanjang dengan menghapus 1 atau 2 karakter (lihat kasus uji sampel kedua
sebagai contoh). 2 karakter yang Anda hapus tidak harus berdekatan dalam string.
Contoh
Masukan: "mmop"
Keluaran: tidak mungkin
Masukan: "kjjjhjjj"
Keluaran: k
function PalindromeCreator(str) {
biarkan len = str.panjang;
// tes untuk melihat apakah itu sudah Palindrom
if (isPalindrome(str)) {
kembalikan 'palindrom';
}
for (biarkan i = 0; i < len; i++) {
biarkan testArray = str.split('');
biarkan res = testArray.splice(i, 1);
biarkan newString = testArray.join('');
if (isPalindrome(newString)) {
console.log('satu');
kembali res.bergabung('');
}
}
for (biarkan i = 0; i < len; i++) {
biarkan res = [];
for (biarkan j = i; j < len - 1; j++) {
biarkan testArray = str.split('');
res[0] = testArray.splice(i, 1);
res[1] = testArray.splice(j, 1);
biarkan newString = testArray.join('');
if(isPalindrome(newString)) {
kembali res.bergabung('');
}
}
}
kembali 'tidak mungkin';
}
//----------------pembantu---------------------------
function isPalindrome(str) {
biarkan newStr = str.split('').reverse().join('');
if (newStr === str) {
kembali benar;
}
kembali salah;
}
function PalindromeCreator(str) {
if (isPalindrome(str)) {
kembalikan 'palindrom';
}
// Buat kombo
biarkan kombo = [];
for (biarkan i = 0, max = Math.pow(2, str.length); i < max; i++) {
biarkan kombo = i.toString(2);
if (palindromeCombos.panjang === 0) {
kembali 'tidak mungkin';
}
// Urutkan jadi dua huruf pertama yang ditemukan akan dikembalikan pertama untuk
kapan
// ada beberapa nilai
palindromeCombos.sort(fungsi(a,b){
kembalikan parseInt(a,2) < parseInt(b,2);
});
mengembalikan hasil;
function isPalindrome(str) {
kembali (str === str.split('').reverse().join('')) ? benar salah;
}
function isPalindrome(str) {
kembali str === str.split('').reverse().join('');
}
function PalindromeCreator(str) {
if (isPalindrome(str)) return 'palindrome';
Miliki fungsi BasicRomanNumerals( str ) read str yang akan menjadi string angka Romawi.
Angka yang digunakan adalah: I untuk 1, V untuk 5, X untuk 10, L untuk 50, C untuk 100, D untuk 500
dan M untuk 1000. Dalam angka Romawi, untuk membuat angka seperti 11 Anda cukup menambahkan 1
setelah 10, sehingga Anda mendapatkan XI . Tetapi untuk membuat angka seperti 19, Anda
menggunakan notasi pengurangan yaitu menambahkan I sebelum X atau V (atau menambahkan X
sebelum L atau C). Jadi 19 dalam angka Romawi adalah XIX .
Tujuan program Anda adalah mengembalikan persamaan desimal dari angka Romawi yang diberikan.
Misalnya: jika str adalah "XXIV", program Anda harus mengembalikan 24
Contoh
Masukan: "IV"
Keluaran: 4
Masukan: "XLVI"
Keluaran: 46
functionBasicRomanNumerals(str) {
biarkan hurufObj = {
saya: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000
}
misalkan res = 0;
biarkan len = str.panjang;
for (biarkan i = 0; i < len; i++) {
if (!hurufObj[str[i + 1]] || hurufObj[str[i]] >= hurufObj[str[i + 1]]) {
res += hurufObj[str[i]];
} kalau tidak {
res += (hurufObj[str[i + 1]] - hurufObj[str[i]]);
saya++;
}
}
kembalikan res;
}
/*
Simbol SAYA V X L C D M
Nilai1 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;
biarkan jumlah = 0;
beralih(simbol) {
kasus 'Saya':
if (nextSymbol === 'V') {
jumlah += ROMAN_V - ROMAN_I;
saya++;
} else if (nextSymbol === 'X') {
jumlah += ROMAN_X - ROMAN_I;
saya++;
} kalau tidak {
jumlah += ROMAN_I;
}
merusak;
kasus 'V':
jumlah += ROMAN_V;
merusak;
kasus 'X':
if (nextSymbol === 'L') {
jumlah += ROMAN_L - ROMAN_X;
saya++;
} else if (nextSymbol === 'C') {
jumlah += ROMAN_C - ROMAN_X;
saya++;
} kalau tidak {
jumlah += ROMAN_X;
}
merusak;
kasus 'L':
jumlah += ROMAN_L;
merusak;
kasus 'C':
if (nextSymbol === 'D') {
jumlah += ROMAN_D - ROMAN_C;
saya++;
} else if (nextSymbol === 'M') {
jumlah += ROMAN_M - ROMAN_C;
saya++;
} kalau tidak {
jumlah += ROMAN_C;
}
merusak;
kasus 'D':
jumlah += ROMAN_D;
merusak;
kasus 'M':
jumlah += ROMAN_M;
merusak;
bawaan:
// Karakter atau ruang ilegal
merusak;
}
}
jumlah pengembalian;
}
functionBasicRomanNumerals(str) {
var desimal = [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 ',
'SAYA'];
var keluaran = 0;
Distribusi Makanan
Memiliki fungsi FoodDistribution( arr ) membaca larik angka yang disimpan dalam arr yang
akan mewakili tingkat kelaparan orang yang berbeda mulai dari 0 hingga 5 (0 berarti tidak lapar sama
sekali, 5 berarti sangat lapar). Anda juga akan memiliki N sandwich untuk dibagikan yang berkisar dari
1 hingga 20. Format array adalah [N, h1, h2, h3, ...] di mana N mewakili jumlah sandwich yang Anda
miliki dan sisa array akan mewakili tingkat kelaparan orang yang berbeda. Tujuan Anda adalah untuk
meminimalkan perbedaan rasa lapar antara setiap pasangan orang dalam susunan menggunakan sandwich
yang Anda miliki.
Misalnya: jika arr adalah [5, 3, 1, 2, 1], ini berarti Anda memiliki 5 sandwich untuk dibagikan. Anda
dapat membagikannya dengan urutan sebagai berikut kepada orang-orang: 2, 0, 1, 0. Memberikan
sandwich ini kepada orang-orang tingkat kelaparan mereka sekarang menjadi: [1, 1, 1, 1]. Selisih antara
setiap pasang orang sekarang adalah 0, totalnya juga 0, jadi program Anda harus mengembalikan 0 .
Catatan: Anda mungkin tidak perlu memberikan semua, atau bahkan sebagian, sandwich Anda untuk
menghasilkan perbedaan yang diminimalkan.
Contoh lain: jika arr adalah [4, 5, 2, 3, 1, 0] maka Anda dapat mendistribusikan sandwich dengan
urutan sebagai berikut: [3, 0, 1, 0, 0] yang menjadikan semua tingkat kelaparan sebagai berikut: [2, 2, 2,
1, 0]. Perbedaan antara setiap pasangan orang sekarang adalah: 0, 0, 1, 1 dan program Anda harus
mengembalikan perbedaan akhir yang diminimalkan dari 2 .
Contoh
Masukan: [5, 2, 3, 4, 5]
Keluaran: 1
Masukan: [3, 2, 1, 0, 4, 1, 0]
Keluaran: 4
function FoodDistribution(arr) {
biarkan memperlakukan = arr.shift();
biarkan myArray = arr.slice(0);
biarkan arrMin = arr.sort((val1, val2) => val2 - val1).pop()
biarkan len = myArray.panjang;
// periksa untuk melihat apakah kita memiliki cukup suguhan untuk membawa
semua orang ke level terbaik saat ini
biarkan testCount = myArray.reduce((val1, val2) => {
kembalikan val1 + val2 - arrMin;
}, 0);
if (testCount <= memperlakukan) {
kembali 0;
}
biarkan hitung = 0;
for (biarkan i = 0, len = valQuantArr.panjang; i < len - 1; i++) {
hitung += Math.abs(valQuantArr[i].nilai - valQuantArr[i + 1].nilai);
}
jumlah pengembalian;
}
//-----------------pembantu-----------------------
flattenMid = (arr, suguhan, q) => {
biarkan indeks = 0;
while (memperlakukan > 0 && indeks > -1) {
indeks = 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 (indeks >= 0) {
arr[indeks].nilai --;
suguhan -= q;
}
}
kembalikan [objektifikasi(arr), suguhan];
}
//mengubah array menjadi objek dengan nilai sama dengan angka, dan
//quant menjadi berapa kali itu terjadi berturut-turut
objektifikasi = (array) => {
//jika itu adalah array angka
if (typeof array[0] === 'angka') {
biarkan target = [];
biarkan penghitung = 0;
for (biarkan i = 0, len = array.panjang; i < len; i++) {
biarkan val = larik[i];
penghitung++;
if (larik[i] === larik[i + 1]) {
melanjutkan;
} kalau tidak {
target.push({
nilai: larik[i],
kuant: penghitung
});
penghitung = 0;
}
}
target kembali;
} kalau tidak {
//jika itu adalah larik objek, ubah menjadi larik angka, dan
// lalu jalankan melalui metode objektifikasi
biarkan targetArray = [];
array.untukEach (val => {
while (val.quant) {
targetArray.push (val.nilai);
val.quant--;
}
});
return objectify(targetArray);
}
};
function FoodDistribution(arr) {
// Juga dapat menambahkan tanda centang di sini untuk menghapus sandwich yang
akan membuat lapar <0
fungsi getHungerDifference(arr){
biarkan beda = 0;
for (biarkan i = 1; i < arr.length; i++) {
diff += Math.abs(arr[i] - arr[i-1]);
}
kembali berbeda;
}
function FoodDistribution(arr) {
var N = arr[0];
var kelaparanTingkat = arr.slice(1);
sementara (N > 0) {
var maxDifference = 0;
// indeks yang akan diberi sandwich berikutnya
var paling Dibutuhkan = -1;
untuk (var i = 0; i < kelaparanLevels.panjang - 1; i++) {
var perbedaan = Math.abs(Tingkatlapar[i + 1] -Tingkatlapar[i]);
if (perbedaan > perbedaanmaks) {
maxDifference = perbedaan;
paling Dibutuhkan = (Tingkatlapar[i + 1] >Tingkatlapar[i]) ? (i +
1) : i;
}
}
// sekarang kita tahu siapa yang sangat membutuhkan sandwich itu.
memberikannya
jika (paling Dibutuhkan === -1) {
// perbedaan yang berdekatan semuanya 0, jadi berhentilah memberikan
sandwich
kembali 0;
} kalau tidak {
Tingkat kelaparan[paling Dibutuhkan] -= 1;
N--;
}
}
kembalikan jumlahPerbedaan;
}
Tiga Jumlah
Mintalah fungsi ThreeSum( arr ) mengambil larik bilangan bulat yang disimpan dalam arr , dan
tentukan apakah ada tiga angka berbeda (tidak termasuk elemen pertama) dalam larik yang dapat
menjumlahkan elemen pertama dalam larik. Sebagai contoh: jika arr adalah [8, 2, 1, 4, 10, 5, -1, -1]
maka sebenarnya ada tiga set triplet yang berjumlah 8: [2, 1, 5], [4 , 5, -1] dan [10, -1, -1]. Program
Anda harus mengembalikan string true jika 3 elemen berbeda menjumlahkan ke elemen pertama, jika
tidak, program Anda harus mengembalikan string false . Array input akan selalu berisi setidaknya 4
elemen.
Contoh
fungsi TigaJumlah(arr) {
// Hasilkan kombo
biarkan kombo = [];
for (biarkan i = 0, max = Math.pow(2, arr.length); i < max; i++) {
biarkan kombo = i.toString(2);
if (digitSum !== 3) {
melanjutkan;
}
// Pad digit
while (kombo.panjang < arr.panjang) {
kombo = '0' + kombo;
}
kombo.push(kombo);
}
// Uji kombo
biarkan kombo yang baik = [];
combos.forEach(fungsi(kombo){
biarkan jumlah = 0;
for (biarkan i = 0; i < combo.length; i++) {
if (kombo[i] === '1') {
jumlah += parseInt(arr[i]);
}
}
if (jumlah === jawaban) {
goodCombos.push(combo);
}
});
fungsi TigaJumlah(arr) {
var jumlah = arr[0];
var angka = arr.slice(1);
Mintalah fungsi CorrectPath( str ) membaca parameter str yang sedang diteruskan, yang akan
mewakili gerakan yang dilakukan dalam kisi sel 5x5 mulai dari posisi kiri atas. Karakter dalam string
input seluruhnya terdiri dari: r, l, u, d, ? . Masing-masing karakter mewakili arah yang diambil dalam
kisi, misalnya: r = kanan, l = kiri, u = atas, d = bawah. Tujuan Anda adalah untuk menentukan karakter
apa yang harus menjadi tanda tanya agar jalur dibuat dari kiri atas kisi sampai ke kanan bawah tanpa
menyentuh sel yang dilalui sebelumnya di dalam kisi.
Sebagai contoh: jika str adalah "r?d?drdd" maka program Anda harus mengeluarkan string akhir yang
benar yang akan memungkinkan jalur dibentuk dari kiri atas kisi 5x5 ke kanan bawah. Untuk masukan
ini, program Anda harus mengembalikan string rrrdrdd . Hanya akan ada satu jalur yang benar dan akan
selalu ada setidaknya satu tanda tanya dalam string masukan.
Contoh
Masukan: "???rrurdr?"
Keluaran: dddrrrrdrd
Masukan: "drdr??rrddd?"
Keluaran: drdruurrdddd
function CorrectPath(str) {
// buat array untuk menahan posisi tanda tanya
biarkan blankArray = [];
//masukkan posisi tanda tanya ke dalam array
str.split('').forEach((val, ind) => {
if (val === '?') {
blankArray.push(ind);
}
});
//kita akan mencoba setiap kemungkinan sampai kita menemukan satu yang
berhasil, ini akan menjadi 4^num permutasi
biarkan total = Math.pow(4, num);
function CorrectPath(str) {
// Coba jalur
combos.forEach(fungsi(kombo){
biarkan comboArray = combo.split('');
biarkan tryPath = '';
for (biarkan i = 0; i < str.panjang; i++) {
jika (str[i] === '?') {
biarkan arah = comboArray.shift();
beralih (arah) {
huruf '0': // benar
tryPath += 'r';
merusak;
huruf '1': // turun
tryPath += 'd';
merusak;
kasus '2': // kiri
tryPath += 'l';
merusak;
kasus '3': // atas
tryPath += 'u';
merusak;
bawaan:
// Seharusnya tidak pernah terjadi
merusak;
}
} kalau tidak {
tryPath += str[i];
}
}
if (pathGood(tryPath)) {
goodPaths.push(tryPath);
}
});
// goodPaths menurut spesifikasi seharusnya hanya menjadi === 1, tetapi kode ini
dapat menangani lebih banyak kasus yang sebenarnya
kembalikan goodPaths[0];
biarkan kisi = [
[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]
]; // tujuan 4,4
}
}
fungsi findMissingChars(str) {
// pertama, hasilkan semua kemungkinan kasus: mengganti ? dengan arah
var permutasi = [''];
for (var i = 0; i < str.panjang; i++) {
jika (str[i] === '?') {
var newPermutations = [];
permutasi.untukEach(fungsi(permutasi) {
newPermutations.push(permutasi + 'u');
newPermutations.push(permutasi + 'd');
newPermutations.push(permutasi + 'l');
newPermutations.push(permutasi + 'r');
});
permutasi = Permutasi baru;
} kalau tidak {
permutasi = permutasi.peta(permutasi => permutasi + str[i]);
}
}
function CorrectPath(str) {
var validPaths = findMissingChars(str);
Miliki fungsi ScaleBalancing( strArr ) baca strArr yang akan berisi dua elemen, yang
pertama adalah dua bobot bilangan bulat positif pada skala keseimbangan (sisi kiri dan kanan) dan
elemen kedua adalah daftar bobot yang tersedia sebagai bilangan bulat positif. Sasaran Anda adalah
untuk menentukan apakah Anda dapat menyeimbangkan timbangan dengan menggunakan bobot paling
sedikit dari daftar, tetapi menggunakan paling banyak hanya 2 bobot. Contoh: jika strArr adalah ["[5,
9]", "[1, 2, 6, 7]"] maka ini berarti ada timbangan dengan bobot 5 di sisi kiri dan 9 di sisi kanan .
Sebenarnya dimungkinkan untuk menyeimbangkan skala ini dengan menambahkan 6 ke sisi kiri dari
daftar bobot dan menambahkan 2 ke sisi kanan. Kedua skala sekarang akan sama dengan 11 dan
seimbang sempurna. Program Anda harus mengembalikan string bobot yang dipisahkan koma yang
digunakan dari daftar dalam urutan menaik, jadi untuk contoh ini program Anda harus mengembalikan
string 2,6
Hanya akan ada satu solusi unik dan daftar bobot yang tersedia tidak akan kosong. Dimungkinkan juga
untuk menambahkan dua bobot hanya pada satu sisi timbangan untuk menyeimbangkannya. Jika tidak
memungkinkan untuk menyeimbangkan skala maka program Anda harus mengembalikan string not
possible .
Contoh
function ScaleBalancing(strArr) {
/*
Hasilkan semua kemungkinan kombinasi bobot DAN permutasi kiri/kanan - 3^n
kali
0 - Berat tidak digunakan
1 - Berat di sisi kiri
2 - Berat di sisi kanan
*/
biarkan kombo = [];
for (biarkan i = 0, max = Math.pow(3, weights.length); i < max; i++) {
biarkan kombo = i.toString(3);
biarkan numWeights = combo.split('').reduce((a,v) => a + (parseInt(v) > 0 |
0), 0);
// Pad
while (kombo.panjang < bobot.panjang) {
kombo = '0' + kombo;
}
kombo.push(kombo);
}
// console.log(kombo);
// Uji kombo
biarkan kombo yang baik = [];
combos.forEach(fungsi(kombo){
biarkan kiri = objek[0];
biarkan kanan = objek[1];
if (goodCombos.panjang === 0) {
kembali 'tidak mungkin';
}
// Urutkan dulu berdasarkan jumlah bobot fisik yang digunakan, lalu berdasarkan
bobot total jika ada beberapa set
goodCombos.sort(fungsi(a, b){
biarkan Hitung = a.split('').mengurangi((ac,v) => ac + (parseInt(v) > 0 | 0),
0);
biarkan bHitung = b.split('').mengurangi((ac,v) => ac + (parseInt(v) > 0 |
0), 0);
function ScaleBalancing(strArr) {
var bobot = strArr[1].match(/\d+/g).map(Angka);
var weightsOnScale = strArr[0].match(/\d+/g).map(Angka);
var leftWeight = bobotBerdasarkanSkala[0];
var rightWeight = bobotBerdasarkanSkala[1];
Mintalah fungsi ThreeNumbers( str ) ambil parameter str yang diteruskan dan tentukan apakah
tepat tiga bilangan bulat satu digit yang unik terjadi di dalam setiap kata dalam string. Bilangan bulat
dapat muncul di mana saja dalam kata, tetapi tidak boleh berdekatan satu sama lain. Jika setiap kata
berisi tepat 3 bilangan bulat unik di suatu tempat di dalamnya, maka kembalikan string true , jika tidak,
kembalikan string false . Sebagai contoh: jika str adalah "2hell6o3 wor6l7d2" maka program Anda
harus mengembalikan "true" tetapi jika string adalah "hell268o w6or2l4d" maka program Anda harus
mengembalikan "false" karena semua bilangan bulat berdekatan satu sama lain di kata pertama.
Contoh
kata-kata.untukEach(fungsi(kata){
biarkan angka = 0;
biarkan tigaBerdekatan = salah;
biarkan angkaDigit bekas = '';
for (biarkan i = 0; i < panjang kata; i++) {
// Periksa digit yang digunakan
if (usedDigits.includes(word[i])) {
// digunakan! gagal
hasil = salah;
}
if (DIGITS.termasuk(kata[i])) {
angka++;
usedDigits += kata[i];
if (angka === 3) {
if (DIGITS.termasuk(kata[i-1]) && DIGITS.termasuk(kata[i-2])) {
tigaBerdekatan = benar;
}
}
}
// Periksa 3 digit sebelumnya yang berdekatan
}
} kalau tidak {
hasil = salah;
}
});
mengembalikan hasil;
}
fungsi TigaBilangan(str) {
var kata = str.split(' ');
var numberOfWords = kata.peta(kata => kata.cocok(/\d+/g));
kembali benar;
}
fungsi TigaBilangan(str) {
Pencarian Alfabet
Miliki fungsi AlphabetSearching( str ) ambil parameter str yang diteruskan dan kembalikan
string true jika setiap huruf alfabet bahasa Inggris ada di string, jika tidak, kembalikan string false .
Sebagai contoh: jika str adalah "zacxyjbbkfgtbhdaielqrm45pnsowtuv" maka program Anda harus
mengembalikan string dengan benar karena setiap karakter dalam alfabet ada dalam string ini meskipun
beberapa karakter muncul lebih dari sekali.
Contoh
Masukan: "abcdefghijklmnopqrstuvwxyyyy"
Keluaran: salah
Masukan: "abc123456kmo"
Keluaran: salah
fungsi Pencarian Alfabet(str) {
str = str.toLowerCase();
for (biarkan i = 97; i < 97 + 26; i++) {
biarkan char = String.fromCharCode(i);
if (!str.includes(char)) {
kembali salah;
}
}
kembali benar;
}
fungsi isAlpha(char) {
return /[A-Za-z]/.test(char);
}
Buat fungsi TimeDifference( strArr ) membaca larik string yang disimpan di strArr yang
akan menjadi daftar waktu yang tidak disortir dalam format dua belas jam seperti: HH:MM(am/pm).
Tujuan Anda adalah menentukan perbedaan terkecil dalam menit antara dua waktu dalam daftar.
Misalnya: jika strArr adalah ["2:10pm", "1:30pm", "10:30am", "4:42pm"] maka program Anda harus
mengembalikan 40 karena perbedaan terkecil adalah antara 13:30 dan 14:10 dengan selisih 40 menit.
Array input akan selalu berisi setidaknya dua elemen dan semua elemen akan berada dalam format yang
benar dan unik.
Contoh
function TimeDifference(strArr) {
// waktu akan menahan perbedaan waktu kita
biarkan kali = [];
biarkan newStrArr = strArr.peta (val => {
biarkan cocok = val.cocok(/^(\d+):(\d+)([ap]m)$/);
biarkan jam = parseInt(cocok [1], 10);
biarkan menit = parseInt(cocok[2], 10);
biarkan setengah = cocok[3];
if (setengah === 'pagi' && jam === 12) {
jam = 0;
}
if (setengah === 'siang' && jam !== 12) {
jam += 12;
}
kembali (jam * 60 + menit);
})
.sort((a, b) => { kembalikan a - b});
//tricky - contoh kedua menunjukkan bahwa kita harus mempertimbangkan waktu
paling awal baik pada hari 0 maupun hari 1
newStrArr.push(newStrArr[0] + 24 * 60);
function TimeDifference(strArr) {
biarkan array = strArr.peta(nilai => {
biarkan cocok = nilai.cocok(/^(\d+):(\d+)([ap]m)$/);
biarkan h = parseInt(cocok [1], 10);
biarkan m = parseInt(cocok[2], 10);
if (cocok[3] === 'am' && h === 12) {
h = 0;
} else if (cocok[3] === 'pm' && h !== 12) {
jam += 12;
}
kembali (60 * h + m);
}).sort(fungsi(a, b) {
kembalikan a - b;
});
array.push(array[0] + 24 * 60);
biarkan kali = [];
for (biarkan i = 0; i < array.panjang - 1; i++) {
kali.push(array[i+1] - larik[i]);
}
return Math.min(... kali);
}
// pertahankan panggilan fungsi ini di sini
TimeDifference(readline());
Baris Segitiga
Miliki fungsi TriangleRow( num ) ambil num yang akan menjadi bilangan bulat positif yang
mewakili beberapa baris dari segitiga Pascal. Segitiga Pascal dimulai dengan [1] di baris ke-0 segitiga.
Maka baris pertama adalah [1, 1] dan baris kedua adalah [1, 2, 1]. Baris berikutnya dimulai dengan 1 dan
diakhiri dengan 1, dan bagian dalam baris ditentukan dengan menjumlahkan elemen k-1 dan kth dari
baris sebelumnya. Baris berikutnya dalam segitiga akan menjadi [1, 3, 3, 1], dan seterusnya. Inputnya
akan berupa bilangan bulat positif dan tujuan Anda adalah mengembalikan jumlah baris itu. Misalnya:
jika num adalah 4 maka program Anda harus mengembalikan jumlah 1 + 4 + 6 + 4 + 1 yaitu 16 .
Contoh
Masukan: 1
Keluaran: 2
Masukan: 2
Keluaran: 4
fungsi SegitigaBaris(bil) {
return Math.pow(2, num);
}
console.log(TriangleRow(5));
fungsi SegitigaBaris(bil) {
}
// pertahankan panggilan fungsi ini di sini
TriangleRow(readline());
fungsi SegitigaBaris(bil) {
// jawaban yang mudah - selalu berjumlah n^2
// kembalikan num * num;
Kotak Vokal
Mintalah fungsi VowelSquare( strArr ) ambil parameter strArr yang akan menjadi matriks 2D
dengan ukuran acak yang diisi dengan huruf dari alfabet, dan tentukan apakah persegi 2x2 yang
seluruhnya terdiri dari vokal ada dalam matriks. Misalnya: strArr adalah ["abcd", "eikr", "oufj"] maka
matriks ini terlihat seperti berikut:
abcd
ei kr
ou fj
Di dalam matriks ini terdapat bujur sangkar vokal 2x2 yang dimulai dari baris kedua dan kolom
pertama, yaitu ei, ou. Jika 2x2 kotak vokal ditemukan, program Anda harus mengembalikan posisi kiri
atas (baris-kolom) kotak, jadi untuk contoh ini program Anda harus mengembalikan 1-0 . Jika tidak ada
kuadrat vokal 2x2, maka kembalikan string not found . Jika ada beberapa kotak vokal, kembalikan yang
berada di posisi paling kiri atas di seluruh matriks. Matriks input setidaknya berukuran 2x2.
Contoh
function VowelSquare(strArr) {
function isVowel(huruf) {
const VOWEL = 'aeiou';
return VOwels.includes(letter);
}
}
// periksa apakah setiap huruf dalam matriks yang diberikan adalah vokal
function allVowels(matrix) {
return matrix.every(row => row.every(letter => 'aeiou'.indexOf(letter) !== -1));
}
function VowelSquare(strArr) {
var matriks = strArr.peta(baris => baris.split(''));
Musuh Terdekat
Miliki fungsi ClosestEnemy( arr ) ambil larik angka yang disimpan di arr dan dari posisi dalam
larik di mana 1 berada, kembalikan jumlah spasi baik kiri atau kanan Anda harus bergerak untuk
mencapai musuh yang diwakili oleh 2. Misalnya: jika arr adalah [0, 0, 1, 0, 0, 2, 0, 2] maka program
Anda harus mengembalikan 3 karena musuh terdekat (2) berjarak 3 spasi dari 1. Array akan berisi
sejumlah 0 dan 2, tetapi hanya 1 tunggal. Itu mungkin tidak mengandung 2 sama sekali, di mana dalam
hal ini program Anda harus mengembalikan 0.
Contoh
Masukan: [1, 0, 0, 0, 2, 2, 2]
Keluaran: 4
Masukan: [2, 0, 0, 0, 2, 2, 1, 0]
Keluaran: 1
function ClosestEnemy(arr) {
if (!arr.includes(2)) {
kembali 0;
}
loc1 = arr.findIndex(val => {
kembali nilai === 1;
});
function ClosestEnemy(arr) {
// Cari di kiri
biarkan deltaLeft = undefined;
for (biarkan i = hero-1; i >= 0; i--) {
if (arr[i] === 2) { // Menemukan musuh
deltaLeft = pahlawan - i;
merusak;
}
}
if (deltaLeft === tidak terdefinisi && deltaRight === tidak terdefinisi) {
kembali 0;
}
function ClosestEnemy(arr) {
// indeks 1
var saya = arr.indexOf(1);
var jarak minimum = arr.panjang;
Musuh Terdekat II
Memiliki fungsi ClosestEnemyII( strArr ) membaca matriks angka yang disimpan dalam
strArr yang akan menjadi matriks 2D yang hanya berisi bilangan bulat 1, 0, atau 2. Kemudian dari
posisi dalam matriks dimana 1 berada, kembalikan jumlah spasi baik kiri, kanan, bawah, atau atas Anda
harus bergerak untuk mencapai musuh yang diwakili oleh 2. Anda juga dapat membungkus satu sisi
matriks ke sisi lainnya. Sebagai contoh: jika strArr adalah ["0000", "1000", "0002", "0002"] maka
akan terlihat seperti berikut:
0 0 0 0
1 0 0 0
0 0 0 2
0 0 0 2
Untuk input ini program Anda harus mengembalikan 2 karena musuh terdekat (2) berjarak 2 spasi dari 1
dengan bergerak ke kiri untuk membungkus ke sisi lain dan kemudian bergerak ke bawah sekali. Array
akan berisi sejumlah 0 dan 2, tetapi hanya 1 tunggal. Itu mungkin tidak mengandung 2 sama sekali, di
mana dalam hal ini program Anda harus mengembalikan 0.
Contoh
function ClosestEnemyII(strArr) {
//langkah pertama - kembalikan 0 jika tidak ada 2 dalam array
biarkan twosies = strArr.filter(val => {
return val.include("2");
});
if (!duasies.panjang) {
kembali 0;
}
//langkah kedua - dapatkan koordinat 1 (targetX, targetY)
targetY = strArr.findIndex(val => {
return val.include('1');
});
targetX = strArr[targetY].search(/1/);
//langkah ketiga temukan jalur terkecil ke 2
biarkan res = strArr.panjang * strArr[0].panjang;
}
//-----------------------pembantu-------------------------
// terlepas dari namanya, gunakan untuk jarak kolom dan baris
fungsi barisDist(y, x, len) {
return Math.min(Math.abs(x - y), Math.abs(y - x + len));
}
function ClosestEnemyII(strArr) {
// Temukan pahlawan
biarkan pahlawanY = -1;
biarkan heroX = -1;
for (biarkan i = 0; i < strArr.panjang; i++) {
biarkan hasil = strArr[i].indexOf(1);
if (hasil > -1) {
heroX = hasil;
pahlawanY = saya;
}
}
// Periksa musuh
biarkan musuh = [];
for (biarkan i = 0; i < strArr.panjang; i++) {
biarkan hasil = strArr[i].indexOf(2);
if (hasil > -1) {
musuh.push([i, hasil]);
}
}
if (musuh.panjang === 0) {
kembali 0;
}
//console.log(musuh);
kembali terdekatJarak;
// temukan jarak antara dua elemen dengan indeks [baris, kolom] yang diberikan
fungsi getDistance(matrixSize, indeks1, indeks2) {
var barisJarak = Math.min(Math.abs(indeks2[0] - indeks1[0]), Math.abs(indeks1[0]
- (indeks2[0] - ukuranmatriks)));
var columnDistance = Math.min(Math.abs(indeks2[1] - indeks1[1]),
Math.abs(indeks1[1] - (indeks2[1] - ukuranmatriks)));
kembali barisJarak + jarakkolom;
}
function ClosestEnemyII(strArr) {
var matriks = strArr.peta(baris => baris.split('').peta(Angka));
var minDistance = matriks.panjang * 2;
// lokasi saya: 1
var meIndeks;
// lokasi musuh: 2
var musuhIndeks = [];
Mintalah fungsi NumberStream( str ) mengambil parameter str yang akan berisi angka 2 hingga
9, dan tentukan apakah ada aliran digit berturut-turut dengan panjang minimal N di mana N adalah nilai
digit sebenarnya. Jika demikian, kembalikan string true , jika tidak kembalikan string false . Sebagai
contoh: jika str adalah "6539923335" maka program Anda harus mengembalikan string yang benar
karena ada aliran 3 yang berurutan dengan panjang 3. String input akan selalu berisi setidaknya satu
digit.
Contoh
Masukan: "5556293383563665"
Keluaran: salah
Masukan: "5788888888882339999"
Keluaran: benar
fungsi NumberStream(str) {
for (biarkan i = 2; i < 10; i++) {
biarkan iChar = i.toString();
biarkan jarum = iChar.repeat(i);
if (str.indexOf(jarum) !== -1) {
kembali benar;
}
}
// kode di sini
kembali salah;
fungsi NumberStream(str) {
fungsi NumberStream(str) {
// hasilkan pola terlebih dahulu
pola var = [];
untuk (var i = 1; i < 10; i++) {
pola.push(String(i).ulangi(i));
}
Empat Terbesar
Mintalah fungsi LargestFour( arr ) ambil array bilangan bulat yang disimpan di arr , dan
temukan empat elemen terbesar dan kembalikan jumlahnya. Sebagai contoh: jika arr adalah [4, 5, -2, 3,
1, 2, 6, 6] maka empat elemen terbesar dalam array ini adalah 6, 6, 4, dan 5 dan jumlah total angka-
angka ini adalah 21 , jadi program Anda harus mengembalikan 21 . Jika ada kurang dari empat angka
dalam larik, program Anda harus mengembalikan jumlah semua angka dalam larik.
Contoh
Masukan: [0, 0, 2, 3, 7, 1]
Keluaran: 13
function LargestFour(arr) {
biarkan newArr = arr.sort((val1, val2) => {
kembalikan val2 - val1;
})
.splice(0, 4);
return newArr.reduce((val1, val2) => {
kembalikan val1 + val2;
}, 0);
}
function LargestFour(arr) {
function LargestFour(arr) {
return arr.sort((a, b) => a < b).slice(0, 4).reduce((sum, v) => sum + v, 0);
}
Mintalah fungsi DistinctCharacters( str ) ambil parameter str yang diteruskan dan tentukan
apakah mengandung setidaknya 10 karakter berbeda, jika demikian, maka program Anda harus
mengembalikan string true , jika tidak maka harus mengembalikan string false . Misalnya: jika str
adalah "abc123kkmmmm?" maka program Anda harus mengembalikan string false karena string ini
hanya berisi 9 karakter berbeda: a, b, c, 1, 2, 3, k, m, ? menambahkan hingga 9.
Contoh
Masukan: "12334bbmma:=6"
Keluaran: benar
Masukan: "eeeemmmmmmmmm1000"
Keluaran: salah
function DistinctCharacters(str) {
biarkan mySet = new Set(str.split(''));
kembalikan mySet.size >= 10 ? benar salah
}
function DistinctCharacters(str) {
biarkan charCodes = [];
for (biarkan i = 0; i < str.panjang; i++) {
if (!charCodes.includes(str.charCodeAt(i))) {
charCodes.push(str.charCodeAt(i));
}
}
return (charCodes.length >= 10) ? benar salah;
function DistinctCharacters(str) {
var perbedaan = {};
Tanda Tanya
Miliki fungsi Tanda Tanya( str ) ambil parameter string str , yang akan berisi angka satu digit,
huruf, dan tanda tanya, dan periksa apakah ada tepat 3 tanda tanya di antara setiap pasangan dari dua
angka yang berjumlah 10. Jika demikian, maka program Anda harus mengembalikan string true , jika
tidak program Anda harus mengembalikan string false . Jika tidak ada dua angka yang menambahkan
hingga 10 dalam string, maka program Anda juga harus mengembalikan false .
Sebagai contoh: jika str adalah "arrb6???4xxbl5???eee5" maka program Anda harus mengembalikan
nilai true karena tepat ada 3 tanda tanya antara 6 dan 4, dan 3 tanda tanya antara 5 dan 5 di akhir string.
Contoh
Masukan: "aa6?9"
Keluaran: salah
Masukan: "acc?7??sss?3rr1????????5"
Keluaran: benar
function Tanda Tanya(str) {
biarkan numPlaces = [];
// anggapan salah, sampai bendera berubah menjadi benar
biarkan bendera = salah;
Kasus Unta
Memiliki fungsi CamelCase( str ) mengambil parameter str yang diteruskan dan
mengembalikannya dalam format huruf besar unta yang tepat di mana huruf pertama dari setiap kata
dikapitalisasi (tidak termasuk huruf pertama). String hanya akan berisi huruf dan beberapa kombinasi
karakter tanda baca pembatas yang memisahkan setiap kata.
Misalnya: jika str adalah "BOB love-coding" maka program Anda harus mengembalikan string
bobLovesCoding .
Contoh
return strArr.bergabung('');
}
Konversi ASCII
Mintalah fungsi ASCIIConversion( str ) mengambil parameter str yang diteruskan dan
mengembalikan string baru di mana setiap karakter, selain karakter spasi, diganti dengan kode karakter
desimal yang sesuai. Sebagai contoh: jika str adalah "anjing" maka program Anda harus
mengembalikan string 100111103 karena d = 100, o = 111, g = 103.
Contoh
Miliki fungsi SimpleEvens( num ) periksa apakah setiap angka dalam parameter yang diteruskan
adalah genap. Jika demikian, kembalikan string true , jika tidak kembalikan string false . Sebagai
contoh: jika num adalah 4602225, program Anda harus mengembalikan string false karena 5 bukan
bilangan genap.
Contoh
Masukan: 2222220222
Keluaran: benar
Masukan: 20864646452
Keluaran: salah
function SimpleEvens(num) {
kembalikan num.toString(10).search(/[13579]/) === -1 ? 'benar salah';
}
SimpleEvens(readline());
Kasus Ular
Memiliki fungsi SnakeCase( str ) mengambil parameter str yang diteruskan dan
mengembalikannya dalam format kasus ular yang tepat di mana setiap kata ditulis dengan huruf kecil
dan dipisahkan dari kata yang berdekatan melalui garis bawah. String hanya akan berisi huruf dan
beberapa kombinasi karakter tanda baca pembatas yang memisahkan setiap kata.
Misalnya: jika str adalah "BOB love-coding" maka program Anda harus mengembalikan string
bob_loves_coding .
Contoh
SnakeCase(readline());
Temukan Persimpangan
Buat fungsi FindIntersection( strArr ) membaca larik string yang disimpan dalam strArr
yang akan berisi 2 elemen: elemen pertama akan mewakili daftar nomor yang dipisahkan koma yang
diurutkan dalam urutan menaik, elemen kedua akan mewakili daftar kedua yang dipisahkan koma nomor
(juga diurutkan). Tujuan Anda adalah mengembalikan string yang dipisahkan koma yang berisi angka
yang muncul di elemen strArr dalam urutan terurut. Jika tidak ada persimpangan, kembalikan string
false .
Sebagai contoh: jika strArr berisi ["1, 3, 4, 7, 13", "1, 2, 4, 13, 15"] output harus mengembalikan
"1,4,13" karena angka tersebut muncul di kedua string. Larik yang diberikan tidak akan kosong, dan
setiap string di dalam larik akan berupa angka yang diurutkan dalam urutan menaik dan mungkin berisi
angka negatif.
Contoh
Miliki fungsi SumMultiplier( arr ) ambil larik angka yang disimpan di arr dan kembalikan
string benar jika ada dua angka yang dapat dikalikan sehingga jawabannya lebih dari dua kali lipat
jumlah semua elemen dalam larik. Jika tidak, kembalikan string false . Misalnya: jika arr adalah [2, 5,
6, -6, 16, 2, 3, 6, 5, 3] maka jumlah semua elemen ini adalah 42 dan digandakan menjadi 84. Ada dua
elemen dalam array, 16 * 6 = 96 dan 96 lebih besar dari 84, jadi program Anda harus mengembalikan
string true .
Contoh
Masukan: [2, 2, 2, 2, 4, 1]
Keluaran: salah
Penggabungan Tali
Perintahkan fungsi StringMerge( str ) membaca parameter str yang sedang diteruskan yang akan
berisi string besar karakter alfanumerik dengan satu karakter asterisk yang membagi string secara merata
menjadi dua string terpisah. Tujuan Anda adalah mengembalikan string baru dengan memasangkan
karakter di lokasi yang sesuai di kedua string. Sebagai contoh: jika str adalah "abc1*kyoo" maka
program Anda harus mengembalikan string akbyco1o karena a berpasangan dengan k, b berpasangan
dengan y, dll. Tali akan selalu terbelah rata dengan tanda bintang di tengah.
Contoh
Masukan: "aaa*bbb"
Keluaran: abab
Masukan: "123hg*aaabb"
Keluaran: 1a2a3ahbgb
fungsi StringMerge(str) {
const cleanString = str.replace(/[^\w*]/g, '');
const len = (cleanString.panjang - 1) / 2;
biarkan newString = '';
const arr = str.split('*');
Satu Dikurangi
Miliki fungsi OneDecremented( str ) hitung berapa kali angka yang muncul tepat satu kurang dari
angka sebelumnya. Sebagai contoh: jika str adalah "5655984" maka program Anda harus
mengembalikan 2 karena 5 muncul langsung setelah 6 dan 8 muncul langsung setelah 9. Input akan
selalu berisi minimal 1 digit.
Contoh
Masukan: "56"
Keluaran: 0
Masukan: "9876541110"
Keluaran: 6
function OneDecremented(num) {
biarkan penghitung = 0;
biarkan arr = num.toString().split('');
arr.forEach((val, ind) => {
jika (parseInt(val, 10) - parseInt(arr[ind + 1], 10) === 1) {
penghitung++;
}
})
loket pengembalian;
}
Penggabungan Elemen
Mintalah fungsi ElementMerger( arr ) ambil larik bilangan bulat positif yang disimpan dalam arr
dan lakukan algoritme berikut: terus dapatkan selisih bilangan bulat yang berdekatan untuk membuat
larik bilangan bulat baru, lalu lakukan hal yang sama untuk larik baru hingga satu angka kiri dan kembali
nomor itu. Sebagai contoh: jika arr adalah [4, 5, 1, 2, 7] maka mengambil perbedaan dari setiap
pasangan elemen menghasilkan array baru berikut: [1, 4, 1, 5]. Kemudian lakukan hal yang sama untuk
array baru ini untuk menghasilkan [3, 3, 4] -> [0, 1] -> 1. Jadi untuk contoh ini program Anda harus
mengembalikan angka 1 karena itulah yang tersisa di akhir.
Contoh
Masukan: [1, 1, 1, 2]
Keluaran: 1
function ElementMerger(arr) {
jika (arr.panjang === 1) {
return arr[0];
} kalau tidak {
newArr = [];
arr.forEach((val, ind) => {
if (ind < arr.panjang - 1) {
newArr.push(Math.abs(val - arr[ind + 1]));
}
})
return ElementMerger(newArr);
}
}
ElementMerger(readline());
GCF
Mintalah fungsi GCF( arr ) mengambil larik angka yang disimpan dalam arr yang akan selalu berisi
hanya dua bilangan bulat positif, dan mengembalikan faktor persekutuan terbesarnya. Misalnya: jika
arr adalah [45, 12] maka program Anda harus mengembalikan 3 . Akan selalu ada dua elemen dalam
array dan mereka akan menjadi bilangan bulat positif.
Contoh
Masukan: [1, 6]
Keluaran: 1
Nomor seri
Minta fungsi SerialNumber( str ) ambil parameter str yang diteruskan dan tentukan apakah itu
nomor seri yang valid dengan batasan berikut:
1. Itu harus berisi tiga set masing-masing dengan tiga digit (1 sampai 9) yang dipisahkan oleh titik.
2. Himpunan digit pertama harus berjumlah genap.
3. Kumpulan digit kedua harus berjumlah ganjil.
4. Digit terakhir di setiap set harus lebih besar dari dua digit sebelumnya di set yang sama.
Jika semua batasan di atas terpenuhi dalam string, program Anda harus mengembalikan string true , jika
tidak, program Anda harus mengembalikan string false . Sebagai contoh: jika str adalah "224.315.218"
maka program Anda harus mengembalikan "true".
Contoh
Masukan: "11.124.667"
Keluaran: salah
Masukan: "114.568.112"
Keluaran: benar
//ubah string menjadi tiga larik yang masing-masing terdiri dari tiga digit
biarkan arr = str.split(/\./).map(val => {
return val.split('').peta(val2 => {
return parseInt(val2, 10);
});
});
Periode Rangkaian
Mintalah fungsi StringPeriods( str ) mengambil parameter str yang diteruskan dan menentukan
apakah ada beberapa substring K yang dapat diulang N > 1 kali untuk menghasilkan string input persis
seperti yang terlihat. Program Anda harus mengembalikan substring terpanjang K, dan jika tidak ada, ia
harus mengembalikan string -1 .
Sebagai contoh: jika str adalah "abcababcababcab" maka program Anda harus mengembalikan abcab
karena itu adalah substring terpanjang yang diulang 3 kali untuk membuat string terakhir. Contoh lain:
jika str adalah "abababababab" maka program Anda harus mengembalikan ababab karena merupakan
substring terpanjang. Jika input string hanya berisi satu karakter, program Anda harus mengembalikan
string -1 .
Contoh
Masukan: "abcxabc"
Keluaran: -1
Masukan: "affedaaffed"
Keluaran: -1
function StringPeriods(str) {
// kita hanya akan menggunakan panjang substring yang terbagi rata menjadi str
const len = str.panjang;
const pivot = Math.max(Math.trunc(Math.sqrt(len)), len);
for (biarkan i = 2; i <= pivot; i++) {
jika (len % i === 0) {
blok const = str.slice(0, len / i);
if (blok.ulangi(i) === str) {
blok kembali;
}
}
}
kembali -1;
}
Penukar Palindrom
Miliki fungsi PalindromeSwapper( str ) ambil parameter str yang diteruskan dan tentukan
apakah palindrome dapat dibuat dengan menukar dua karakter yang berdekatan dalam string. Jika
memungkinkan untuk membuat palindrom, maka program Anda harus mengembalikan palindrom, jika
tidak maka kembalikan string -1 . String input hanya akan berisi karakter alfabet. Sebagai contoh: jika
str adalah "rcaecar" maka Anda dapat membuat palindrom dengan menukar karakter kedua dan ketiga,
sehingga program Anda harus mengembalikan string racecar yang merupakan string palindromik
terakhir.
Contoh
Masukan: "anna"
Keluaran: anna
Masukan: "kyak"
Keluaran: kayak
function PalindromeSwapper(str) {
biarkan inputArray = str.split('');
biarkan strLen = inputArray.panjang;
biarkan palTester = function(arr) {
biarkan len = arr.panjang;
for (biarkan i = 0; i < len; i++) {
if (arr[i] !== arr[len - (1 + i)]) {
kembali salah;
}
}
kembali benar;
}
Perintahkan fungsi RemoveBrackets( str ) ambil parameter string str yang akan diteruskan, yang
hanya akan berisi karakter "(" dan ")", dan tentukan jumlah minimum tanda kurung yang perlu dihapus
untuk membuat string tanda kurung yang cocok dengan benar. Sebagai contoh: jika str adalah "(()))"
maka program Anda harus mengembalikan angka 1 . Jawabannya berpotensi 0, dan akan selalu ada
setidaknya satu set tanda kurung yang cocok dalam string.
Contoh
Memasukkan: "(())()((("
Keluaran: 3
Memasukkan: "(()("
Keluaran: 2
fungsi RemoveBrackets(str) {
biarkan lemparan = 0;
biarkan penghitung = 0;
biarkan arr = str.split('');
biarkan len = arr.panjang;
lemparan kembali;
}
// pertahankan panggilan fungsi ini di sini
RemoveBrackets(readline());
Garis komando
Mintalah fungsi CommandLine( str ) mengambil parameter str yang diteruskan yang mewakili
parameter yang diberikan ke perintah dalam sistem PDP lama. Parameternya adalah token alfanumerik
(tanpa spasi) diikuti dengan tanda sama dengan dan nilai yang sesuai. Beberapa pasangan parameter/nilai
dapat ditempatkan pada baris perintah dengan spasi tunggal di antara setiap pasangan. Token dan nilai
parameter tidak boleh berisi tanda sama dengan tetapi nilai dapat berisi spasi. Tujuan dari fungsi ini
adalah untuk mengisolasi parameter dan nilai untuk mengembalikan daftar panjang parameter dan nilai.
Itu harus memberikan hasilnya dalam format yang sama dan dalam urutan yang sama dengan mengganti
setiap entri (token dan nilai) dengan panjang yang sesuai.
Contoh
Miliki fungsi StarRating( str ) ambil parameter str yang akan diteruskan yang akan menjadi
peringkat rata-rata antara 0,00 dan 5,00, dan ubah peringkat ini menjadi daftar 5 nama gambar untuk
ditampilkan di antarmuka pengguna untuk mewakili peringkat sebagai daftar bintang dan setengah
bintang. Peringkat harus dibulatkan ke setengah terdekat. Ada 3 nama file gambar yang tersedia:
"full.jpg", "half.jpg", "empty.jpg". Outputnya adalah nama dari 5 gambar (tanpa ekstensi), dari kiri ke
kanan, dipisahkan oleh spasi. Sebagai contoh: jika str adalah "2.36" maka ini harus ditampilkan dengan
gambar berikut:
Jadi program Anda harus mengembalikan string "full full half empty empty".
Contoh
Masukan: "0,38"
Keluaran: setengah kosong kosong kosong kosong
Masukan: "4.5"
Keluaran: penuh penuh penuh setengah penuh
function Peringkat Bintang(str) {
biarkan num = (Math.round(parseFloat(str) * 2)) / 2;
biarkan starString = '';
biarkan setengah = !(Math.trunc(num) === num);