Skip to content

Instantly share code, notes, and snippets.

@shawa
Created March 20, 2018 20:26
Show Gist options
  • Save shawa/46153859db0216379edaef9ee80a93eb to your computer and use it in GitHub Desktop.
Save shawa/46153859db0216379edaef9ee80a93eb to your computer and use it in GitHub Desktop.
#!/usr/bin/swipl -f -q
:- initialization main.
% _ 1
% |_| 234
% |_| 567
% _ _ _ _ _ _ _ _
% | _| _||_||_ |_ ||_||_|| |
% ||_ _| | _||_| ||_| _||_|
seg_1(2).
seg_1(3).
seg_1(5).
seg_1(6).
seg_1(7).
seg_1(8).
seg_1(9).
seg_1(0).
seg_2(4).
seg_2(5).
seg_2(6).
seg_2(7).
seg_2(8).
seg_2(9).
seg_2(0).
seg_3(2).
seg_3(3).
seg_3(4).
seg_3(5).
seg_3(6).
seg_3(8).
seg_3(9).
seg_4(1).
seg_4(2).
seg_4(3).
seg_4(4).
seg_4(7).
seg_4(8).
seg_4(9).
seg_4(0).
seg_5(2).
seg_5(6).
seg_5(8).
seg_5(0).
seg_6(2).
seg_6(3).
seg_6(5).
seg_6(6).
seg_6(8).
seg_6(9).
seg_6(0).
seg_7(1).
seg_7(3).
seg_7(4).
seg_7(5).
seg_7(6).
seg_7(7).
seg_7(8).
seg_7(9).
seg_7(0).
true(_) :- true.
write_cond(Pred, X, Char) :-
(call(Pred, X) -> write(Char) ; write(' ') ).
draw_gen([], [], _).
draw_gen([Pred|Preds], [Char|Chars], Num) :-
write_cond(Pred, Num, Char),
draw_gen(Preds, Chars, Num).
draw_top([]).
draw_top([X|Xs]) :-
draw_gen([true, seg_1, true], [' ', '_', ' '], X),
draw_top(Xs).
draw_mid([]).
draw_mid([X|Xs]) :-
draw_gen([seg_2, seg_3, seg_4], ['|', '_', '|'], X),
draw_mid(Xs).
draw_bot([]).
draw_bot([X|Xs]) :-
draw_gen([seg_5, seg_6, seg_7], ['|', '_', '|'], X),
draw_bot(Xs).
draw(Xs) :-
draw_top(Xs),
newline,
draw_mid(Xs),
newline,
draw_bot(Xs),
newline.
newline :- write('\n').
main :-
draw([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]),
draw([1, 0, 1]),
draw([0, 7, 7, 3, 4]),
halt.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment