2018-06-09

juan_gandhi: (Default)
2018-06-09 12:03 pm

достали тут

[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))
}
}
juan_gandhi: (Default)
2018-06-09 05:27 pm
Entry tags:

Зинка

Вот она приходит такая, время 5:25, а ужин у нее в 5:30 вообще-то. И начинает там свою речь, вяк-вяк-вяк. Я ей показываю еду, а она должна рукой показать, мол, мне это. А кошка же, гордая. Только словами, так вя-вя-вяк. Я убираю еду.

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

Вот так вот мы с ней и сотрудничаем. 
juan_gandhi: (Default)
2018-06-09 10:33 pm

сяу

"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)
2018-06-09 11:15 pm
Entry tags:

еще решение про обращение списка

Предположим, что список двунаправленный.
Меняем два пойнтера.
Mission accomplished (цитируя Дабью Буша) 
juan_gandhi: (Default)
2018-06-09 11:17 pm
Entry tags:

еще задача

Обратить binary heap.