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

September 2025

S M T W T F S
 1 2345 6
78 9 10 111213
14 151617 181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 19th, 2025 11:03 am
Powered by Dreamwidth Studios