<div class="notebook"> <div class="nb-cell markdown" name="md1"> # Generate n-digit number w/o 1s and 0s in prolog See https://stackoverflow.com/questions/43352008/generate-n-digit-number-w-o-1s-and-0s-in-prolog </div> <div class="nb-cell program" name="p1"> :- use_module(library(clpfd)). n_digits(N, Ds, Num) :- length(Ds, N), Ds ins 2..9, reverse(Ds, Rs), foldl(pow10, Rs, 0-0, _-Num). pow10(D, Pow0-S0, Pow-S) :- Pow #= Pow0 + 1, S #= D*10^Pow0 + S0. </div> <div class="nb-cell query" name="q1"> n_digits(3, Ds, N). </div> <div class="nb-cell query" name="q2"> n_digits(3, Ds, N), label(Ds). </div> <div class="nb-cell query" name="q5"> time((n_digits(1000, _Ds, N), label(_Ds))). </div> <div class="nb-cell program" name="p2"> n_digits(N, Ds, Num) :- length(Ds, N), maplist(random_between(0'2, 0'9), Ds), number_codes(Num, Ds). </div> <div class="nb-cell query" name="q3"> n_digits(3, Ds, N). </div> <div class="nb-cell query" name="q4"> time(n_digits(1000, _Ds, N)). </div> </div>