結果

問題 No.3 ビットすごろく
ユーザー gemmaro
提出日時 2020-04-27 08:31:07
言語 Elixir
(1.18.1)
結果
TLE  
実行時間 -
コード長 855 bytes
コンパイル時間 1,229 ms
コンパイル使用メモリ 64,896 KB
実行使用メモリ 69,904 KB
最終ジャッジ日時 2024-12-31 04:49:19
合計ジャッジ時間 178,092 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 5 WA * 1 TLE * 27
権限があれば一括ダウンロードができます

ソースコード

diff #

defmodule Main do
  def main do
    {n, _} =
      IO.read(:line)
      |> Integer.parse()

    n
    |> solve()
    |> IO.puts()
  end

  def solve(n) do
    solve_rec([1], n)
  end

  def solve_rec([h | t], n) do
    c =
      h
      |> Integer.digits(2)
      |> Enum.sum()

    cond do
      h + c == n ->
        ([h | t] |> length) + 1

      true ->
        [
          if(h + c < n && !((h + c) in [h | t]),
            do: solve_rec([h + c | [h | t]], n),
            else: -1
          ),
          if(h - c > 1 && !((h - c) in [h | t]),
            do: solve_rec([h - c | [h | t]], n),
            else: -1
          )
        ]
        |> Enum.filter(&(&1 != -1))
        |> (fn l ->
              cond do
                l |> Enum.empty?() -> -1
                true -> l |> Enum.min()
              end
            end).()
    end
  end
end
0