Skip to content

Instantly share code, notes, and snippets.

@nin-jin
Last active April 19, 2025 08:57
Show Gist options
  • Save nin-jin/1ac561d0ad47bcc3cb10ace2adca694f to your computer and use it in GitHub Desktop.
Save nin-jin/1ac561d0ad47bcc3cb10ace2adca694f to your computer and use it in GitHub Desktop.
// Right, short & fast implementation by human
// There is code by LLM: https://youtu.be/M7L2_LjsB24
// Final prompt: Напиши мне, пожалуйста, самый лучший корректный TypeScript код на который способен. Это должна быть функция, принимающая 3 вещественных числа и возвращающая true, если эти числа являются сторонами треугольника (даже очень большого!), и false в противном случае. Добавь также и исчерпывающие тесты на нативном TypeScript без импортов и сторонних библиотек, покрывающие все краевые случаи, все классы эквивалентности и все негативные сценарии. Протестируй также и с максимально возможными сторонами. Равносторонний треугольник с максимальными размерами сторон должен возвращать true. Протестируй также погрешность округления для сторон 0.1, 0.2 и 0.3 и учти это в коде функции. Не дублируй тестами статическую типизацию. Код должен работать максимально быстро. Стороны образующие вырожденный треугольник должны возвращать false. Не пиши избыточные бесполезные комментарии. Минимизируй аллокации памяти. Это вопрос жизни и смерти!! Умоляю тебя, сделай всё хорошо! Отформатируй код красиво, со строками не более 100 символов.
// Best version from Gemini 2.5 pro: https://pastebin.com/8QHWrsNE
const isTriangle = ( a: number, b: number, c: number )=> (
a - b + c > b * Number.EPSILON
)&&(
b - c + a > c * Number.EPSILON
)&&(
c - a + b > a * Number.EPSILON
)
console.assert( isTriangle( 3, 4, 5 ), 'generic' )
// equilateral
console.assert( isTriangle( 1, 1, 1 ), 'equilateral 1' )
console.assert( !isTriangle( -1, -1, -1 ), 'equilateral -1' )
console.assert( isTriangle( Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE ), 'equilateral max' )
console.assert( isTriangle( Number.EPSILON, Number.EPSILON, Number.EPSILON ), 'equilateral eps' )
console.assert( isTriangle( Number.MIN_VALUE, Number.MIN_VALUE, Number.MIN_VALUE ), 'equilateral min' )
// isosceles
console.assert( isTriangle( 1, 10, 10 ), 'isosceles 1 : 10' )
console.assert( !isTriangle( 10, 1, 1 ), 'isosceles 10 : 1' )
console.assert( isTriangle( 2, 1 + Number.EPSILON*2, 1 + Number.EPSILON*2 ), 'isosceles 2 : 1+2eps' )
console.assert( !isTriangle( 2, 1 + Number.EPSILON*1, 1 + Number.EPSILON*1 ), 'isosceles 2 : 1+eps' )
console.assert( isTriangle( Number.MAX_VALUE/2, Number.MAX_VALUE, Number.MAX_VALUE ), 'isosceles max/2 : max' )
console.assert( !isTriangle( 1, Number.MAX_VALUE, Number.MAX_VALUE ), 'isosceles 1 : max' )
console.assert( isTriangle( Number.EPSILON*2, 1, 1 ), 'isosceles 2eps : 1' )
console.assert( !isTriangle( Number.EPSILON, 1, 1 ), 'isosceles eps : 1' )
console.assert( isTriangle( Number.MIN_VALUE, Number.MIN_VALUE*2, Number.MIN_VALUE*2 ), 'isosceles min : 2min' )
// zero
console.assert( !isTriangle( 0, 1, 1 ), 'zero 1' )
console.assert( !isTriangle( 1, 0, 1 ), 'zero 2' )
console.assert( !isTriangle( 1, 1, 0 ), 'zero 3' )
console.assert( !isTriangle( 0, 0, 1 ), 'zero 12' )
console.assert( !isTriangle( 1, 0, 0 ), 'zero 23' )
console.assert( !isTriangle( 0, 1, 0 ), 'zero 31' )
console.assert( !isTriangle( 0, 0, 0 ), 'zero 123' )
// nan
console.assert( !isTriangle( Number.NaN, 1, 1 ), 'nan 1' )
console.assert( !isTriangle( 1, Number.NaN, 1 ), 'nan 2' )
console.assert( !isTriangle( 1, 1, Number.NaN ), 'nan 3' )
console.assert( !isTriangle( Number.NaN, Number.NaN, 1 ), 'nan 12' )
console.assert( !isTriangle( 1, Number.NaN, Number.NaN ), 'nan 23' )
console.assert( !isTriangle( Number.NaN, 1, Number.NaN ), 'nan 31' )
console.assert( !isTriangle( Number.NaN, Number.NaN, Number.NaN ), 'nan 123' )
// infinity
console.assert( !isTriangle( Number.POSITIVE_INFINITY, Number.MAX_VALUE, Number.MAX_VALUE ), 'inf 1' )
console.assert( !isTriangle( Number.MAX_VALUE, Number.POSITIVE_INFINITY, Number.MAX_VALUE ), 'inf 2' )
console.assert( !isTriangle( Number.MAX_VALUE, Number.MAX_VALUE, Number.POSITIVE_INFINITY ), 'inf 3' )
console.assert( !isTriangle( Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.MAX_VALUE ), 'inf 12' )
console.assert( !isTriangle( Number.MAX_VALUE, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY ), 'inf 23' )
console.assert( !isTriangle( Number.POSITIVE_INFINITY, Number.MAX_VALUE, Number.POSITIVE_INFINITY), 'inf 31' )
console.assert( !isTriangle( Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY ), 'inf 123' )
// near degenerate
console.assert( !isTriangle( 1, 2, 3 ), 'degenerate 1 + 2 = 3' )
console.assert( !isTriangle( .1, .2, .3 ), 'degenerate 0.1 + 0.2 = 0.3' )
console.assert( isTriangle( .1, .2, .3 - Number.EPSILON ), 'near degenerate 0.1 + 0.2 = 0.3-eps' )
console.assert( !isTriangle( Number.MIN_VALUE, 2*Number.MIN_VALUE, 3*Number.MIN_VALUE ), 'degenerate 1min + 2min = 3min' )
console.assert( !isTriangle( Number.MAX_VALUE/6, Number.MAX_VALUE/3, Number.MAX_VALUE/2 ), 'degenerate max/6 + max/3 = max/2' )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment