понаркоманить в это солнечное субботнее утро?
https://codefights.com/challenge/SfdjmLKbQQ7v48aCe/solutions
короче, там соревнуются кодеры, кто короче запишет некую задачу.
задача такая: нужно написать функцию, которая принимает числа a и b и возвращает пятый бит результата a*a+b*b
на пыхе это бы выглядело так:
function fifthBitA2PlusB2($a,$b) {
return strrev(decbin($a*$a+$b*$b)){5};
}
засада в том, что числа большие, и для тупого варианта не хватает точности. я кое-как сделал, но мое решение пока самое худшее =)
мой вариант выглядит так:
fifthBitA2PlusB2=(a,b)=>((k=n=>(z=n&63)*z)(a)+k(b))>>5&1
это 56 символов, а у лучшего чувака - 42 (таких несколько). я пока худший. серьезно ((
я гуманитарий есличо ) моего ума хватило догадаться, что на пятый бит результата влияют только последние 5 бит входных чисел, n&63 их получает
получается число от 0 до 63
дальше я попробовал визуализировать, как этот гребаный пятый бит результата зависит от этих обрезаных значений. получилось красиво, но чо делать дальше я хз )
> числа большие Символьная арифметика в помощь
Обсуждают сегодня