alexandrknyazev13071995
@alexandrknyazev13071995

Как по порядку перебирать все возможные варианты комбинаций из трех символов?

Суть в чем:
Есть некий хэш-код из трех символов, начальное значение например 000.
Нужно написать функцию которая будет зная только предыдущий хэш создавать следующий, что-то вроде:
предыдущий равен 000 - тогда следующий 001,
следующий 002 и так до 00z,
затем 011, 012, 013 и так далее до 0zz
Как можно написать такую функцию, может уже есть похожие реализации?
  • Вопрос задан
  • 423 просмотра
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
> incHash = (h) => ('00' + (parseInt(h, 36) + 1).toString(36)).slice(-3)
[Function]
> incHash('000')
'001'
> incHash('00z')
'010'
> incHash('12z')
'130'
> incHash('1sz')
'1t0'
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
function pad(num, size) {
    var s = (num+1)+"";
    while (s.length < size) s = "0" + s;
    return s;
}

pad(004, 3);
pad(005, 3)
Ответ написан
begemot_sun
@begemot_sun
Программист в душе.
Erlang:

Code = [ 1,2,3 ].
[{A,B,C} || A <- Code, B <- Code, C <- Code ].


P.S. Ну а вообще конечно я не до конца прочитал.
Но такую функцию тоже создать можно. Достаточно работать в троичной системе :)

P.S.S.

12> F = fun(A) -> integer_to_binary(binary_to_integer(A, 3) + 1, 3) end.
#Fun
13> F(<<"000">>).
<<"1">>
14> F(<<"001">>).
<<"2">>
15> F(<<"002">>).
<<"10">>
16> F(<<"010">>).
<<"11">>
17> F(<<"210">>).
<<"211">>


P.S.S.S.....S: Прочитал окончательно, но думаю смысл понятен :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы