Size: a a a

JS Liberty [ОЫ]

2020 June 12

L

Lupusregina[beta] in JS Liberty [ОЫ]
Mr. Nobody
вот
открылся
источник

L

Lupusregina[beta] in JS Liberty [ОЫ]
а как еслинт выключить?
источник

M

Mr. Nobody in JS Liberty [ОЫ]
у меня так получилось:
function max(a, b) {
 return (a + b) / 2 + (((a - b)**2)**0.5) / 2;
}
источник

M

Mr. Nobody in JS Liberty [ОЫ]
Lupusregina[beta]
открылся
твой код тоже проходит тесты
источник

L

Lupusregina[beta] in JS Liberty [ОЫ]
Mr. Nobody
твой код тоже проходит тесты
ок
источник

M

Mr. Nobody in JS Liberty [ОЫ]
Lupusregina[beta]
а как еслинт выключить?
не знаю, не пользуюсь этой песочницей
источник

M

Mr. Nobody in JS Liberty [ОЫ]
Lupusregina[beta]
только с флоатами иногда непроходит. Но это изза арифметики
а есть пример конкретный? я когда проверял, тоже не получалось что-то, но сейчас всё проходит
источник

L

Lupusregina[beta] in JS Liberty [ОЫ]
Mr. Nobody
а есть пример конкретный? я когда проверял, тоже не получалось что-то, но сейчас всё проходит
function getMax(a, b) {
 return (a + b) / 2 + (((a - b)**2)**0.5) / 2;
}
function _testHelp(r) {
 let a, b;
 if ( Math.random() < 0.3 ) {
   a = b = r()
 } else
 if ( Math.random() <= 0.6 ) {
   do {
     a = r()
     b = r()
   } while( Math.max(a, b) !== a )
 } else {
   do {
     a = r()
       b = r()
   } while( Math.max(a, b) !== b )
 }
 //console.log(a, b)
 return [a, b]
}
function testInt(getMax, count = 1e6) {
 const r = () => (Math.random() - 0.5) * 1e6 | 0
 for(let i = 0; i < count; i++) {
   let [a, b] = _testHelp(r)
 
   if ( getMax(a, b) !== Math.max(a, b) ) {
     console.error(`testInt, max(${a}, ${b}) invalid`);
     return false;
   }
 }
 return true;
}
function testFloat(getMax, count = 1e6) {
 const r = () => (Math.random() - 0.5) * 1e6
 for(let i = 0; i < count; i++) {
   let [a, b] = _testHelp(r)
 
   if ( getMax(a, b) !== Math.max(a, b) ) {
     console.error(`testFloat, max(${a}, ${b}) invalid`);
     return false;
   }
 }
 return true;
}

testInt(getMax, 1e6)
testFloat(getMax, 1e7)
источник

S

Syntax Highlight Bot in JS Liberty [ОЫ]
Lupusregina[beta]
function getMax(a, b) {
 return (a + b) / 2 + (((a - b)**2)**0.5) / 2;
}
function _testHelp(r) {
 let a, b;
 if ( Math.random() < 0.3 ) {
   a = b = r()
 } else
 if ( Math.random() <= 0.6 ) {
   do {
     a = r()
     b = r()
   } while( Math.max(a, b) !== a )
 } else {
   do {
     a = r()
       b = r()
   } while( Math.max(a, b) !== b )
 }
 //console.log(a, b)
 return [a, b]
}
function testInt(getMax, count = 1e6) {
 const r = () => (Math.random() - 0.5) * 1e6 | 0
 for(let i = 0; i < count; i++) {
   let [a, b] = _testHelp(r)
 
   if ( getMax(a, b) !== Math.max(a, b) ) {
     console.error(`testInt, max(${a}, ${b}) invalid`);
     return false;
   }
 }
 return true;
}
function testFloat(getMax, count = 1e6) {
 const r = () => (Math.random() - 0.5) * 1e6
 for(let i = 0; i < count; i++) {
   let [a, b] = _testHelp(r)
 
   if ( getMax(a, b) !== Math.max(a, b) ) {
     console.error(`testFloat, max(${a}, ${b}) invalid`);
     return false;
   }
 }
 return true;
}

testInt(getMax, 1e6)
testFloat(getMax, 1e7)
источник

L

Lupusregina[beta] in JS Liberty [ОЫ]
Mr. Nobody
а есть пример конкретный? я когда проверял, тоже не получалось что-то, но сейчас всё проходит
источник

T

Th0r in JS Liberty [ОЫ]
там тесты просто детские :)
близко к пределу вещественных чисел (когда a*a > max_float) не пройдет у вас
мой код еще раньше наверное не пройдет, потому что >> 0 преобразует в 32битное число
источник

M

Mr. Nobody in JS Liberty [ОЫ]
ага, вижу
источник

M

Mr. Nobody in JS Liberty [ОЫ]
Th0r
там тесты просто детские :)
близко к пределу вещественных чисел (когда a*a > max_float) не пройдет у вас
мой код еще раньше наверное не пройдет, потому что >> 0 преобразует в 32битное число
++
источник

L

Lupusregina[beta] in JS Liberty [ОЫ]
теперь задача, мои тесты пройти
источник

M

Mr. Nobody in JS Liberty [ОЫ]
у Люпуса с рандомами норм тест
источник

M

