Jun. 9th, 2018

juan_gandhi: (Default)
[personal profile] snowps тут уверял программистов, что его циклы шибче, чем наши тут всякие флип-консы. Ну бля, ну вот навалял я код, вот его результаты (а код под кутом)


Running 70000 elements
Recursively: 12 ms
FlipCons: 28 ms
Snowps: 12110 ms


70 тыс, конечно, полная фигня, jit еще не разогрелся - но мне надоело ждать, слишком этот вариант с переменными медленный. Да все понятно и так. Даже без разогрева.

Впрочем, хотите поправить - поправьте, конечно.

Дисклеймер. Наш оппонент тут сообщил: "каждый студент знает, как написать О(N/2)" - я думаю, с оппонентами такого уровня невежества можно уже и не беседовать.

код на скале )

import scala.annotation.tailrec

object Reverse {

def recurse[X](list: List[X]): List[X] = {
@tailrec def doit(from: List[X], to: List[X]): List[X] =
from match {
case Nil => to
case x::xs => doit(xs, x::to)
}

doit(list, Nil)
}

def tonymorris[X](list: List[X]): List[X] = (List[X]() /: list) {
case (xs, x) => x::xs
}

case class Var[X](var x: X)

def snowps[X](list: List[Var[X]]): List[Var[X]] = {
val n = list.length
for {
i <- 0 until list.length / 2
} {
val xi = list(i).x
val j = n - i - 1
list(i).x = list(j).x
list(j).x = xi
}

list
}

def time(what: String)(op: => Unit): Unit = {
val t0 = System.currentTimeMillis
op
val t1 = System.currentTimeMillis
val dt = t1 - t0
println(s"$what: $dt ms")
}

def main(args: Array[String]): Unit = {
val n = 70000
val sut = (for { i <- 0 until n} yield s"<<$i>>") toList
val sut1 = sut map (Var(_))
println(s"Running $n elements")
time("Recursively")(recurse(sut1))
time("FlipCons")(tonymorris(sut1))
time("Snowps")(snowps(sut1))
}
}

Зинка

Jun. 9th, 2018 05:27 pm
juan_gandhi: (Default)
Вот она приходит такая, время 5:25, а ужин у нее в 5:30 вообще-то. И начинает там свою речь, вяк-вяк-вяк. Я ей показываю еду, а она должна рукой показать, мол, мне это. А кошка же, гордая. Только словами, так вя-вя-вяк. Я убираю еду.

Но у нас есть ритуал. Я беру ее на руки. Но кошка-то дикая, рожденная свободной. Она тут же ушки прижимает. Не любят свободные кошки такого обращения. Опускаю ее на пол, показываю еду. Она тут же рукой, мол, мне это. Ну окей, раз показала - вот тебе ужин.

Вот так вот мы с ней и сотрудничаем. 

сяу

Jun. 9th, 2018 10:33 pm
juan_gandhi: (Default)
"During WWII, the Russians trained dogs to run under German tanks with bombs strapped to their backs. Unfortunately, the tanks the dogs were trained to run under were Russian, so they ended up running under the Russian tanks and blowing them up instead."
src 
juan_gandhi: (Default)
Предположим, что список двунаправленный.
Меняем два пойнтера.
Mission accomplished (цитируя Дабью Буша) 
juan_gandhi: (Default)
Обратить binary heap. 

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

August 2025

S M T W T F S
      12
3456789
10 11 12 13141516
171819 20212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 22nd, 2025 10:31 pm
Powered by Dreamwidth Studios