In [1]:
include("deferred_acceptance.jl")


Out[1]:
my_deferred_acceptance (generic function with 2 methods)

In [2]:
using Matching

In [3]:
function mat2vecs{T<:Integer}(prefs::Matrix{T})
    return [prefs[1:findfirst(prefs[:, j], 0)-1, j] for j in 1:size(prefs, 2)]
end


Out[3]:
mat2vecs (generic function with 1 method)

In [9]:
m_prefs, f_prefs = mat2vecs.(random_prefs(4, 4))


Out[9]:
(Array{Int64,1}[[4,2],[4,3,1],[2,1,3,4],[4,3,2,1]],Array{Int64,1}[[2,4],[3,1,4],[3],[4,1,2]])

In [10]:
my_deferred_acceptance(m_prefs, f_prefs)


Out[10]:
([0,1,2,4],[2,3,0,4])

In [ ]:
function my_deferred_acceptance(m_prefs::Vector{Vector{Int}},
                             f_prefs::Vector{Vector{Int}})
    function prefs_2d(x, y)
        
    end
    
    m_prefs_2d = Array{Int64}(length(f_prefs)+1, length(m_prefs))
    for i in 1:length(m_prefs)
        if length(m_prefs[i]) != length(f_prefs)
            x = vcat(m_prefs[i], 0)
            x = vcat(x, setdiff([i for i in 1:length(f_prefs)], m_prefs[i]))
            m_prefs_2d[:,i] = x
        else
            m_prefs_2d[:,i] = vcat(m_prefs[i], 0)
        end
    end
    f_prefs_2d = Array{Int64}(length(m_prefs)+1, length(f_prefs))
    for i in 1:length(f_prefs)
        if length(f_prefs[i]) != length(m_prefs)
            x = vcat(f_prefs[i], 0)
            x = vcat(x, setdiff([i for i in 1:length(m_prefs)], f_prefs[i]))
            f_prefs_2d[:,i] = x
        else
            f_prefs_2d[:,i] = vcat(f_prefs[i], 0)
        end
    end        
    return my_deferred_acceptance(m_prefs_2d, f_prefs_2d)
end