Mr. Nobody in JS Liberty [ОЫ]
Lupusregina[beta]
теперь задача, мои тесты пройти
:)
источник

L

Lupusregina[beta] in JS Liberty [ОЫ]
не с абс, а дальше с моим кодом
источник

L

Lupusregina[beta] in JS Liberty [ОЫ]
Mr. Nobody
:)

const getMax = (a, b, abs, c) => (
 abs = n => (n**2)**0.5,
 c = (a - b)*1e9,
 c = abs(c + 1) - abs(c),
 (a * ((c + 1) / 2) - b * ((c - 1) / 2))
)

function _testHelp(r) {
 let a, b;
 if ( Math.random() < 0.3 ) {
   a = b = r()
 } else
 if ( Math.random() <= 0.6 ) {
   do {
     a = r()
     b = r()
   } while( Math.max(a, b) !== a )
 } else {
   do {
     a = r()
       b = r()
   } while( Math.max(a, b) !== b )
 }
 //console.log(a, b)
 return [a, b]
}
function testInt(getMax, count = 1e6) {
 const r = () => (Math.random() - 0.5) * 1e6 | 0
 for(let i = 0; i < count; i++) {
   let [a, b] = _testHelp(r)
 
   if ( getMax(a, b) !== Math.max(a, b) ) {
     console.error(`testInt, max(${a}, ${b}) invalid`);
     return false;
   }
 }
 return true;
}
function testFloat(getMax, count = 1e6) {
 const r = () => (Math.random() - 0.5) * 1e6
 for(let i = 0; i < count; i++) {
   let [a, b] = _testHelp(r)
 
   if ( getMax(a, b) !== Math.max(a, b) ) {
     console.error(`testFloat, max(${a}, ${b}) invalid`);
     return false;
   }
 }
 return true;
}

testInt(getMax, 1e6)
testFloat(getMax, 1e8)
так сделал. Для больших чисел думаю тоже ошибки будут, но для не больших работать будет
источник

S

Syntax Highlight Bot in JS Liberty [ОЫ]
Lupusregina[beta]

const getMax = (a, b, abs, c) => (
 abs = n => (n**2)**0.5,
 c = (a - b)*1e9,
 c = abs(c + 1) - abs(c),
 (a * ((c + 1) / 2) - b * ((c - 1) / 2))
)

function _testHelp(r) {
 let a, b;
 if ( Math.random() < 0.3 ) {
   a = b = r()
 } else
 if ( Math.random() <= 0.6 ) {
   do {
     a = r()
     b = r()
   } while( Math.max(a, b) !== a )
 } else {
   do {
     a = r()
       b = r()
   } while( Math.max(a, b) !== b )
 }
 //console.log(a, b)
 return [a, b]
}
function testInt(getMax, count = 1e6) {
 const r = () => (Math.random() - 0.5) * 1e6 | 0
 for(let i = 0; i < count; i++) {
   let [a, b] = _testHelp(r)
 
   if ( getMax(a, b) !== Math.max(a, b) ) {
     console.error(`testInt, max(${a}, ${b}) invalid`);
     return false;
   }
 }
 return true;
}
function testFloat(getMax, count = 1e6) {
 const r = () => (Math.random() - 0.5) * 1e6
 for(let i = 0; i < count; i++) {
   let [a, b] = _testHelp(r)
 
   if ( getMax(a, b) !== Math.max(a, b) ) {
     console.error(`testFloat, max(${a}, ${b}) invalid`);
     return false;
   }
 }
 return true;
}

testInt(getMax, 1e6)
testFloat(getMax, 1e8)
так сделал. Для больших чисел думаю тоже ошибки будут, но для не больших работать будет
источник

M

Mr. Nobody in JS Liberty [ОЫ]
Lupusregina[beta]

const getMax = (a, b, abs, c) => (
 abs = n => (n**2)**0.5,
 c = (a - b)*1e9,
 c = abs(c + 1) - abs(c),
 (a * ((c + 1) / 2) - b * ((c - 1) / 2))
)

function _testHelp(r) {
 let a, b;
 if ( Math.random() < 0.3 ) {
   a = b = r()
 } else
 if ( Math.random() <= 0.6 ) {
   do {
     a = r()
     b = r()
   } while( Math.max(a, b) !== a )
 } else {
   do {
     a = r()
       b = r()
   } while( Math.max(a, b) !== b )
 }
 //console.log(a, b)
 return [a, b]
}
function testInt(getMax, count = 1e6) {
 const r = () => (Math.random() - 0.5) * 1e6 | 0
 for(let i = 0; i < count; i++) {
   let [a, b] = _testHelp(r)
 
   if ( getMax(a, b) !== Math.max(a, b) ) {
     console.error(`testInt, max(${a}, ${b}) invalid`);
     return false;
   }
 }
 return true;
}
function testFloat(getMax, count = 1e6) {
 const r = () => (Math.random() - 0.5) * 1e6
 for(let i = 0; i < count; i++) {
   let [a, b] = _testHelp(r)
 
   if ( getMax(a, b) !== Math.max(a, b) ) {
     console.error(`testFloat, max(${a}, ${b}) invalid`);
     return false;
   }
 }
 return true;
}

testInt(getMax, 1e6)
testFloat(getMax, 1e8)
так сделал. Для больших чисел думаю тоже ошибки будут, но для не больших работать будет
насколько больших?
источник