\require{AMSmath}
WisFaq - de digitale vraagbaak voor wiskunde en wiskunde onderwijs


Printen

Systematisch anagrammen maken

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
Tom

Tom
Leerling bovenbouw havo-vwo - woensdag 15 juni 2005

Antwoord

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;


donderdag 16 juni 2005

©2001-2024 WisFaq