Ik wil in VisualBasic een programma schijven dat van een gegeven letterreeks (een woord) alle mogelijk anagrammen geeft.
Nu wilde ik hiervoor een n-tallig stelsel maken waarin n het aantal tekens van de reeks is.
Voorbeeld:
Tom:
T=0
o=1
m=2
Dus een 3-tallig stelsel.
Als ik dan in het n-tallig stelsel alle getallen van 0 tot nn achter elkaar zet, en de cijfers vervang door de gegeven tekens heb ik alle mogelijke opeenvolgingen van de tekens. Echter moeten dan wel alle dubbele (zoals 233=omm, dit is geen anagram van Tom) eruit, maar dat is wiskundig niet het meest complexe.
Mijn vraag is een algoritme waarmee ik een niet-10-tallig stelsel kan opbouwen. Ik werk in een programmeertaal dus iteratie en dergelijke zijn geen probleem.
Bij voorbaat dank
TomTom
15-6-2005
Zoiets? (in Delphi):
var i,n: integer;
function base_10_to_base_basis(getal,basis:integer):string;
var s:string;
begin
s:='';
while getal0 do
begin
s:=inttostr(getal mod basis)+s;
getal:=getal div basis
end;
base_10_to_base_basis:=s;
end;
begin
n:=4;
for i:=1 to trunc(power(n,n))-1 do
memo1.lines.add(base_10_to_base_basis(i,n))
end;
hk
16-6-2005
#39339 - Telproblemen - Leerling bovenbouw havo-vwo