Данный отчёт сгенерирован 10.02.2023 18:21:31 UTC.
HTML версия (этот сайт) сгенерирован 10.02.2023 18:21:38 UTC.
Коммит: [bfeb65b9] add automatic zip creation 10.02.2023 18:21:31
HTML версия (этот сайт) сгенерирован 10.02.2023 18:21:38 UTC.
Коммит: [bfeb65b9] add automatic zip creation 10.02.2023 18:21:31
Задача: Розбір дійсних чисел
10.02.2023 18:21:31
Описание: Дано рядок, який містить дійсні числа серед інших символів.
Визначити функцію parse(), яка отримує рядок та повертає масив чисел, які в ньому записані.
Кожне число займе максимально можливу кількість символів, тобто parse('10_20') дає [10, 20], а не [1,0,2,0].
Числа в масиві мають слідувати у тому ж порядку, що в рядку.
Регулярні вирази не використовувати.
parse('a1a2a3a') => [1,2,3]
10.02.2023 18:21:31
Решений: 20
10.02.2023 18:21:31
Розбір дійсних чисел
10.02.2023 18:21:31
function parse(str){
let arr=[];
let a="";
for (let i=0; i< str.length; i++) {
const curNumber=parseInt(str[i]);
if (!isNaN(curNumber) || str[i]==='.')
a+=str[i];
else {
if (a){
arr.push(parseFloat(a));
}
a="";
}
}
if (a){
arr.push(parseFloat(a));
}
return arr;
}
const signs = '+-';
const separator = '.';
const numbers = '0123456789'.split('');
const allowedChars = (signs + separator + numbers).split('');
const extraChar = '?';
function extractGroups(string) {
string += extraChar;
let groups = [];
let group = '';
for (let char of string) {
if (allowedChars.includes(char)) {
group += char;
} else {
if (group !== '') groups.push(group);
group = '';
}
}
return groups;
}
function extractNumbers(string) {
string += separator;
let defined = false;
let double = false;
let signed = false;
let extracted = [];
let number = '';
for (let i = 0; i < string.length; i++) {
let char = string[i];
let nextChar = string.charAt(i + 1);
let secondSignAttempt = defined && signs.includes(char);
let secondDoublingAttempt = double && char === separator;
if (secondSignAttempt || secondDoublingAttempt) {
extracted.push(number);
defined = false;
double = false;
signed = false;
number = '';
i -= 1;
}
if (!signed) {
let isSignedNumber = signs.includes(char) && numbers.includes(nextChar);
let isPositiveNumber = numbers.includes(char);
if (isSignedNumber || isPositiveNumber) {
if (isSignedNumber && char === '-') number += '-';
signed = true;
}
}
if (signed && numbers.includes(char)) {
if (defined || char !== '0') number += char;
defined = true;
}
if (!double && defined && char === separator && numbers.includes(nextChar)) {
number += separator;
double = true;
}
}
if (number !== '') extracted.push(number);
return extracted;
}
function parse(string) {
let result = [];
for (let group of extractGroups(string)) {
for (let number of extractNumbers(group)) {
result.push(Number.parseFloat(number));
}
}
return result;
}
const signs = '+-';
const separator = '.';
const numbers = '0123456789'.split('');
const allowedChars = (signs + separator + numbers).split('');
const extraChar = '?';
function extractGroups(string) {
string += extraChar;
let groups = [];
let group = '';
for (let char of string) {
if (allowedChars.includes(char)) {
group += char;
} else {
if (group !== '') groups.push(group);
group = '';
}
}
return groups;
}
function extractNumbers(string) {
string += separator;
let defined = false;
let double = false;
let signed = false;
let extracted = [];
let number = '';
for (let i = 0; i < string.length; i++) {
let char = string[i];
let nextChar = string.charAt(i + 1);
let secondSignAttempt = defined && signs.includes(char);
let secondDoublingAttempt = double && char === separator;
if (secondSignAttempt || secondDoublingAttempt) {
extracted.push(number);
defined = false;
double = false;
signed = false;
number = '';
i -= 1;
}
if (!signed) {
let isSignedNumber = signs.includes(char) && numbers.includes(nextChar);
let isPositiveNumber = numbers.includes(char);
if (isSignedNumber || isPositiveNumber) {
if (isSignedNumber && char === '-') number += '-';
signed = true;
}
}
if (signed && numbers.includes(char)) {
if (defined || char !== '0') number += char;
defined = true;
}
if (!double && defined && char === separator && numbers.includes(nextChar)) {
number += separator;
double = true;
}
}
if (number !== '') extracted.push(number);
return extracted;
}
function parse(string) {
let result = [];
for (let group of extractGroups(string)) {
for (let number of extractNumbers(group)) {
result.push(Number.parseFloat(number));
}
}
return result;
}
const signs = '+-';
const separator = '.';
const numbers = '0123456789'.split('');
const allowedChars = (signs + separator + numbers).split('');
const extraChar = '?';
function extractGroups(string) {
string += extraChar;
let groups = [];
let group = '';
for (let char of string) {
if (allowedChars.includes(char)) {
group += char;
} else {
if (group !== '') groups.push(group);
group = '';
}
}
return groups;
}
function extractNumbers(string) {
string += separator;
let defined = false;
let double = false;
let signed = false;
let extracted = [];
let number = '';
for (let i = 0; i < string.length; i++) {
let char = string[i];
let nextChar = string.charAt(i + 1);
let secondSignAttempt = defined && signs.includes(char);
let secondDoublingAttempt = double && char === separator;
if (secondSignAttempt || secondDoublingAttempt) {
extracted.push(number);
defined = false;
double = false;
signed = false;
number = '';
i -= 1;
}
if (!signed) {
let isSignedNumber = signs.includes(char) && numbers.includes(nextChar);
let isPositiveNumber = numbers.includes(char);
if (isSignedNumber || isPositiveNumber) {
if (isSignedNumber && char === '-') number += '-';
signed = true;
}
}
if (signed && numbers.includes(char)) {
if (defined || char !== '0') number += char;
defined = true;
}
if (!double && defined && char === separator && numbers.includes(nextChar)) {
number += separator;
double = true;
}
}
if (number !== '') extracted.push(number);
return extracted;
}
function parse(string) {
let result = [];
for (let group of extractGroups(string)) {
for (let number of extractNumbers(group)) {
result.push(Number.parseFloat(number));
}
}
return result;
}
function parse(str){
let temp=''
let result=[]
let nums='1234567890.'
for(let i=0;i< str.length;i++){
if(nums.indexOf(str[i])===-1){
temp&&result.push(parseFloat(temp))
temp=''
}else{
temp+=str[i]
}
}
temp&&result.push(parseInt(temp))
return result
}
function parse(str) {
let result = [];
let temp = "";
for (let i = 0; i < str.length; i++) {
const curNumber = parseInt(str[i]);
if (!isNaN(curNumber) || str[i] === '.')
temp += str[i];
else {
if (temp) result.push(parseFloat(temp));
temp = "";
}
}
if (temp) result.push(parseFloat(temp));
return result;
}
function parse(str)
{
let temp = "", arr = [];
for(let i = 0; i < str.length; i++)
{
if(isNumeric(str[i]))
temp += str[i];
else if(!isNumeric(str[i]) && temp.length != 0)
{
arr.push(parseFloat(temp));
temp = "";
}
}
if(temp.length != 0) arr.push(parseFloat(temp));
return arr;
}
function isNumeric(n)
{
return (!isNaN(parseFloat(n)) && isFinite(n)) || n == ".";
}
function parse(str){
let temp=''
let result=[]
let nums='1234567890.'
for(let i=0;i< str.length;i++){
if(nums.indexOf(str[i])===-1){
temp&&result.push(parseFloat(temp))
temp=''
}else{
temp+=str[i]
}
}
temp&&result.push(parseInt(temp))
return result
}
function parse(str){
let res = []
let single = []
for (el of str.split('')){
if (isNaN(el) && el != '.'){
if (single.length){
res.push(parseFloat(single.join('')))
single = []
}
} else single.push(el)
}
if (single.length){
res.push(parseFloat(single.join('')))
single = []
}
return res
}
function parse (str) {
let temp = ''
let result = []
let nums = '1234567890.'
for (let i = 0; i < str.length; i++) {
if (nums.indexOf(str[i]) === -1) {
temp && result.push(parseFloat(temp))
temp = ''
} else {
temp += str[i]
}
}
temp && result.push(parseInt(temp))
return result
}
function parse(str)
{
let result = []
let string = ""
for(let i=0; i< str.length; i++)
{
const number = parseInt(str[i])
if(!isNaN(number)||str[i]==='.')
{
string += str[i]
}
else if(string !== "")
{
result.push(parseFloat(string))
string = ""
}
}
if(string !== "")
{
result.push(parseFloat(string))
}
return result
}
function parse(s) {
console.log(s);
let res = [];
let num = '';
let point = false;
let exp = false;
let addNum = function(){
if(num === '') return;
let n = parseFloat(num);
if (!isNaN(n)){
res.push(n);
}
num = '';
point = false;
exp = false;
}
for(let i=0; i<=s.length; i++){
let ch = s[i];
switch(true){
case (ch === '-'):
if (num.length !== 0)
addNum();
break;
case (ch === '.'):
if (point)
addNum();
point = true;
num += '.';
continue;
case (ch === 'e'):
if (exp){
addNum();
continue;
}
exp = true;
num += 'e';
continue;
case (ch >= '0' && ch <= '9'):
break;
default:
addNum();
continue;
}
num += ch;
}
return res;
}
function parse(str) {
let arr = [], c = false;
for(ch of str) {
if(isNaN(+ch) && ch != ".") {
c = false;
} else {
if(!c) {
arr.push("");
}
c = true;
arr[arr.length-1] += ch;
}
}
for(i in arr) {
arr[i] = parseFloat(arr[i]);
}
return arr;
}
function parse(str) {
let result = [];
let temp = "";
for (let i = 0; i < str.length; i++) {
const curNumber = parseInt(str[i]);
if (!isNaN(curNumber) || str[i] === '.')
temp += str[i];
else {
if (temp) result.push(parseFloat(temp));
temp = "";
}
}
if (temp) result.push(parseFloat(temp));
return result;
}
function parse(s){
console.log(s)
let arr = []
let res = []
for(let i=0;i let string = ""
if(!isNaN(Number(s[i]))||s[i]=="-" && !isNaN(Number(s[i+1]))){
string += s[i]
for(let j=i+1;j if(!isNaN(Number(s[j]))||s[j]=="." && !isNaN(Number(s[j+1]))){
string += s[j]
}
else{
i=j
break
};
}
}
if(string != ""){
res.push(parseFloat(string))
}
}
return res
}
function parse(s) {
let nums = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
let isNum = false;
let answ = "";
let answFul = [];
for (let i = 0; i < s.length; i++) {
if (
nums.includes(s[i]) ||
(answ == "" && s[i] == "-" && nums.includes(s[i + 1])) ||
(nums.includes(s[i - 1]) && s[i] == "." && nums.includes(s[i + 1]))
) {
answ += s[i];
isNum = true;
} else {
isNum = false;
}
if ((isNum == false && answ != "") || (s.length - 1 == i && answ != "")) {
answFul.push(parseFloat(answ));
answ = "";
}
}
return answFul;
}
function parse(str){
let temp=''
let result=[]
let nums='1234567890.'
for(let i=0;i< str.length;i++){
if(nums.indexOf(str[i])===-1){
temp&&result.push(parseFloat(temp))
temp=''
}else{
temp+=str[i]
}
}
temp&&result.push(parseInt(temp))
return result
}
function parse(s){
let arr = [];
let strNumber = "";
for (let i = 0; i < s.length; i++) {
if (!isNaN(parseFloat(s[i])) || s[i] === ".") {
strNumber += s[i];
} else {
if (strNumber) arr.push(parseFloat(strNumber));
strNumber = "";
}
}
if (strNumber) arr.push(parseFloat(strNumber));
return arr;
}
function parse(s){
let res = []
for(let i=0;i< s.length;i++){
let str = ""
if(!isNaN(Number(s[i]))||s[i] == "-" && !isNaN(Number(s[i+1]))){
str += s[i]
for(let j=i+1;j< s.length+1;j++){
if(!isNaN(Number(s[j]))||s[j]== "." && !isNaN(Number(s[j+1]))){
str += s[j]
}
else{
i=j
break
};
}
}
if(str != ""){
res.push(parseFloat(str))
}
}
return res
}
function parse(str) {
let result = [];
let currentNum = "";
for (let i = 0; i < str.length; i++) {
if (!isNaN(str[i]) || str[i] === ".") {
currentNum += str[i];
} else if (currentNum !== "") {
result.push(parseFloat(currentNum));
currentNum = "";
}
}
if (currentNum !== "") {
result.push(parseFloat(currentNum));
}
return result;
}
let arr=[];
let a="";
for (let i=0; i< str.length; i++) {
const curNumber=parseInt(str[i]);
if (!isNaN(curNumber) || str[i]==='.')
a+=str[i];
else {
if (a){
arr.push(parseFloat(a));
}
a="";
}
}
if (a){
arr.push(parseFloat(a));
}
return arr;
}
const separator = '.';
const numbers = '0123456789'.split('');
const allowedChars = (signs + separator + numbers).split('');
const extraChar = '?';
function extractGroups(string) {
string += extraChar;
let groups = [];
let group = '';
for (let char of string) {
if (allowedChars.includes(char)) {
group += char;
} else {
if (group !== '') groups.push(group);
group = '';
}
}
return groups;
}
function extractNumbers(string) {
string += separator;
let defined = false;
let double = false;
let signed = false;
let extracted = [];
let number = '';
for (let i = 0; i < string.length; i++) {
let char = string[i];
let nextChar = string.charAt(i + 1);
let secondSignAttempt = defined && signs.includes(char);
let secondDoublingAttempt = double && char === separator;
if (secondSignAttempt || secondDoublingAttempt) {
extracted.push(number);
defined = false;
double = false;
signed = false;
number = '';
i -= 1;
}
if (!signed) {
let isSignedNumber = signs.includes(char) && numbers.includes(nextChar);
let isPositiveNumber = numbers.includes(char);
if (isSignedNumber || isPositiveNumber) {
if (isSignedNumber && char === '-') number += '-';
signed = true;
}
}
if (signed && numbers.includes(char)) {
if (defined || char !== '0') number += char;
defined = true;
}
if (!double && defined && char === separator && numbers.includes(nextChar)) {
number += separator;
double = true;
}
}
if (number !== '') extracted.push(number);
return extracted;
}
function parse(string) {
let result = [];
for (let group of extractGroups(string)) {
for (let number of extractNumbers(group)) {
result.push(Number.parseFloat(number));
}
}
return result;
}
const separator = '.';
const numbers = '0123456789'.split('');
const allowedChars = (signs + separator + numbers).split('');
const extraChar = '?';
function extractGroups(string) {
string += extraChar;
let groups = [];
let group = '';
for (let char of string) {
if (allowedChars.includes(char)) {
group += char;
} else {
if (group !== '') groups.push(group);
group = '';
}
}
return groups;
}
function extractNumbers(string) {
string += separator;
let defined = false;
let double = false;
let signed = false;
let extracted = [];
let number = '';
for (let i = 0; i < string.length; i++) {
let char = string[i];
let nextChar = string.charAt(i + 1);
let secondSignAttempt = defined && signs.includes(char);
let secondDoublingAttempt = double && char === separator;
if (secondSignAttempt || secondDoublingAttempt) {
extracted.push(number);
defined = false;
double = false;
signed = false;
number = '';
i -= 1;
}
if (!signed) {
let isSignedNumber = signs.includes(char) && numbers.includes(nextChar);
let isPositiveNumber = numbers.includes(char);
if (isSignedNumber || isPositiveNumber) {
if (isSignedNumber && char === '-') number += '-';
signed = true;
}
}
if (signed && numbers.includes(char)) {
if (defined || char !== '0') number += char;
defined = true;
}
if (!double && defined && char === separator && numbers.includes(nextChar)) {
number += separator;
double = true;
}
}
if (number !== '') extracted.push(number);
return extracted;
}
function parse(string) {
let result = [];
for (let group of extractGroups(string)) {
for (let number of extractNumbers(group)) {
result.push(Number.parseFloat(number));
}
}
return result;
}
const separator = '.';
const numbers = '0123456789'.split('');
const allowedChars = (signs + separator + numbers).split('');
const extraChar = '?';
function extractGroups(string) {
string += extraChar;
let groups = [];
let group = '';
for (let char of string) {
if (allowedChars.includes(char)) {
group += char;
} else {
if (group !== '') groups.push(group);
group = '';
}
}
return groups;
}
function extractNumbers(string) {
string += separator;
let defined = false;
let double = false;
let signed = false;
let extracted = [];
let number = '';
for (let i = 0; i < string.length; i++) {
let char = string[i];
let nextChar = string.charAt(i + 1);
let secondSignAttempt = defined && signs.includes(char);
let secondDoublingAttempt = double && char === separator;
if (secondSignAttempt || secondDoublingAttempt) {
extracted.push(number);
defined = false;
double = false;
signed = false;
number = '';
i -= 1;
}
if (!signed) {
let isSignedNumber = signs.includes(char) && numbers.includes(nextChar);
let isPositiveNumber = numbers.includes(char);
if (isSignedNumber || isPositiveNumber) {
if (isSignedNumber && char === '-') number += '-';
signed = true;
}
}
if (signed && numbers.includes(char)) {
if (defined || char !== '0') number += char;
defined = true;
}
if (!double && defined && char === separator && numbers.includes(nextChar)) {
number += separator;
double = true;
}
}
if (number !== '') extracted.push(number);
return extracted;
}
function parse(string) {
let result = [];
for (let group of extractGroups(string)) {
for (let number of extractNumbers(group)) {
result.push(Number.parseFloat(number));
}
}
return result;
}
let temp=''
let result=[]
let nums='1234567890.'
for(let i=0;i< str.length;i++){
if(nums.indexOf(str[i])===-1){
temp&&result.push(parseFloat(temp))
temp=''
}else{
temp+=str[i]
}
}
temp&&result.push(parseInt(temp))
return result
}
let result = [];
let temp = "";
for (let i = 0; i < str.length; i++) {
const curNumber = parseInt(str[i]);
if (!isNaN(curNumber) || str[i] === '.')
temp += str[i];
else {
if (temp) result.push(parseFloat(temp));
temp = "";
}
}
if (temp) result.push(parseFloat(temp));
return result;
}
{
let temp = "", arr = [];
for(let i = 0; i < str.length; i++)
{
if(isNumeric(str[i]))
temp += str[i];
else if(!isNumeric(str[i]) && temp.length != 0)
{
arr.push(parseFloat(temp));
temp = "";
}
}
if(temp.length != 0) arr.push(parseFloat(temp));
return arr;
}
function isNumeric(n)
{
return (!isNaN(parseFloat(n)) && isFinite(n)) || n == ".";
}
let temp=''
let result=[]
let nums='1234567890.'
for(let i=0;i< str.length;i++){
if(nums.indexOf(str[i])===-1){
temp&&result.push(parseFloat(temp))
temp=''
}else{
temp+=str[i]
}
}
temp&&result.push(parseInt(temp))
return result
}
let res = []
let single = []
for (el of str.split('')){
if (isNaN(el) && el != '.'){
if (single.length){
res.push(parseFloat(single.join('')))
single = []
}
} else single.push(el)
}
if (single.length){
res.push(parseFloat(single.join('')))
single = []
}
return res
}
let temp = ''
let result = []
let nums = '1234567890.'
for (let i = 0; i < str.length; i++) {
if (nums.indexOf(str[i]) === -1) {
temp && result.push(parseFloat(temp))
temp = ''
} else {
temp += str[i]
}
}
temp && result.push(parseInt(temp))
return result
}
{
let result = []
let string = ""
for(let i=0; i< str.length; i++)
{
const number = parseInt(str[i])
if(!isNaN(number)||str[i]==='.')
{
string += str[i]
}
else if(string !== "")
{
result.push(parseFloat(string))
string = ""
}
}
if(string !== "")
{
result.push(parseFloat(string))
}
return result
}
console.log(s);
let res = [];
let num = '';
let point = false;
let exp = false;
let addNum = function(){
if(num === '') return;
let n = parseFloat(num);
if (!isNaN(n)){
res.push(n);
}
num = '';
point = false;
exp = false;
}
for(let i=0; i<=s.length; i++){
let ch = s[i];
switch(true){
case (ch === '-'):
if (num.length !== 0)
addNum();
break;
case (ch === '.'):
if (point)
addNum();
point = true;
num += '.';
continue;
case (ch === 'e'):
if (exp){
addNum();
continue;
}
exp = true;
num += 'e';
continue;
case (ch >= '0' && ch <= '9'):
break;
default:
addNum();
continue;
}
num += ch;
}
return res;
}
let arr = [], c = false;
for(ch of str) {
if(isNaN(+ch) && ch != ".") {
c = false;
} else {
if(!c) {
arr.push("");
}
c = true;
arr[arr.length-1] += ch;
}
}
for(i in arr) {
arr[i] = parseFloat(arr[i]);
}
return arr;
}
let result = [];
let temp = "";
for (let i = 0; i < str.length; i++) {
const curNumber = parseInt(str[i]);
if (!isNaN(curNumber) || str[i] === '.')
temp += str[i];
else {
if (temp) result.push(parseFloat(temp));
temp = "";
}
}
if (temp) result.push(parseFloat(temp));
return result;
}
console.log(s)
let arr = []
let res = []
for(let i=0;i
if(!isNaN(Number(s[i]))||s[i]=="-" && !isNaN(Number(s[i+1]))){
string += s[i]
for(let j=i+1;j
string += s[j]
}
else{
i=j
break
};
}
}
if(string != ""){
res.push(parseFloat(string))
}
}
return res
}
let nums = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
let isNum = false;
let answ = "";
let answFul = [];
for (let i = 0; i < s.length; i++) {
if (
nums.includes(s[i]) ||
(answ == "" && s[i] == "-" && nums.includes(s[i + 1])) ||
(nums.includes(s[i - 1]) && s[i] == "." && nums.includes(s[i + 1]))
) {
answ += s[i];
isNum = true;
} else {
isNum = false;
}
if ((isNum == false && answ != "") || (s.length - 1 == i && answ != "")) {
answFul.push(parseFloat(answ));
answ = "";
}
}
return answFul;
}
let temp=''
let result=[]
let nums='1234567890.'
for(let i=0;i< str.length;i++){
if(nums.indexOf(str[i])===-1){
temp&&result.push(parseFloat(temp))
temp=''
}else{
temp+=str[i]
}
}
temp&&result.push(parseInt(temp))
return result
}
let arr = [];
let strNumber = "";
for (let i = 0; i < s.length; i++) {
if (!isNaN(parseFloat(s[i])) || s[i] === ".") {
strNumber += s[i];
} else {
if (strNumber) arr.push(parseFloat(strNumber));
strNumber = "";
}
}
if (strNumber) arr.push(parseFloat(strNumber));
return arr;
}
let res = []
for(let i=0;i< s.length;i++){
let str = ""
if(!isNaN(Number(s[i]))||s[i] == "-" && !isNaN(Number(s[i+1]))){
str += s[i]
for(let j=i+1;j< s.length+1;j++){
if(!isNaN(Number(s[j]))||s[j]== "." && !isNaN(Number(s[j+1]))){
str += s[j]
}
else{
i=j
break
};
}
}
if(str != ""){
res.push(parseFloat(str))
}
}
return res
}
let result = [];
let currentNum = "";
for (let i = 0; i < str.length; i++) {
if (!isNaN(str[i]) || str[i] === ".") {
currentNum += str[i];
} else if (currentNum !== "") {
result.push(parseFloat(currentNum));
currentNum = "";
}
}
if (currentNum !== "") {
result.push(parseFloat(currentNum));
}
return result;
}