Разработка на коленке

"тут должна быть красивая цитата о программировании"

30 Days of Code

2016-12-14 18:26
30 days of code on hackerrank

Прошёл обучалку на hackerrank.com - 30 Days of Code. В течение 30 дней мне ежедневно нужно было решать какую-нибудь простую задачу. На самом деле простую, ничего сложного делать не приходилось. Моей целью было знакомство с платформой, точнее, насколько хорошо там работает OCaml. Оказалось, что очень хорошо. Там подключена Core и Str, чего сильно не хватает на codingame. Но не все задачи можно было решить на OCaml, потому что часть задач заключалась в реализации небольшого куска кода, который должен работать внутри предоставленного шаблона (шаблон редактировать нельзя). В итоге статистика такая:

  • 18 задач на OCaml.
  • 2 задачи на Java (пришлось вспомнить).
  • 10 задач решил на Python.

Из интересного запомнилось: регулярные выражения и реализация break через iter+raise (при решении задачи о 8 ферзях я использовал циклы).

Регулярные выражения

open Core.Std
open Str


let input () =
    let n = read_int () in
    List.init n (fun _ -> read_line ()) |> List.sort ~cmp:compare


let () =
    let pattern = Str.regexp "\\([a-z]+\\) [a-z.]+@gmail.com$" in
    input () |> List.iter ~f:(fun line ->
        if Str.string_match pattern line 0 then
            print_endline (Str.matched_group 1 line)
    )

List.iter + raise == break

open Core.Std


exception Not_prime


let is_prime num =
    try
        if num > 1 then (
            List.range 2 ((Int.of_float(sqrt (float num))) + 1)
            |> List.iter ~f:(fun i -> if num mod i = 0 then raise Not_prime);
            true
        )
        else raise Not_prime
    with Not_prime -> false

Заключение

Мне понравилось заниматься на hackerrank, но целиком уходить на эту площадку не буду. Пока буду заниматься и тут, и на codingame. Большой плюс hackerrank - наличие огромного количества простых задач, не только в рамках 30 days of code. По Python и функциональному программированию задач хватит на полгода вперёд. Мне этого достаточно, чтобы поддерживать себя в форме.

  • 1 / 1