Skip to content

Commit

Permalink
Allow the binary result of file:read_file to be solved
Browse files Browse the repository at this point in the history
  • Loading branch information
Andreas Pauley committed Feb 9, 2013
1 parent 8591a47 commit 1f7b472
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 11 deletions.
2 changes: 2 additions & 0 deletions rebar.config
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,2 @@
%%-*- mode: erlang -*-
{erl_opts, [warnings_as_errors]}.
33 changes: 22 additions & 11 deletions src/sudoku.erl
Original file line number Original file line Diff line number Diff line change
@@ -1,7 +1,9 @@
-module(sudoku). -module(sudoku).


-export([solve_all/1, -export([solve_all/1,
solve_file/1,
solve_file/2, solve_file/2,
solve_binary_string/1,
print_results/1]). print_results/1]).


-export([test/0]). -export([test/0]).
Expand All @@ -16,6 +18,26 @@ solve_all(GridList) ->
SolutionDicts = solve_all_return_dicts(GridList), SolutionDicts = solve_all_return_dicts(GridList),
[to_string(S) || S <- SolutionDicts]. [to_string(S) || S <- SolutionDicts].


solve_file(Filename) ->
solve_file(Filename, "\n").

solve_file(Filename, Seperator) ->
{ok, BinString} = file:read_file(Filename),
Solutions = solve_binary_string_return_dicts(BinString, Seperator),
OutFilename = [filename:basename(Filename, ".txt")
| ".out"],
ok = to_file(OutFilename, Solutions),
Solutions.

solve_binary_string(BinString) ->
SolutionDicts = solve_binary_string_return_dicts(BinString, "\n"),
[to_string(S) || S <- SolutionDicts].

solve_binary_string_return_dicts(BinString, Seperator) ->
PuzzleGridList = string:tokens(binary_to_list(BinString), Seperator),
SolutionDicts = solve_all_return_dicts(PuzzleGridList),
SolutionDicts.

print_results(Filename) -> print_results(Filename) ->
print_results(Filename, "\n"). print_results(Filename, "\n").


Expand Down Expand Up @@ -259,22 +281,11 @@ to_string(Puzzle) ->
lists:flatmap(Fun, lists:flatmap(Fun,
lists:sort(dict:to_list(ValuesDict))). lists:sort(dict:to_list(ValuesDict))).


from_file(Filename, Seperator) ->
{ok, BinData} = file:read_file(Filename),
string:tokens(binary_to_list(BinData), Seperator).

to_file(Filename, Solutions) -> to_file(Filename, Solutions) ->
GridStrings = [to_string(S) ++ "\n" || S <- Solutions], GridStrings = [to_string(S) ++ "\n" || S <- Solutions],
ok = file:write_file(Filename, ok = file:write_file(Filename,
list_to_binary(GridStrings)). list_to_binary(GridStrings)).


solve_file(Filename, Seperator) ->
Solutions = solve_all_return_dicts(from_file(Filename, Seperator)),
OutFilename = [filename:basename(Filename, ".txt")
| ".out"],
ok = to_file(OutFilename, Solutions),
Solutions.

exclude_from(Values, Digit) -> exclude_from(Values, Digit) ->
lists:delete(Digit, Values). lists:delete(Digit, Values).


Expand Down

0 comments on commit 1f7b472

Please sign in to comment.