Я делаю скрипт для создания имени пользователя. Это должно быть четыре буквы длиной; Традиционно мы использовали 3 буквы фамилии + 1 имени.
Если он уже использовался, мы вручную подумали об альтернативе.
Так что, если меня зовут Фред Флинстоунс, мы должны попробовать FLIF. Если это не работает; мы перебираем имя: FLIA, FLIB, FLIC ... FLIZ, FLAA, FLAB, FLAC, ... FLZZ, FAAA, FAAB, ...
Самый простой способ - перебрать последние буквы; затем сделайте еще один набор циклов по второй последней букве и выполните цикл по последним буквам; затем набор циклов по третьему последнему, второму последнему, последнему; и четвертый + третий + второй + последний.
Это заставляет многое делать, когда циклы вложены друг в друга + нечитаемы для других людей + много печатать.
Я мог бы использовать счетчик на букву, но это также не кажется элегантным
Я мог бы попробовать с одним счетчиком, а затем использовать mod 26
, чтобы увидеть, сколько букв нужно заменить (но это кажется очень сложным).
Есть ли какие-нибудь элегантные / эффективные способы сделать это?
Бонусные баллы за первую попытку сохранить строку как можно более «логически правильной» (например, оставить последнюю букву F для Фреда или пропустить буквы FLIF; FLNF, FLSF, FLTF, ...).