- 1
- 2
- 3
def days(index)
((15662003>>(2*(index-1)))&3) + 28
end
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−114
def days(index)
((15662003>>(2*(index-1)))&3) + 28
end
Вычисление количества дней в месяце по индексу.
ЦарьПрограммист на Си может писать на любом языке как на Си.
а в чем разница? микроконтроллерщик пишет на VHDL/Verilog?
Думаю в такой записи код становится понятным и самоочевидным.
Пока лень думать, но вот прототип, с возможностью оптимизации
Тернарник будет короче, но это читерство, ибо БРАНЧИНГ
:))
v4. Избавился от умножения.
Хотел сделать красивее: 32-((1<<i)&4)-...
Февраль становится проще, но троеточие сильно усложняется.
f=(1<<i)&4;
Добавьте поддержку високосного года.
Надо сначала деление на константы убрать, а то будет тупить!
Хм, интересно, можно ли существенно зожать асмовыхлоп с учётом високосного года?
Ахаха, смотрите свищ таки в lookup-константу запихунл как и у меня в v1 http://govnokod.ru/18439#comment402263
>!!(i-2)*(2+!!(5546&(1<<i)))+28
> jne .L3
> jne .L4
Говорю же: намеренно избегал тернарников => условных переходов. БРАНЧИНГ
Причём за счёт раннего выхода jmpы наверняка будут работать лучше (много инструкций скипаем).
MRI наверняка умеет JIT, но я не знаю не перефигачит ли он ваш код
По сути это может быть даже какой-то ранний RISC-асм со сдвигами, сложениямии и побитовыми инструкциями.
Вот пидорасить lookup-таблицы в нечитаемый формульный вид — тут вопрос, и это основная часть творчества. Но и это автоматизируется.
На последних штеудах не только умножения за 4 такта, но уже и деления довольно шустрые.
Осторожно! Данные формулы могут быть опасны для вашего здоровья
for (i=1;i<10;++i){console.log(i,f2(i))}
Давным-давно, когда я учился в универе, нам препод рассказывал историю.
Будто в 70х или 80х был у него был какой знакомый, который по идейным соображениям начисто отвергал циклы.
То ли он считал что "они замедляют программы", то ли хз. Короче loop considered harmful.
Мы еще тогда знатно поржали с него. Но я вот подумал: можно же написать программу не только без циклов (джампов назад), но и вообще без условных переходов.
Фактически её можно рассматривать как функцию, считывающую ооочень длинное число a и записывающее вместо него b.
RAM_state=program(RAM_state)
Потому любой конечный алгоритм (с остановом), наверянка можно превратить в длииииную формулу, которая преобразует память.
Хаха! Как раз и подумал что в итоге редуцирования и обфускации кода прийду к чему-то похожему на нумералы Чёрча.
Однако проблема всех этих лямбда-питухов в замене циклов на рекурсию. Y-кобенатор цикла не слаще.
Реализуй минимизацию.
P.S. Или mul - это оно и есть?
Мне нравится как в лямбдопитушатной теории из мельчайшей, простейшней, базовой функции и капельки рекурсии выводят всю арифметику.
И еще как шланг это хавает и превращает в оптимизированный x64.
Ты ему цикл
Причём без эвристик и заранее заложенных случаев.
Ты ему цикл
Оно тебе формулу Бине
Ты ему факториал, оно тебе гамма-функцию.
Искусственный интелект пятиклассника. вроде умеет.