Сравните два числа N 1 = a b c , N 2 = d e f , построив функцию f (a, b, c, d, e, f), которая:
- возвращает 1, если N 1 > N 2
- возвращает -1, если N 1 <N 2
Примечание. От вас не требуется возвращать какое-либо значение для любого другого отношения между N 1 и N 2 . например, когда они равны или когда их отношение не определено (комплексные числа).
другие ограничения:
- все числа целые
- a, b, c, d, e, f могут быть положительными или отрицательными, но не равными нулю.
- | |, | D | <1000
- | б |, | с |, | е |, | е | <10 10
- время работы менее нескольких секунд
Примеры:
f(100,100,100,50,100,100) = 1
f(-100,100,100,50,100,100) = 1
f(-100,99,100,50,100,100) = -1
f(100,-100,-100, -1, 3, 100) = 1
f(535, 10^9, 10^8, 443, 10^9, 10^9) = -1
Это код гольф. Самый короткий код выигрывает.
Ответы:
Mathematica, 110 символов
источник
3,-3,3,-4,1,1
, если я не полностью ошибаюсь (здесь нет Mathematica, но Wolfram Alpha, похоже, согласен ).z[a_,b_,c_,d_,e_,f_]:=Sign[Log[Abs[a]]b^c-Log[Abs[d]]e^f]
что значительно дольше, чем у вас там. Я, наверное, что-то здесь упускаю.z[535, 10^9, 10^8, 443, 10^9, 10^9]
?Рубин 1.9,
280 227 189171 персонажаЯ знаю, что это немного дольше, чем другие решения, но по крайней мере этот подход должен работать без вычисления a b c , d e f , b c или e f .
Редактировать:
a**b**c < 0
иd = 1
.log(log(a)/log(d))
вместоlog(log(a))-log(log(d))
.Testcases:
источник
ShortScript , 89 байт
Реализация не совсем описана, но работает.
Этот ответ не является конкурирующим, так как ShortScript был опубликован после этого испытания.
источник
Python 2.6 (на самом деле это не работает)
сегодня я узнал, что Python имеет сложную функцию журнала. Итак, слепо дважды бревно обе стороны и посмотреть на реальный компонент. работает на 4 из 5 тестов. не уверен, что происходит с четвертым.источник
Питон (99)
источник
Хаскель, 44 персонажа
Запускается под секунду для всех тестовых примеров на моей машине.
источник
b
наn
) тип функции f был заданf :: (Ord a, Num a, Integral b2, Integral (Bool -> t), Integral b, Integral b1) => a -> (Bool -> t) -> b -> a -> b1 -> b2 -> t
довольно странно, а?