Skip to content

Instantly share code, notes, and snippets.

#include <condition_variable>
#include <mutex>
#include <queue>
template <typename T>
class blockingqueue {
public:
blockingqueue() {}
void enqueue(const T& item) {
std::lock_guard<std::mutex> lk(lk_);
@pocarist
pocarist / ticketgobble.ml
Created May 21, 2014 01:32
結城 浩さんからのアルゴリズムの問題(チケットゴブル社の旅行プランを作れ!) https://codeiq.jp/ace/yuki_hiroshi/q863
(* POINT: 選べるチケットの中で帰国日が最も早いものを選ぶことを繰り返す。Greedy。
アリ本P.43と同じ問題。 *)
(* OCaml *)
let try_fx f x =
try Some (f x) with
| _ -> None
let () =
(* 日付の比較は単に(month, day)のペアとする *)
@pocarist
pocarist / gemstring.fs
Last active August 29, 2015 13:56
結城 浩さんからのアルゴリズムの問題 https://codeiq.jp/ace/yuki_hiroshi/q684 (F# versionとOCaml version)
//5578864439
//ENV: F#
//POINT: 未使用の文字から何種類できるかについてメモ化再帰で全探索。メモのポイントは種類を無視して個数の組み合わせをキーにする。また、答えは32bitで桁あふれするので注意。
//感想: 久しぶりの出題で楽しかったです。最初全部メモしてどうにも遅かったので回答をあきらめそうになりましたが純粋な再帰関数を作って呼ばれるパラメーターのダンプをみていたらメモする方法を思いつきました。ただの数え上げでは2時間くらいかかったけど、メモ化したら1秒以下になりました。
let solve gems target =
let gems = List.ofSeq gems in
let target = List.ofSeq target in
let target_rev = target |> List.rev in
let memo = ref Map.empty in