Всем привет!
Теперь вы можете писать свои решения на OСaml и Scala. Для первого из них используется компилятор версии 3.11.0, скаченный по ссылке http://caml.inria.fr/pub/distrib/ocaml-3.11/ocaml-3.11.0-win-msvc.exe. Для Scala используется последний релиз http://www.scala-lang.org/downloads/distrib/files/scala-2.9.1.final.zip.
Вот примеры решения задачи 1A - Театральная площадь на обоих языках:OCaml
let main () = let gr () = Scanf.scanf " %f" (fun i -> i) in let n = gr () in let m = gr () in let a = gr () in let f x y = ceil (x /. y) in Printf.printf "%.0f\n" ((f n a) *. (f m a)) ;; let _ = main();;
Scala
object Main extends App { val Array(n, m, a) = readLine.split(" ").map(_.toLong) def roundUp(x: Long) = x / a + (if (x % a > 0) 1 else 0) println(roundUp(n) * roundUp(m)) }
Как на OCaml, так и на Scala я пишу впервые — более элегантные решения прошу в комментарии :)
Хотя бы для дорешивания, а не для контестов, чтобы можно было практиковаться в тех или иных языках на более широком круге задач было можно.
Не очень принципиально, какими в точности они будут - скажем, x10 по времени для питона и пхп, и x5 по памяти для скала...
Ну и для ленивых - MikeMirzayanov явно говорит, что если "решил писать на таком языке, будь добр учти, что он медленный".
Спасибо вам большое! Я обожаю все функциональненькое. :) Не знаю, элегантно ли это, но на Scala можно написать еще так
Scala позволяет в мгновение ока незаметно создавать горы ненужных объектов и производить уйму ненужных действий... ;-)
Как раз таки под ним. :)
Но мне это пока не мешает. Я чисто посмотреть скачал. И ничего сложного пока писать на Scala не собираюсь. :)
Предмет обожания для товарища rexim:
После контеста посмотрим, конечно, пытался ли кто-нибудь что-нибудь на этих двух отправить... %)
ocamlopt nums.cmxa str.cmxa -pp camlp4o solution.ml -o solution
Решение с обычным целым типом не прошло, то ли проверяющие машины 32-битные, то ли установленный OCaml 32-битный: 934031.
И почему-то решение долго работало (50ms), выглядит как-будто компилировалось в байт код с помощью ocamlc,
а не в машинный код с помощью ocamlopt.
Ему нужны mingw в путях и переменная среды, указывающая на его библиотеки, в моём случае получилось так:
FLEXLINKFLAGS="-LC:\tools\msys\lib -LC:\tools\msys\lib\gcc\mingw32\4.6.1\"
И, действительно, упомянутая программа, скомпилированная ocamlopt, работает 0.25 секунды, а скомпилированная ocamlc больше двух секунд.
Кстати, в системе у этого решения стоит время 220 мс. Значит ли это, что ocamlopt на Codeforces уже установлен и работает?
Кроме того в submit форме написана версия 3.11, а мне вчера тестовое решение, вывело версию 3.12.1.
А есть надежда, что версия Scala обновится до 2.10.*?
Сегодня на контесте очень не хватало мутабельного TreeSet :)
Thank you!